Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Q
qualityTesting_adminHome
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
tobacco
qualityTesting_adminHome
Commits
42b0dc8d
提交
42b0dc8d
authored
4月 20, 2023
作者:
Yroc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
'后台部分功能优化'
上级
a8a78a0c
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
301 行增加
和
125 行删除
+301
-125
student.js
src/api/student.js
+10
-0
index.vue
src/components/ExaminationHeader/index.vue
+28
-14
index.vue
src/components/TableHead/index.vue
+84
-4
index.vue
src/views/login/index.vue
+121
-77
index.vue
src/views/student/examination_questions/comment/index.vue
+1
-1
index.vue
src/views/student/examination_questions/detail/index.vue
+43
-15
index.vue
src/views/student/examination_questions/list/index.vue
+3
-3
index.vue
src/views/student/test_results/detail/index.vue
+11
-11
没有找到文件。
src/api/student.js
浏览文件 @
42b0dc8d
...
@@ -147,6 +147,16 @@ export function get_examination_questions_detail(id, params) {
...
@@ -147,6 +147,16 @@ export function get_examination_questions_detail(id, params) {
method
:
'get'
,
method
:
'get'
,
})
})
}
}
//试题得分设置
export
function
get_examination_questions_select
(
id
,
data
)
{
return
request
({
url
:
`/api/examination_question_detail/set_fraction/
${
id
}
`
,
method
:
'post'
,
data
})
}
//试题信息管理详情-图片上传
//试题信息管理详情-图片上传
export
function
upload_examination_question_image
(
data
)
{
export
function
upload_examination_question_image
(
data
)
{
return
request
({
return
request
({
...
...
src/components/ExaminationHeader/index.vue
浏览文件 @
42b0dc8d
...
@@ -8,22 +8,37 @@
...
@@ -8,22 +8,37 @@
<
template
>
<
template
>
<div>
<div>
<div>
<div>
<el-button
type=
"text"
icon=
"el-icon-arrow-left"
size=
"mini"
class=
"back_btn"
@
click=
"back"
>
返回
</el-button>
<el-button
type=
"text"
icon=
"el-icon-arrow-left"
size=
"mini"
class=
"back_btn"
@
click=
"back"
>
返回
</el-button
>
<h2
class=
"title_box"
>
{{
info_data
.
title
}}
</h2>
<h2
class=
"title_box"
>
{{
info_data
.
title
}}
</h2>
<span
v-for=
"(item, index) in info_data.examination_status"
:key=
"index"
>
<span
v-for=
"(item, index) in info_data.examination_status"
:key=
"index"
>
<el-tag
:type=
"item.type"
v-if=
"info_data.status == item.id"
>
{{
item
.
label
}}
</el-tag>
<el-tag
:type=
"item.type"
v-if=
"info_data.status == item.id"
>
{{
item
.
label
}}
</el-tag>
</span>
</span>
</div>
</div>
<div
style=
"margin-top: 15px;"
>
<div
style=
"margin-top: 15px"
>
<div
class=
"person_attribute_box"
v-for=
"(item, index) in data_keys"
:key=
"index"
<div
v-show=
"info_data[item.key] != undefined"
>
class=
"person_attribute_box"
v-for=
"(item, index) in data_keys"
:key=
"index"
v-show=
"info_data[item.key] != undefined"
>
<span
v-if=
"item.key == 'duration'"
>
<span
v-if=
"item.key == 'duration'"
>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
<span>
{{
info_data
[
item
.
key
]
}}
分钟
</span>
<span>
{{
info_data
[
item
.
key
]
}}
分钟
</span>
</span>
</span>
<span
v-else-if=
"item.key == 'answer_duration'"
>
<span
v-else-if=
"item.key == 'answer_duration'"
>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
<span
class=
"label"
>
{{
seconds_to_minutes
(
info_data
[
item
.
key
])
}}
</span>
<span
class=
"label"
>
{{
seconds_to_minutes
(
info_data
[
item
.
key
])
}}
</span>
</span>
</span>
<span
v-else
>
<span
v-else
>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
<span
class=
"label"
>
{{
item
.
label
}}
</span>
...
@@ -48,7 +63,7 @@ export default {
...
@@ -48,7 +63,7 @@ export default {
{
label
:
'成绩'
,
key
:
'score'
},
{
label
:
'成绩'
,
key
:
'score'
},
{
label
:
'考试时长'
,
key
:
'duration'
},
{
label
:
'考试时长'
,
key
:
'duration'
},
{
label
:
'考试时长'
,
key
:
'answer_duration'
},
{
label
:
'考试时长'
,
key
:
'answer_duration'
},
{
label
:
'本套题满分'
,
key
:
'full_marks'
},
],
],
strong_keys
:
[
'user_name'
,
'score'
],
strong_keys
:
[
'user_name'
,
'score'
],
};
};
...
@@ -60,7 +75,7 @@ export default {
...
@@ -60,7 +75,7 @@ export default {
created
()
{
created
()
{
this
.
info_data
=
{
...
this
.
examination_questions
};
this
.
info_data
=
{
...
this
.
examination_questions
};
},
},
mounted
()
{
},
mounted
()
{},
methods
:
{
methods
:
{
back
()
{
back
()
{
...
@@ -68,21 +83,20 @@ export default {
...
@@ -68,21 +83,20 @@ export default {
},
},
seconds_to_minutes
(
str
)
{
seconds_to_minutes
(
str
)
{
if
(
str
)
{
if
(
str
)
{
return
secondsToMinutes
(
str
)
return
secondsToMinutes
(
str
)
;
}
else
{
}
else
{
return
'暂无'
return
'暂无'
;
}
}
},
},
}
},
}
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.back_btn
{
.back_btn
{
/* font-size: 16px; */
/* font-size: 16px; */
color
:
#303133
;
color
:
#303133
;
border-right
:
1px
solid
#
DCDFE
6
;
border-right
:
1px
solid
#
dcdfe
6
;
padding
:
3px
10px
3px
0
;
padding
:
3px
10px
3px
0
;
border-radius
:
none
;
border-radius
:
none
;
}
}
...
...
src/components/TableHead/index.vue
浏览文件 @
42b0dc8d
...
@@ -34,15 +34,85 @@
...
@@ -34,15 +34,85 @@
<span
<span
v-for=
"(item, index) in head_data.right_buttons"
v-for=
"(item, index) in head_data.right_buttons"
:key=
"index"
:key=
"index"
style=
"margin: 0
8
px"
style=
"margin: 0
5
px"
>
>
<el-button
<el-button
v-if=
"upload_btns.indexOf(item.event) == -1"
v-if=
"
upload_btns.indexOf(item.event) == -1 &&
item.event !== 'template_download' &&
item.event !== 'select_score'
"
type=
"primary"
type=
"primary"
:icon=
"item.icon"
:icon=
"item.icon"
@
click=
"btnClick(item.event)"
@
click=
"btnClick(item.event)"
>
{{
item
.
text
}}
</el-button
>
{{
item
.
text
}}
</el-button
>
>
<el-popover
v-else-if=
"item.event == 'template_download'"
placement=
"bottom"
width=
"400"
trigger=
"hover"
>
<el-table
:data=
"examination_questions_data"
>
<el-table-column
prop=
"name"
label=
"题目数量"
>
</el-table-column>
<el-table-column
align=
"center"
label=
"操作"
width=
"100"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"primary"
@
click=
"btnClick('template_download', scope.row.data)"
>
下载
</el-button
>
</
template
>
</el-table-column>
</el-table>
<el-button
type=
"primary"
slot=
"reference"
:icon=
"item.icon"
>
{{
item.text
}}
</el-button>
</el-popover>
<el-popover
v-else-if=
"item.event == 'select_score'"
placement=
"bottom"
width=
"300"
trigger=
"hover"
>
<!-- <el-table height="400" :data="examination_questions_select_data">
<el-table-column
align="center"
prop="name"
label="每道题得分选择"
>
</el-table-column>
<el-table-column align="center" label="操作" width="100">
<template slot-scope="scope">
>
</template>
</el-table-column>
</el-table> -->
<el-row>
<el-col
:span=
"16"
>
<el-input
v-model=
"examination_questions_select_data"
placeholder=
"请输每道题新的得分"
></el-input
></el-col>
<el-col
:span=
"8"
></el-col
><el-button
style=
"margin-left: 20px"
type=
"primary"
@
click=
"
btnClick('select_score', examination_questions_select_data)
"
>
确认
</el-button
>
</el-row>
<el-button
type=
"primary"
slot=
"reference"
:icon=
"item.icon"
>
{{
item.text
}}
</el-button>
</el-popover>
<el-upload
<el-upload
v-else
v-else
id=
"upload_moudel"
id=
"upload_moudel"
...
@@ -61,6 +131,7 @@
...
@@ -61,6 +131,7 @@
</el-upload>
</el-upload>
</span>
</span>
</el-col>
</el-col>
<!-- <el-col :span="2"
<!-- <el-col :span="2"
><span v-if="head_data.ensembel_btn"
><span v-if="head_data.ensembel_btn"
><el-badge :value="head_data.number_value">
><el-badge :value="head_data.number_value">
...
@@ -88,6 +159,13 @@ export default {
...
@@ -88,6 +159,13 @@ export default {
'examination_questions_upload'
,
'examination_questions_upload'
,
'batch_reservation'
,
'batch_reservation'
,
],
],
examination_questions_data
:
[
{
name
:
'100道题'
,
data
:
'setThemeCard100.docx'
},
{
name
:
'50道题'
,
data
:
'setThemeCard50.docx'
},
{
name
:
'25道题'
,
data
:
'setThemeCard25.docx'
},
{
name
:
'20道题'
,
data
:
'setThemeCard20.docx'
},
],
examination_questions_select_data
:
null
,
btn_code
:
''
,
btn_code
:
''
,
};
};
},
},
...
@@ -123,8 +201,10 @@ export default {
...
@@ -123,8 +201,10 @@ export default {
},
},
//右侧按钮事件
//右侧按钮事件
btnClick
(
val
)
{
btnClick
(
val
,
data
)
{
this
.
$emit
(
'btnClick'
,
val
);
// console.log(val);
// console.log(data);
this
.
$emit
(
'btnClick'
,
{
val
,
data
});
},
},
uploadCode
(
val
)
{
uploadCode
(
val
)
{
this
.
btn_code
=
val
;
this
.
btn_code
=
val
;
...
...
src/views/login/index.vue
浏览文件 @
42b0dc8d
...
@@ -8,46 +8,95 @@
...
@@ -8,46 +8,95 @@
<div
class=
"login-container"
>
<div
class=
"login-container"
>
<div
class=
"mask_container_background"
>
<div
class=
"mask_container_background"
>
<div
class=
"content_box"
>
<div
class=
"content_box"
>
<img
src=
"/image/login/Vector.png"
alt=
""
class=
"content_box_logo"
>
<img
src=
"/image/login/Vector.png"
alt=
""
class=
"content_box_logo"
/
>
</div>
</div>
</div>
</div>
<div
class=
"mask_container"
>
<div
class=
"mask_container"
>
<img
src=
"/image/log.svg"
alt=
""
class=
"object_logo"
>
<img
src=
"/image/log.svg"
alt=
""
class=
"object_logo"
/
>
<div
class=
"content_box"
>
<div
class=
"content_box"
>
<img
src=
"/image/login/Vector.png"
alt=
""
class=
"content_box_logo"
style=
"opacity: 0;"
>
<img
src=
"/image/login/Vector.png"
alt=
""
class=
"content_box_logo"
style=
"opacity: 0"
/>
<div
class=
"content_body"
>
<div
class=
"content_body"
>
<div
class=
"content_body_left"
>
<div
class=
"content_body_left"
>
<h1>
你好,
</h1>
<h1>
你好,
</h1>
<h1>
欢迎登录国家烟草质检中心
</h1>
<h1>
欢迎登录国家烟草质检中心
</h1>
<div
class=
"translated_text"
>
National Tobacco Quality Inspection Center
</div>
<div
class=
"translated_text"
>
National Tobacco Quality Inspection Center
</div>
</div>
</div>
<div
class=
"content_body_right"
>
<div
class=
"content_body_right"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
<el-form
label-position=
"left"
>
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
label-position=
"left"
>
<div
class=
"title-container"
>
<div
class=
"title-container"
>
<h3
class=
"title"
>
账号登录
</h3>
<h3
class=
"title"
>
账号登录
</h3>
</div>
</div>
<el-form-item
prop=
"username"
>
<el-form-item
prop=
"username"
>
<el-input
ref=
"username"
v-model=
"loginForm.name"
placeholder=
"Username"
name=
"username"
type=
"text"
<el-input
tabindex=
"1"
autocomplete=
"on"
>
ref=
"username"
<i
slot=
"prefix"
class=
"el-input__icon el-icon-user-solid"
></i>
v-model=
"loginForm.name"
placeholder=
"Username"
name=
"username"
type=
"text"
tabindex=
"1"
autocomplete=
"on"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-user-solid"
></i>
</el-input>
</el-input>
</el-form-item>
</el-form-item>
<el-tooltip
v-model=
"capsTooltip"
content=
"大写锁定打开"
placement=
"right"
manual
>
<el-tooltip
v-model=
"capsTooltip"
content=
"大写锁定打开"
placement=
"right"
manual
>
<el-form-item
prop=
"password"
>
<el-form-item
prop=
"password"
>
<el-input
:key=
"passwordType"
ref=
"password"
v-model=
"loginForm.password"
:type=
"passwordType"
<el-input
placeholder=
"Password"
name=
"password"
tabindex=
"2"
autocomplete=
"on"
@
keyup
.
native=
"checkCapslock"
:key=
"passwordType"
@
blur=
"capsTooltip = false"
@
keyup
.
enter
.
native=
"handleLogin"
>
ref=
"password"
v-model=
"loginForm.password"
:type=
"passwordType"
placeholder=
"Password"
name=
"password"
tabindex=
"2"
autocomplete=
"on"
@
keyup
.
native=
"checkCapslock"
@
blur=
"capsTooltip = false"
@
keyup
.
enter
.
native=
"handleLogin"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-lock"
></i>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-lock"
></i>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-view"
@
click=
"showPwd"
></i>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-view"
@
click=
"showPwd"
></i>
</el-input>
</el-input>
</el-form-item>
</el-form-item>
</el-tooltip>
</el-tooltip>
<el-button
:loading=
"loading"
type=
"primary"
style=
"width:100%;margin-bottom:30px;"
<el-button
@
click
.
native
.
prevent=
"handleLogin"
>
登录
</el-button>
:loading=
"loading"
type=
"primary"
style=
"width: 100%; margin-bottom: 30px"
@
click
.
native
.
prevent=
"handleLogin"
>
登录
</el-button
>
</el-form>
</el-form>
<div
style=
"text-align: center;"
>
<div
style=
"text-align: center"
>
<el-button
size=
"mini"
@
click=
"retrievePassword"
>
忘记密码
</el-button>
<el-button
size=
"mini"
@
click=
"retrievePassword"
>
忘记密码
</el-button
>
</div>
</div>
<!--
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
<!--
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
class=
"login-form"
autocomplete=
"on"
...
@@ -100,25 +149,25 @@
...
@@ -100,25 +149,25 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
validUsername
}
from
'@/utils/validate'
import
{
validUsername
}
from
'@/utils/validate'
;
export
default
{
export
default
{
name
:
'Login'
,
name
:
'Login'
,
components
:
{},
components
:
{},
data
()
{
data
()
{
const
validateUsername
=
(
rule
,
value
,
callback
)
=>
{
const
validateUsername
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
validUsername
(
value
))
{
if
(
!
validUsername
(
value
))
{
callback
(
new
Error
(
'请输入正确的用户名'
))
callback
(
new
Error
(
'请输入正确的用户名'
))
;
}
else
{
}
else
{
callback
()
callback
();
}
}
}
};
const
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
const
validatePassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
value
.
length
<
6
)
{
if
(
value
.
length
<
6
)
{
callback
(
new
Error
(
'密码不能少于6位'
))
callback
(
new
Error
(
'密码不能少于6位'
))
;
}
else
{
}
else
{
callback
()
callback
();
}
}
}
};
return
{
return
{
loginForm
:
{
loginForm
:
{
// username: 'admin',
// username: 'admin',
...
@@ -130,44 +179,45 @@ export default {
...
@@ -130,44 +179,45 @@ export default {
password
:
''
,
password
:
''
,
grant_type
:
'password'
,
grant_type
:
'password'
,
client_id
:
2
,
client_id
:
2
,
client_secret
:
'yTahrwHlHby7JhKGHXjJ6mvqnSVZn2JOTnVNZK4Q'
client_secret
:
'yTahrwHlHby7JhKGHXjJ6mvqnSVZn2JOTnVNZK4Q'
,
},
},
loginRules
:
{
loginRules
:
{
name
:
[{
required
:
true
,
trigger
:
'blur'
,
validator
:
validateUsername
}],
name
:
[
password
:
[{
required
:
true
,
trigger
:
'blur'
,
validator
:
validatePassword
}]
{
required
:
true
,
trigger
:
'blur'
,
validator
:
validateUsername
},
],
password
:
[
{
required
:
true
,
trigger
:
'blur'
,
validator
:
validatePassword
},
],
},
},
passwordType
:
'password'
,
passwordType
:
'password'
,
capsTooltip
:
false
,
capsTooltip
:
false
,
loading
:
false
,
loading
:
false
,
showDialog
:
false
,
showDialog
:
false
,
redirect
:
undefined
,
redirect
:
undefined
,
otherQuery
:
{}
otherQuery
:
{}
,
}
}
;
},
},
watch
:
{
watch
:
{
$route
:
{
$route
:
{
handler
:
function
(
route
)
{
handler
:
function
(
route
)
{
const
query
=
route
.
query
const
query
=
route
.
query
;
if
(
query
)
{
if
(
query
)
{
this
.
redirect
=
query
.
redirect
this
.
redirect
=
query
.
redirect
;
this
.
otherQuery
=
this
.
getOtherQuery
(
query
)
this
.
otherQuery
=
this
.
getOtherQuery
(
query
)
;
}
}
},
},
immediate
:
true
immediate
:
true
,
}
}
,
},
},
created
()
{
created
()
{
// window.addEventListener('storage', this.afterQRScan)
// window.addEventListener('storage', this.afterQRScan)
},
},
mounted
()
{
mounted
()
{
if
(
this
.
loginForm
.
username
===
''
)
{
if
(
this
.
loginForm
.
username
===
''
)
{
this
.
$refs
.
username
.
focus
()
this
.
$refs
.
username
.
focus
()
;
}
else
if
(
this
.
loginForm
.
password
===
''
)
{
}
else
if
(
this
.
loginForm
.
password
===
''
)
{
this
.
$refs
.
password
.
focus
()
this
.
$refs
.
password
.
focus
()
;
}
}
},
},
destroyed
()
{
destroyed
()
{
...
@@ -175,50 +225,55 @@ export default {
...
@@ -175,50 +225,55 @@ export default {
},
},
methods
:
{
methods
:
{
checkCapslock
(
e
)
{
checkCapslock
(
e
)
{
const
{
key
}
=
e
const
{
key
}
=
e
;
this
.
capsTooltip
=
key
&&
key
.
length
===
1
&&
(
key
>=
'A'
&&
key
<=
'Z'
)
this
.
capsTooltip
=
key
&&
key
.
length
===
1
&&
key
>=
'A'
&&
key
<=
'Z'
;
},
},
showPwd
()
{
showPwd
()
{
if
(
this
.
passwordType
===
'password'
)
{
if
(
this
.
passwordType
===
'password'
)
{
this
.
passwordType
=
''
this
.
passwordType
=
''
;
}
else
{
}
else
{
this
.
passwordType
=
'password'
this
.
passwordType
=
'password'
;
}
}
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
this
.
$refs
.
password
.
focus
()
this
.
$refs
.
password
.
focus
()
;
})
})
;
},
},
handleLogin
()
{
handleLogin
()
{
this
.
$refs
.
loginForm
.
validate
(
valid
=>
{
this
.
$refs
.
loginForm
.
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
loading
=
true
this
.
loading
=
true
;
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
loginForm
));
let
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
loginForm
));
let
params
=
this
.
$removeProperty
(
data
);
let
params
=
this
.
$removeProperty
(
data
);
params
.
password
=
this
.
$Aesencrypt
(
params
.
password
);
params
.
password
=
this
.
$Aesencrypt
(
params
.
password
);
console
.
log
(
'登录数据加密'
);
// console.log('登录数据加密');
console
.
log
(
params
);
// console.log(params);
this
.
$store
.
dispatch
(
'user/login'
,
params
).
then
(()
=>
{
this
.
$store
this
.
$router
.
push
({
path
:
this
.
redirect
||
'/'
,
query
:
this
.
otherQuery
})
.
dispatch
(
'user/login'
,
params
)
.
then
(()
=>
{
this
.
$router
.
push
({
path
:
this
.
redirect
||
'/'
,
query
:
this
.
otherQuery
,
});
/* this.$router.push('/') */
/* this.$router.push('/') */
this
.
loading
=
false
this
.
loading
=
false
;
})
})
.
catch
(()
=>
{
.
catch
(()
=>
{
this
.
loading
=
false
this
.
loading
=
false
;
})
})
;
}
else
{
}
else
{
console
.
log
(
'error submit!!'
)
console
.
log
(
'error submit!!'
)
;
return
false
return
false
;
}
}
})
})
;
},
},
getOtherQuery
(
query
)
{
getOtherQuery
(
query
)
{
return
Object
.
keys
(
query
).
reduce
((
acc
,
cur
)
=>
{
return
Object
.
keys
(
query
).
reduce
((
acc
,
cur
)
=>
{
if
(
cur
!==
'redirect'
)
{
if
(
cur
!==
'redirect'
)
{
acc
[
cur
]
=
query
[
cur
]
acc
[
cur
]
=
query
[
cur
]
;
}
}
return
acc
return
acc
;
},
{})
},
{})
;
},
},
// afterQRScan() {
// afterQRScan() {
// if (e.key === 'x-admin-oauth-code') {
// if (e.key === 'x-admin-oauth-code') {
...
@@ -243,8 +298,8 @@ export default {
...
@@ -243,8 +298,8 @@ export default {
retrievePassword
()
{
retrievePassword
()
{
this
.
$router
.
push
(
'/retrieve'
);
this
.
$router
.
push
(
'/retrieve'
);
},
},
}
}
,
}
}
;
</
script
>
</
script
>
<!-- <style lang="scss">
<!-- <style lang="scss">
...
@@ -374,24 +429,13 @@ $light_gray: #eee;
...
@@ -374,24 +429,13 @@ $light_gray: #eee;
}
}
}
}
.mask_container_background
{
.mask_container_background
{
position
:
absolute
;
position
:
absolute
;
left
:
0
;
left
:
0
;
right
:
0
;
right
:
0
;
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
background
:
linear-gradient
(
to
bottom
,
#006851
,
#00
A05D
);
background
:
linear-gradient
(
to
bottom
,
#006851
,
#00
a05d
);
opacity
:
0
.7
;
opacity
:
0
.7
;
}
}
...
@@ -451,7 +495,7 @@ $light_gray: #eee;
...
@@ -451,7 +495,7 @@ $light_gray: #eee;
.translated_text
{
.translated_text
{
width
:
80%
;
width
:
80%
;
border
:
4px
solid
;
border
:
4px
solid
;
border-image
:
linear-gradient
(
to
right
,
#
E6A25D
,
#3d8362
)
4
;
border-image
:
linear-gradient
(
to
right
,
#
e6a25d
,
#3d8362
)
4
;
border-left
:
none
;
border-left
:
none
;
border-right
:
none
;
border-right
:
none
;
border-top
:
none
;
border-top
:
none
;
...
...
src/views/student/examination_questions/comment/index.vue
浏览文件 @
42b0dc8d
...
@@ -707,7 +707,7 @@ export default {
...
@@ -707,7 +707,7 @@ export default {
},
},
};
};
},
},
//错误
等
级
//错误
上下一
级
changeErrorLevel
(
datas
)
{
changeErrorLevel
(
datas
)
{
if
(
!
datas
)
return
false
;
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
keys
=
Object
.
keys
(
datas
);
...
...
src/views/student/examination_questions/detail/index.vue
浏览文件 @
42b0dc8d
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* @Author: AnthonyD
* @Author: AnthonyD
* @Date: 2023-03-28 10:34:24
* @Date: 2023-03-28 10:34:24
* @Last Modified by: AnthonyD
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-04-
11 19:40:37
* @Last Modified time: 2023-04-
20 15:34:11
*/
*/
</
script
>
</
script
>
<
template
>
<
template
>
...
@@ -72,6 +72,8 @@
...
@@ -72,6 +72,8 @@
</el-popover>
</el-popover>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"fraction"
align=
"center"
label=
"每题得分"
>
</el-table-column>
<el-table-column
prop=
"quote"
label=
"是否引用"
align=
"center"
>
<el-table-column
prop=
"quote"
label=
"是否引用"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
examination_question_detail_id
?
'是'
:
'否'
}}
{{
scope
.
row
.
examination_question_detail_id
?
'是'
:
'否'
}}
...
@@ -178,6 +180,7 @@ import {
...
@@ -178,6 +180,7 @@ import {
get_image_path
,
get_image_path
,
get_examination_questions_all
,
get_examination_questions_all
,
create_answer_card
,
create_answer_card
,
get_examination_questions_select
,
}
from
'@/api/student'
;
}
from
'@/api/student'
;
import
{
exportText
}
from
'@/utils/tool'
;
import
{
exportText
}
from
'@/utils/tool'
;
const
standard_template
=
{
const
standard_template
=
{
...
@@ -201,6 +204,11 @@ export default {
...
@@ -201,6 +204,11 @@ export default {
is_search_show
:
false
,
is_search_show
:
false
,
search_placeholder
:
'学员姓名/手机号'
,
search_placeholder
:
'学员姓名/手机号'
,
right_buttons
:
[
right_buttons
:
[
{
text
:
'每题得分'
,
icon
:
'el-icon-magic-stick'
,
event
:
'select_score'
,
},
{
{
text
:
'模板下载'
,
text
:
'模板下载'
,
icon
:
'el-icon-download'
,
icon
:
'el-icon-download'
,
...
@@ -212,7 +220,7 @@ export default {
...
@@ -212,7 +220,7 @@ export default {
event
:
'examination_questions_upload'
,
event
:
'examination_questions_upload'
,
},
},
{
{
text
:
'
试题
下载'
,
text
:
'
答案
下载'
,
icon
:
'el-icon-download'
,
icon
:
'el-icon-download'
,
event
:
'examination_download'
,
event
:
'examination_download'
,
},
},
...
@@ -295,13 +303,14 @@ export default {
...
@@ -295,13 +303,14 @@ export default {
this
.
getExaminationQuestionsDetail
();
this
.
getExaminationQuestionsDetail
();
},
},
btnClick
(
val
)
{
btnClick
(
val
)
{
console
.
log
(
'右侧按钮'
);
//
console.log('右侧按钮');
console
.
log
(
val
);
//
console.log(val);
if
(
val
==
'add'
)
this
.
addInformation
();
if
(
val
==
'add'
)
this
.
addInformation
();
if
(
val
==
'template_download'
)
this
.
templateDownload
(
);
if
(
val
.
val
==
'template_download'
)
this
.
templateDownload
(
val
.
data
);
/* pictureBatchUpload */
/* pictureBatchUpload */
if
(
val
==
'batch_upload'
)
this
.
pictureBatchUpload
();
if
(
val
==
'batch_upload'
)
this
.
pictureBatchUpload
();
if
(
val
==
'examination_download'
)
this
.
createAnswerCard
();
if
(
val
==
'examination_download'
)
this
.
createAnswerCard
();
if
(
val
.
val
==
'select_score'
)
this
.
selectScoreData
(
val
.
data
);
},
},
init
()
{
init
()
{
...
@@ -381,9 +390,14 @@ export default {
...
@@ -381,9 +390,14 @@ export default {
this
.
student_brief_introduction
.
begin_date
=
res
.
begin_date
;
this
.
student_brief_introduction
.
begin_date
=
res
.
begin_date
;
this
.
student_brief_introduction
.
test_number
=
this
.
student_brief_introduction
.
test_number
=
res
.
examination_question_detail
.
length
;
res
.
examination_question_detail
.
length
;
this
.
student_brief_introduction
.
full_marks
=
res
.
examination_question_detail
.
length
*
res
.
examination_question_detail
[
0
].
fraction
;
// console.log(this.student_brief_introduction.full_marks);
this
.
is_loading
=
false
;
this
.
is_loading
=
false
;
});
});
},
},
//获取方位
//获取方位
getTobaccoProvince
()
{
getTobaccoProvince
()
{
get_tobacco_province
().
then
((
res
)
=>
{
get_tobacco_province
().
then
((
res
)
=>
{
...
@@ -532,16 +546,17 @@ export default {
...
@@ -532,16 +546,17 @@ export default {
});
});
},
},
//试题模版下载
//试题模版下载
templateDownload
()
{
templateDownload
(
path
)
{
let
url
=
`
${
this
.
IP
}
/php_sours/tmpDoc/setThemeCard.docx`
;
// let url = `${this.IP}/php_sours/tmpDoc/setThemeCard.docx`;
let
url
=
`
${
this
.
IP
}
/php_sours/tmpDoc/
${
path
}
`
;
exportText
(
url
,
'模板.docx'
);
exportText
(
url
,
'模板.docx'
);
},
},
//试题下载
//试题下载
createAnswerCard
()
{
createAnswerCard
()
{
let
id
=
this
.
examination_questions_id
;
let
id
=
this
.
examination_questions_id
;
create_answer_card
(
id
).
then
((
res
)
=>
{
create_answer_card
(
id
).
then
((
res
)
=>
{
console
.
log
(
'下载答题卡回调'
);
//
console.log('下载答题卡回调');
console
.
log
(
res
);
//
console.log(res);
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
let
s
=
res
.
message
.
split
(
'='
);
let
s
=
res
.
message
.
split
(
'='
);
let
name
=
s
[
s
.
length
-
1
];
let
name
=
s
[
s
.
length
-
1
];
...
@@ -550,19 +565,32 @@ export default {
...
@@ -550,19 +565,32 @@ export default {
}
}
});
});
},
},
//得分选择
selectScoreData
(
val
)
{
let
amendData
=
this
.
$handleParams
({
fraction
:
val
});
let
id
=
this
.
examination_questions_id
;
console
.
log
(
amendData
);
console
.
log
(
id
);
get_examination_questions_select
(
id
,
amendData
).
then
((
res
)
=>
{
if
(
res
.
code
==
200
)
{
this
.
$message
.
success
(
res
.
message
);
this
.
getExaminationQuestionsDetail
();
}
});
},
//试题上传
//试题上传
uploadTestQuestions
(
val
)
{
uploadTestQuestions
(
val
)
{
this
.
is_loading
=
true
;
this
.
is_loading
=
true
;
console
.
log
(
'试题上传'
);
//
console.log('试题上传');
console
.
log
(
val
);
//
console.log(val);
const
formData
=
new
FormData
();
const
formData
=
new
FormData
();
formData
.
append
(
'file'
,
val
.
file
);
formData
.
append
(
'file'
,
val
.
file
);
let
id
=
this
.
examination_questions_id
;
let
id
=
this
.
examination_questions_id
;
examination_question_detail_upload
(
id
,
formData
)
examination_question_detail_upload
(
id
,
formData
)
.
then
((
res
)
=>
{
.
then
((
res
)
=>
{
console
.
log
(
'试题上传'
);
//
console.log('试题上传');
console
.
log
(
res
);
//
console.log(res);
if
(
res
.
code
==
200
)
{
if
(
res
.
code
==
200
)
{
this
.
is_loading
=
false
;
this
.
is_loading
=
false
;
this
.
$message
.
success
(
res
.
message
);
this
.
$message
.
success
(
res
.
message
);
...
@@ -584,8 +612,8 @@ export default {
...
@@ -584,8 +612,8 @@ export default {
},
},
//图片提交
//图片提交
subMitPictureList
()
{
subMitPictureList
()
{
console
.
log
(
'当前文件列表'
);
//
console.log('当前文件列表');
console
.
log
(
this
.
picture_file_list
);
//
console.log(this.picture_file_list);
let
formData
=
new
FormData
();
let
formData
=
new
FormData
();
this
.
picture_file_list
.
forEach
((
element
)
=>
{
this
.
picture_file_list
.
forEach
((
element
)
=>
{
formData
.
append
(
'image[]'
,
element
.
raw
);
formData
.
append
(
'image[]'
,
element
.
raw
);
...
...
src/views/student/examination_questions/list/index.vue
浏览文件 @
42b0dc8d
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* @Author: AnthonyD
* @Author: AnthonyD
* @Date: 2023-04-10 18:06:52
* @Date: 2023-04-10 18:06:52
* @Last Modified by: AnthonyD
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-04-1
8 11:45:11
* @Last Modified time: 2023-04-1
9 15:24:58
*/
*/
</
script
>
</
script
>
<
template
>
<
template
>
...
@@ -49,7 +49,7 @@
...
@@ -49,7 +49,7 @@
<el-table-column
prop=
"id"
label=
"编号"
width=
"50"
>
<el-table-column
prop=
"id"
label=
"编号"
width=
"50"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"title"
label=
"考试标题"
>
<el-table-column
prop=
"title"
label=
"考试标题"
width=
"220"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-popover
trigger=
"hover"
placement=
"top"
>
<el-popover
trigger=
"hover"
placement=
"top"
>
<p>
{{
scope
.
row
.
title
}}
</p>
<p>
{{
scope
.
row
.
title
}}
</p>
...
@@ -128,7 +128,7 @@
...
@@ -128,7 +128,7 @@
</div>
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
width=
"2
6
0"
>
<el-table-column
label=
"操作"
width=
"2
1
0"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
<el-button
size=
"mini"
size=
"mini"
...
...
src/views/student/test_results/detail/index.vue
浏览文件 @
42b0dc8d
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* @Author: AnthonyD
* @Author: AnthonyD
* @Date: 2023-03-29 17:06:03
* @Date: 2023-03-29 17:06:03
* @Last Modified by: AnthonyD
* @Last Modified by: AnthonyD
* @Last Modified time: 2023-04-1
7 10:39:36
* @Last Modified time: 2023-04-1
9 10:34:19
*/
*/
</
script
>
</
script
>
<
template
>
<
template
>
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
</el-card>
</el-card>
<el-card
class=
"box-card"
>
<el-card
class=
"box-card"
>
<el-row>
<el-row>
<!--
错误方位/区域
-->
<!--
南北方正确/错误率
-->
<el-col
:span=
"8"
style=
"margin-bottom: 15px"
v-if=
"area_score_list"
>
<el-col
:span=
"8"
style=
"margin-bottom: 15px"
v-if=
"area_score_list"
>
<div
class=
"centenr_container"
>
<div
class=
"centenr_container"
>
<AnalyseModule
:module_data=
"area_score_list"
>
</AnalyseModule>
<AnalyseModule
:module_data=
"area_score_list"
>
</AnalyseModule>
...
@@ -42,7 +42,7 @@
...
@@ -42,7 +42,7 @@
<AnalyseModule
:module_data=
"wrong_group_list"
>
</AnalyseModule>
<AnalyseModule
:module_data=
"wrong_group_list"
>
</AnalyseModule>
</div>
</div>
</el-col>
</el-col>
<!-- 错误
等
组 -->
<!-- 错误
正副
组 -->
<el-col
<el-col
:span=
"8"
:span=
"8"
style=
"margin-bottom: 15px"
style=
"margin-bottom: 15px"
...
@@ -147,7 +147,7 @@ export default {
...
@@ -147,7 +147,7 @@ export default {
test_text
:
test_text
:
'针对你在本次烟草知识考试中的表现,我认为你已经做得非常出色。你的答案准确地回答了考试中的问题,而且展现出了对烟草知识的全面了解。'
,
'针对你在本次烟草知识考试中的表现,我认为你已经做得非常出色。你的答案准确地回答了考试中的问题,而且展现出了对烟草知识的全面了解。'
,
//
区域区域数据
//
南北方正确/错误率
area_score_list
:
null
,
area_score_list
:
null
,
//错误部位
//错误部位
wrong_position_list
:
null
,
wrong_position_list
:
null
,
...
@@ -157,7 +157,7 @@ export default {
...
@@ -157,7 +157,7 @@ export default {
error_level_list
:
null
,
error_level_list
:
null
,
//错误组别
//错误组别
wrong_group_list
:
null
,
wrong_group_list
:
null
,
//错误
等
组
//错误
正副
组
wrong_iso_groups_list
:
null
,
wrong_iso_groups_list
:
null
,
///眼光稳定性
///眼光稳定性
eye_stability_list
:
null
,
eye_stability_list
:
null
,
...
@@ -214,7 +214,7 @@ export default {
...
@@ -214,7 +214,7 @@ export default {
//表格列表
//表格列表
this
.
questions_list
=
new_arr
;
this
.
questions_list
=
new_arr
;
//
烟草区域
//
南北方正确/错误率
this
.
area_score_list
=
this
.
changeAreaScore
(
this
.
area_score_list
=
this
.
changeAreaScore
(
res
.
statistical_results
.
AreaScore
res
.
statistical_results
.
AreaScore
);
);
...
@@ -234,7 +234,7 @@ export default {
...
@@ -234,7 +234,7 @@ export default {
this
.
wrong_group_list
=
this
.
changeWrongGroup
(
this
.
wrong_group_list
=
this
.
changeWrongGroup
(
res
.
statistical_results
.
WrongGroup
res
.
statistical_results
.
WrongGroup
);
);
//错误
等
组
//错误
正副
组
this
.
wrong_iso_groups_list
=
this
.
changeWrongIsoGroup
(
this
.
wrong_iso_groups_list
=
this
.
changeWrongIsoGroup
(
res
.
statistical_results
.
WrongIsogroup
res
.
statistical_results
.
WrongIsogroup
);
);
...
@@ -247,7 +247,7 @@ export default {
...
@@ -247,7 +247,7 @@ export default {
console
.
log
(
this
.
eye_stability_list
);
console
.
log
(
this
.
eye_stability_list
);
});
});
},
},
//
区域得分
//
南北方正确/错误率
changeAreaScore
(
datas
)
{
changeAreaScore
(
datas
)
{
if
(
!
datas
)
return
false
;
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
keys
=
Object
.
keys
(
datas
);
...
@@ -260,7 +260,7 @@ export default {
...
@@ -260,7 +260,7 @@ export default {
type
:
'bar'
,
type
:
'bar'
,
chart_id
:
'bar_chart1'
,
chart_id
:
'bar_chart1'
,
color
:
'#E6A23C'
,
color
:
'#E6A23C'
,
title
:
'
突出区域的烟草识别
'
,
title
:
'
南北方正确/错误率
'
,
labers
,
labers
,
keys
,
keys
,
raw_data
:
datas
,
raw_data
:
datas
,
...
@@ -380,7 +380,7 @@ export default {
...
@@ -380,7 +380,7 @@ export default {
list
,
list
,
};
};
},
},
//错误
等
组
//错误
正副
组
changeWrongIsoGroup
(
datas
)
{
changeWrongIsoGroup
(
datas
)
{
if
(
!
datas
)
return
false
;
if
(
!
datas
)
return
false
;
let
keys
=
Object
.
keys
(
datas
);
let
keys
=
Object
.
keys
(
datas
);
...
@@ -403,7 +403,7 @@ export default {
...
@@ -403,7 +403,7 @@ export default {
type
:
'table'
,
type
:
'table'
,
chart_id
:
'wrong_group'
,
chart_id
:
'wrong_group'
,
color
:
'#529B2E'
,
color
:
'#529B2E'
,
title
:
'错误
等
组'
,
title
:
'错误
正副
组'
,
labers
,
labers
,
list
,
list
,
};
};
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论