Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
confucius
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
confucius
Commits
9333b10a
Commit
9333b10a
authored
Aug 25, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增页面
parent
12483eb2
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
751 additions
and
439 deletions
+751
-439
index.js
src/api/teacher/index.js
+13
-0
exampaperlist.vue
src/components/exam/exampaperlist.vue
+1
-1
examineeManager.vue
src/pages/exam/examineeManager.vue
+1
-17
examtest.vue
src/pages/exam/examtest.vue
+462
-0
paperPublishReadonly.vue
src/pages/exam/paperPublishReadonly.vue
+269
-421
routes.js
src/router/routes.js
+5
-0
No files found.
src/api/teacher/index.js
View file @
9333b10a
...
...
@@ -156,6 +156,19 @@ export function GetPaper(data) {
})
}
/**
* 考试获取考试题目
* @param {JSON参数} data
*/
export
function
queryPaperDetails
(
data
)
{
return
request
({
url
:
'/AppletIndex/GetPaperDetails'
,
method
:
'post'
,
data
})
}
/**
* 保存试卷信息
* @param {JSON参数} data
...
...
src/components/exam/exampaperlist.vue
View file @
9333b10a
...
...
@@ -118,7 +118,7 @@
</
template
>
<
template
v-if=
"props.row.PaperType==2"
>
<q-btn
flat
size=
"xs"
color=
"primary"
style=
"font-weight:400"
@
click=
"goExameEdit(props.row)"
label=
"编辑"
v-if=
"currentUserInfo.Id==props.row.CreateBy &&(props.row.ExamineStatus==0||props.row.ExamineStatus==3||props.row.ExamineStatus==4)"
/>
/>
</
template
>
<q-btn-dropdown
flat
size=
"xs"
color=
"dark"
label=
"更多"
style=
"margin-left: 10px"
>
<q-list>
...
...
src/pages/exam/examineeManager.vue
View file @
9333b10a
...
...
@@ -49,23 +49,7 @@
</
template
>
<
template
v-slot:body-cell-optioned=
"props"
>
<q-td
:props=
"props"
>
<!--
<q-btn
flat
size=
"xs"
color=
"accent"
style=
"font-weight: 400"
label=
"停课"
@
click=
"ShowStopLesson(props.row)"
v-if=
"props.row.GuestState === 1"
/>
<q-btn
flat
size=
"xs"
color=
"accent"
style=
"font-weight: 400"
label=
"课耗明细"
@
click=
"goUrl(props.row)"
/>
-->
</q-td>
</
template
>
</q-table>
...
...
src/pages/exam/examtest.vue
0 → 100644
View file @
9333b10a
<
style
>
.examPaperInfo_Top
{
height
:
83px
;
border-bottom
:
1px
solid
#d9d9d9
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin
:
0
100px
;
}
.Exam-main
{
height
:
auto
!important
;
overflow
:
hidden
;
margin
:
20px
100px
;
}
.Exam-left
{
width
:
29%
;
border-right
:
1px
solid
#d9d9d9
;
border-bottom
:
1px
solid
#d9d9d9
;
border-radius
:
3px
;
border-top
:
1px
solid
#d9d9d9
;
background
:
#f0f0f0
;
padding-top
:
20px
;
padding-bottom
:
0px
;
}
.f1
{
float
:
left
;
}
.Exam-right
{
width
:
65%
;
min-height
:
795px
;
background
:
#fff
;
border-radius
:
3px
;
overflow-y
:
auto
;
border
:
1px
solid
#d9d9d9
;
margin-left
:
20px
;
}
.Left-ptitel
{
font-size
:
14px
;
color
:
#777
;
padding-left
:
18px
;
}
.Left-ptitel
span
{
font-size
:
14px
;
color
:
#333
;
}
.Left-ptitel
i
{
color
:
#c90000
;
font-style
:
normal
;
}
.Left-list
{
width
:
100%
;
border-top
:
1px
solid
#d9d9d9
;
}
.List-ul
{
margin
:
0
;
padding
:
0
;
}
.List-ul
li
{
height
:
33px
;
border-bottom
:
1px
solid
#f3f3f3
;
list-style-type
:
none
;
}
.List-ul-li-checked
{
background
:
#a6a6a6
;
color
:
#333
;
width
:
328px
;
}
.List-ul
li
{
display
:
block
;
padding-left
:
25px
;
line-height
:
33px
;
font-size
:
12px
;
height
:
33px
;
border-bottom
:
1px
solid
#f3f3f3
;
color
:
#555
;
text-decoration
:
none
;
display
:
flex
;
}
.List-ul-li-checked
b
{
color
:
#000
;
}
.Showbtn
{
display
:
block
;
width
:
90px
;
float
:
right
;
padding-top
:
8px
;
z-index
:
1000
;
}
.Left-btn
{
height
:
58px
;
padding
:
20px
0
20px
20px
;
width
:
100%
;
border-bottom
:
1px
solid
#d9d9d9
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
}
.List-bt
{
width
:
100%
;
height
:
27px
;
margin-left
:
1px
;
background
:
#fdfdfd
;
font-size
:
14px
;
line-height
:
27px
;
padding-left
:
10px
;
}
.List-bt
i
{
position
:
relative
;
top
:
1px
;
left
:
5px
;
}
.List-bt
i
:hover
{
color
:
#2961fe
;
cursor
:
pointer
;
}
.List-ul
li
:hover
{
background
:
#a6a6a6
;
color
:
#333
;
}
.checkUl
{
background
:
#a6a6a6
;
color
:
#333
;
}
.List-ul
li
:hover
.exam_ListSHow
{
display
:
block
;
}
.left-btn-list
{
padding
:
5px
10px
;
display
:
inline-block
;
color
:
#555
;
border-radius
:
3px
;
font-size
:
14px
;
border
:
1px
solid
#999
;
margin-right
:
10px
;
cursor
:
pointer
;
}
#btn1
{
background
:
#26a69a
!important
;
}
.difficulty_Degree
{
display
:
inline-block
;
width
:
80px
;
text-align
:
right
;
line-height
:
56px
;
}
.Left-list
::-webkit-scrollbar
{
width
:
3px
;
height
:
3px
;
background-color
:
#F5F5F5
;
}
/*!*定义滚动条轨道 内阴影+圆角*!*/
.Left-list
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
background-color
:
#F5F5F5
;
}
/*!*定义滑块 内阴影+圆角*!*/
.Left-list
::-webkit-scrollbar-thumb
{
border-radius
:
10px
;
-webkit-box-shadow
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
color-stop
(
.5
,
rgba
(
255
,
255
,
255
,
.2
)),
color-stop
(
.5
,
transparent
),
to
(
transparent
));
background-color
:
#0ae
;
}
.commonDalei
{
display
:
flex
;
align-content
:
center
;
margin-bottom
:
20px
;
}
.examPaper
.edui-editor
{
z-index
:
99
!important
;
}
.List-bt
input
{
outline
:
none
;
height
:
25px
;
}
.exam_DetailList
{
width
:
80%
;
display
:
inline-block
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
margin-left
:
5px
;
}
.exam_ListSHow
{
display
:
none
;
}
.exam_ListSHow
i
:hover
{
color
:
#2961fe
;
}
.pGroupName
{
color
:
#202020
;
font-size
:
16px
;
}
.paper_Title
p
{
display
:
inline
;
}
.pGNameDiv
{
font-size
:
12px
;
margin-top
:
20px
;
}
.Exam-main
.common_TiTable
{
border-spacing
:
0
;
}
.examPaperInfo_Top
.vClozeQuestion
.clozeTest_question_tit
{
margin
:
15px
0
;
}
</
style
>
<
template
>
<div
class=
"examPaper page-body"
>
<div
class=
"examPaperInfo_Top"
>
<div>
<div>
{{
DataObj
.
PaperName
}}
<br
/>
创建人:
{{
DataObj
.
CreateByName
}}
题量:
{{
examNum
}}
满分:
{{
examScore
}}
<q-checkbox
size=
"xs"
v-model=
"isShowAnswer"
label=
"显示答案"
/>
</div>
</div>
<div
style=
"width:20%;text-align:right;"
>
<q-btn
color=
"accent"
size=
"sm"
class=
"q-mr-md"
@
click=
"goBack()"
label=
"返回"
/>
</div>
</div>
<div
class=
"Exam-main"
>
<template
v-if=
"DataObj&&DataObj.GroupList&&DataObj.GroupList.length>0"
>
<div
v-for=
"(gItem,gIndex) in DataObj.GroupList"
:key=
"gIndex"
>
<div
class=
"pGNameDiv"
><span
class=
"pGroupName"
>
{{
NoToChinese
(
gIndex
+
1
)
}}
、
{{
gItem
.
GroupName
}}
</span>
(共
{{
gItem
.
DetailsList
.
length
}}
题,
{{
gItem
.
GScore
}}
分)
</div>
<div
v-for=
"(dItem,dIndex) in gItem.DetailsList"
:key=
"dIndex"
>
<span>
{{
dIndex
+
1
}}
、
</span>
<span
class=
"paper_Title"
v-html=
"dItem.Title"
></span>
<span
style=
"margin:10px 0;display:inline-block;"
>
(
{{
dItem
.
Score
}}
分)
</span>
<!--单选题-->
<v-single
v-if=
"dItem.QuestionTypeKey=='single'||dItem.QuestionTypeKey=='single-number'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-single>
<!--多选题-->
<v-multiple
v-if=
"dItem.QuestionTypeKey=='multiple'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-multiple>
<!--填空题-->
<v-fillin
v-if=
"dItem.QuestionTypeKey=='fill-in'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-fillin>
<!--判断题-->
<v-judge
v-if=
"dItem.QuestionTypeKey=='judge'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
></v-judge>
<!--简答题、名词解释、论述题、计算题、口语题、其它-->
<v-shortanswer
v-if=
"dItem.QuestionTypeKey=='short-answer'||dItem.QuestionTypeKey=='noun-explanation'||dItem.QuestionTypeKey=='essay-question'
||dItem.QuestionTypeKey=='calculation' || dItem.QuestionTypeKey=='spoken'|| dItem.QuestionTypeKey=='other'
"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-shortanswer>
<!--分录题、资料题-->
<v-entryproblem
v-if=
"dItem.QuestionTypeKey=='entry-problem'|| dItem.QuestionTypeKey=='data-question'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-entryproblem>
<!--连线题-->
<v-matching
v-if=
"dItem.QuestionTypeKey=='matching'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-matching>
<!--排序题-->
<v-sortingproblem
v-if=
"dItem.QuestionTypeKey=='sorting-problem'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
></v-sortingproblem>
<!--完型填空-->
<v-cloze
v-if=
"dItem.QuestionTypeKey=='cloze'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
></v-cloze>
<!--阅读理解、听力题-->
<v-readingcomprehensio
v-if=
"dItem.QuestionTypeKey=='reading-comprehensio'||dItem.QuestionTypeKey=='listening'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
></v-readingcomprehensio>
<!--共用选择题-->
<v-sharingchoose
v-if=
"dItem.QuestionTypeKey=='sharing-choose'"
:questionObj=
"dItem"
:isShowAnswer=
"isShowAnswer"
>
</v-sharingchoose>
</div>
</div>
</
template
>
</div>
</div>
</template>
<
script
>
import
vSingle
from
'../../components/questiontype/v-single'
import
vMultiple
from
'../../components/questiontype/v-multiple'
import
vFillin
from
'../../components/questiontype/v-fillin'
import
vJudge
from
'../../components/questiontype/v-judge'
import
vShortanswer
from
'../../components/questiontype/v-shortanswer'
import
vEntryproblem
from
'../../components/questiontype/v-entryproblem'
import
vMatching
from
'../../components/questiontype/v-matching'
import
vSortingproblem
from
'../../components/questiontype/v-sortingproblem'
import
vCloze
from
'../../components/questiontype/v-cloze'
import
vReadingcomprehensio
from
'../../components/questiontype/v-readingcomprehensio'
import
vSharingchoose
from
'../../components/questiontype/v-sharingchoose'
import
{
GetPaperDetails
,
}
from
'../../api/teacher/index'
;
export
default
{
components
:
{
vSingle
,
vMultiple
,
vFillin
,
vJudge
,
vShortanswer
,
vEntryproblem
,
vMatching
,
vSortingproblem
,
vCloze
,
vReadingcomprehensio
,
vSharingchoose
},
meta
:
{
title
:
"试卷详情"
},
watch
:
{
},
data
()
{
return
{
msg
:
{
Id
:
1
,
GuestId
:
60
,
PaperId
:
5
},
//试卷对象
DataObj
:
{
PaperId
:
0
,
//试卷编号
PaperName
:
''
,
//试卷名称
QuestionBandIds
:
""
,
//关联题库编号
DifficultyType
:
1
,
//试卷难易程度
GenerateType
:
2
,
//组卷类型(1-智能组卷,2-手动组卷,3-智能导入)
CreateNum
:
1
,
//生成试卷套数
PaperType
:
2
,
//试卷类型(1-文件夹,2-试卷)
ParentId
:
0
,
//父节点编号,
GroupList
:
[],
//试卷答题分类
CreateByName
:
""
,
//创建人
},
isShowAnswer
:
false
,
//是否显示答案
examScore
:
0
,
//总分,
examNum
:
0
,
//总题量
}
},
created
()
{
},
mounted
()
{
this
.
GetPaperDetails
()
},
methods
:
{
NoToChinese
(
str
)
{
str
=
str
+
''
;
var
len
=
str
.
length
-
1
;
var
idxs
=
[
''
,
'十'
,
'百'
,
'千'
,
'万'
,
'十'
,
'百'
,
'千'
,
'亿'
,
'十'
,
'百'
,
'千'
,
'万'
,
'十'
,
'百'
,
'千'
,
'亿'
];
var
num
=
[
'零'
,
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'七'
,
'八'
,
'九'
];
return
str
.
replace
(
/
([
1-9
]
|0+
)
/g
,
function
(
$
,
$1
,
idx
,
full
)
{
var
pos
=
0
;
if
(
$1
[
0
]
!=
'0'
)
{
pos
=
len
-
idx
;
if
(
idx
==
0
&&
$1
[
0
]
==
1
&&
idxs
[
len
-
idx
]
==
'十'
)
{
return
idxs
[
len
-
idx
];
}
return
num
[
$1
[
0
]]
+
idxs
[
len
-
idx
];
}
else
{
var
left
=
len
-
idx
;
var
right
=
len
-
idx
+
$1
.
length
;
if
(
Math
.
floor
(
right
/
4
)
-
Math
.
floor
(
left
/
4
)
>
0
)
{
pos
=
left
-
left
%
4
;
}
if
(
pos
)
{
return
idxs
[
pos
]
+
num
[
$1
[
0
]];
}
else
if
(
idx
+
$1
.
length
>=
len
)
{
return
''
;
}
else
{
return
num
[
$1
[
0
]]
}
}
});
},
//获取试卷详情
GetPaperInfo
()
{
GetPaper
(
this
.
msg
).
then
(
res
=>
{
var
tempData
=
res
.
Data
;
console
.
log
(
"tempData"
,
tempData
);
if
(
res
.
Code
==
1
)
{
this
.
DataObj
.
PaperId
=
tempData
.
PaperId
;
this
.
DataObj
.
PaperName
=
tempData
.
PaperName
;
this
.
DataObj
.
QuestionBandIds
=
tempData
.
QuestionBandIds
;
this
.
DataObj
.
DifficultyType
=
tempData
.
DifficultyType
;
this
.
DataObj
.
GenerateType
=
tempData
.
GenerateType
;
this
.
DataObj
.
CreateNum
=
tempData
.
CreateNum
;
this
.
DataObj
.
PaperType
=
tempData
.
PaperType
;
this
.
DataObj
.
ParentId
=
tempData
.
ParentId
;
this
.
DataObj
.
CreateByName
=
tempData
.
CreateByName
;
if
(
tempData
.
GroupList
&&
tempData
.
GroupList
.
length
>
0
)
{
this
.
DataObj
.
GroupList
=
tempData
.
GroupList
;
}
this
.
calcPaper
();
}
})
},
//计算试卷相关
calcPaper
()
{
this
.
examScore
=
0
;
this
.
examNum
=
0
;
if
(
this
.
DataObj
&&
this
.
DataObj
.
GroupList
)
{
this
.
DataObj
.
GroupList
.
forEach
(
x
=>
{
if
(
x
.
DetailsList
&&
x
.
DetailsList
.
length
>
0
)
{
this
.
examNum
+=
x
.
DetailsList
.
length
;
x
.
DetailsList
.
forEach
(
y
=>
{
if
(
y
.
Score
)
{
this
.
examScore
+=
Number
(
y
.
Score
);
}
})
}
})
}
},
//返回
goBack
()
{
this
.
$router
.
push
({
path
:
'/exam/examPaper'
})
}
}
}
</
script
>
src/pages/exam/paperPublishReadonly.vue
View file @
9333b10a
<!--组卷-->
<
style
>
.examCreat_Top
{
.examCreat_Top
{
width
:
100%
;
height
:
30px
;
line-height
:
30px
;
padding
:
0
10px
;
margin-bottom
:
20px
;
border-bottom
:
1px
solid
#ddd
;
}
}
.examTi_List
{
.examTi_List
{
border
:
1px
solid
#ddd
;
margin-bottom
:
20px
;
}
}
.examCreat_Top
i
:hover
{
.examCreat_Top
i
:hover
{
color
:
red
;
cursor
:
pointer
;
}
}
.setCt
{
.setCt
{
margin-bottom
:
12px
;
}
}
.setCt
:after
{
.setCt
:after
{
content
:
"020"
;
display
:
block
;
height
:
0
;
clear
:
both
;
visibility
:
hidden
;
}
}
.papPub_Left
{
.papPub_Left
{
display
:
inline-block
;
width
:
104px
;
line-height
:
34px
;
}
}
.f1
{
.f1
{
float
:
left
;
}
}
.pcomRow
{
.pcomRow
{
align-items
:
center
;
}
}
.selectClass
{
.selectClass
{
width
:
1026px
;
border
:
1px
dashed
#e1e1e5
;
padding-top
:
12px
;
border-radius
:
4px
;
padding
:
12px
4px
0
4px
;
margin-top
:
5px
;
}
}
.selectClass
span
{
.selectClass
span
{
display
:
inline-block
;
background
:
#f2f5fa
;
padding
:
0
10px
;
...
...
@@ -67,32 +67,36 @@
position
:
relative
;
font-size
:
12px
;
cursor
:
pointer
;
}
}
.selectClass
span
i
{
.selectClass
span
i
{
position
:
absolute
;
right
:
-8px
;
top
:
-10px
;
display
:
none
;
color
:
gray
;
cursor
:
pointer
;
}
}
.selectClass
span
:hover
i
{
.selectClass
span
:hover
i
{
display
:
block
;
}
.paper_QuesDes
{
}
.paper_QuesDes
{
font-size
:
12px
;
color
:
#a8a8b3
;
display
:
block
;
margin
:
0
0
15px
28px
;
}
#paper_Publish
{
}
#paper_Publish
{
padding-left
:
60px
!important
;
}
#paper_Publish
.edui-editor
{
}
#paper_Publish
.edui-editor
{
z-index
:
99
!important
;
}
}
</
style
>
<
template
>
<div
class=
"page-body"
id=
"paper_Publish"
>
...
...
@@ -101,19 +105,9 @@
<span
class=
"papPub_Left f1"
>
发放对象
</span>
<div
class=
"f1"
style=
"margin-top: 5px"
>
<!--
<q-btn
color=
"accent"
size=
"sm"
@
click=
"showClassStu"
class=
"q-mr-md"
label=
"选择学员"
/><br
/>
-->
<div
class=
"selectClass"
v-if=
"postMsg.StudentList && postMsg.StudentList.length > 0"
>
<span
v-for=
"(item, index) in postMsg.StudentList"
:key=
"index"
style=
"padding-left: 5px"
>
{{
item
.
GuestName
}}
<i
class=
"iconfont icon-shanchu1"
@
click=
"delStudentName(index)"
></i>
<div
class=
"selectClass"
v-if=
"postMsg.StudentList && postMsg.StudentList.length > 0"
>
<span
v-for=
"(item, index) in postMsg.StudentList"
:key=
"index"
style=
"padding-left: 5px"
>
{{
item
.
GuestName
}}
<i
class=
"iconfont icon-shanchu1"
@
click=
"delStudentName(index)"
></i>
</span>
</div>
</div>
...
...
@@ -121,41 +115,16 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
发放时间
</span>
<div
class=
"f1"
>
<q-input
filled
v-model=
"postMsg.ExamStartTime"
style=
"width: 308px"
mask=
"####-##-## ##:##:##"
label=
"开始时间"
ref=
"StartTime"
disable
:rules=
"[(val) => !!val || '请选择开始时间']"
>
<q-input
filled
v-model=
"postMsg.ExamStartTime"
style=
"width: 308px"
mask=
"####-##-## ##:##:##"
label=
"开始时间"
ref=
"StartTime"
disable
:rules=
"[(val) => !!val || '请选择开始时间']"
>
<template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-popup-proxy
ref=
"qDateProxy"
transition-show=
"scale"
transition-hide=
"scale"
>
<div
class=
"q-gutter-md row items-start"
>
<q-date
v-model=
"postMsg.ExamStartTime"
mask=
"YYYY-MM-DD HH:mm:ss"
></q-date>
<q-time
v-model=
"postMsg.ExamStartTime"
format24h
mask=
"YYYY-MM-DD HH:mm:ss"
/>
<q-date
v-model=
"postMsg.ExamStartTime"
mask=
"YYYY-MM-DD HH:mm:ss"
></q-date>
<q-time
v-model=
"postMsg.ExamStartTime"
format24h
mask=
"YYYY-MM-DD HH:mm:ss"
/>
</div>
<q-btn
v-close-popup
label=
"关闭"
color=
"primary"
flat
style=
"float: right"
/>
<q-btn
v-close-popup
label=
"关闭"
color=
"primary"
flat
style=
"float: right"
/>
</q-popup-proxy>
</q-icon>
</
template
>
...
...
@@ -165,41 +134,16 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
结束时间
</span>
<div
class=
"f1"
>
<q-input
filled
v-model=
"postMsg.ExamEndTime"
style=
"width: 308px"
mask=
"####-##-## ##:##:##"
label=
"结束时间"
ref=
"ExamEndTime"
disable
:rules=
"[(val) => !!val || '请选择结束时间']"
>
<q-input
filled
v-model=
"postMsg.ExamEndTime"
style=
"width: 308px"
mask=
"####-##-## ##:##:##"
label=
"结束时间"
ref=
"ExamEndTime"
disable
:rules=
"[(val) => !!val || '请选择结束时间']"
>
<
template
v-slot:append
>
<q-icon
name=
"event"
class=
"cursor-pointer"
>
<q-popup-proxy
ref=
"qDateProxy2"
transition-show=
"scale"
transition-hide=
"scale"
>
<q-popup-proxy
ref=
"qDateProxy2"
transition-show=
"scale"
transition-hide=
"scale"
>
<div
class=
"q-gutter-md row items-start"
>
<q-date
v-model=
"postMsg.ExamEndTime"
mask=
"YYYY-MM-DD HH:mm:ss"
></q-date>
<q-time
v-model=
"postMsg.ExamEndTime"
format24h
mask=
"YYYY-MM-DD HH:mm:ss"
/>
<q-date
v-model=
"postMsg.ExamEndTime"
mask=
"YYYY-MM-DD HH:mm:ss"
></q-date>
<q-time
v-model=
"postMsg.ExamEndTime"
format24h
mask=
"YYYY-MM-DD HH:mm:ss"
/>
</div>
<q-btn
v-close-popup
label=
"关闭"
color=
"primary"
flat
style=
"float: right"
/>
<q-btn
v-close-popup
label=
"关闭"
color=
"primary"
flat
style=
"float: right"
/>
</q-popup-proxy>
</q-icon>
</
template
>
...
...
@@ -209,16 +153,8 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
考试限时
</span>
<div
class=
"f1"
>
<q-input
filled
bottom-slots
maxlength=
"10"
style=
"width: 308px"
v-model=
"postMsg.ExamTimes"
label=
"考试限时"
:dense=
"false"
disable
>
<q-input
filled
bottom-slots
maxlength=
"10"
style=
"width: 308px"
v-model=
"postMsg.ExamTimes"
label=
"考试限时"
:dense=
"false"
disable
>
<
template
v-slot:append
>
<span
style=
"font-size: 12px"
>
分钟
</span>
</
template
>
...
...
@@ -228,16 +164,8 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
限时提交
</span>
<div
class=
"f1"
>
<q-input
filled
bottom-slots
maxlength=
"10"
style=
"width: 308px"
v-model=
"postMsg.SubmitTimes"
label=
"限时提交"
:dense=
"false"
disable
>
<q-input
filled
bottom-slots
maxlength=
"10"
style=
"width: 308px"
v-model=
"postMsg.SubmitTimes"
label=
"限时提交"
:dense=
"false"
disable
>
<
template
v-slot:append
>
<span
style=
"font-size: 12px"
>
分钟内不允许提交
</span>
</
template
>
...
...
@@ -247,15 +175,7 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
限时进入
</span>
<div
class=
"f1"
>
<q-input
filled
bottom-slots
maxlength=
"10"
v-model=
"postMsg.EnterTimes"
label=
"限时进入"
:dense=
"false"
disable
>
<q-input
filled
bottom-slots
maxlength=
"10"
v-model=
"postMsg.EnterTimes"
label=
"限时进入"
:dense=
"false"
disable
>
<
template
v-slot:append
>
<span
style=
"font-size: 12px"
>
分钟后不允许参加考试
</span>
</
template
>
...
...
@@ -265,42 +185,17 @@
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
防作弊设置
</span>
<div
class=
"f1"
>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsQuestionRandom"
:true-value=
"1"
:false-value=
"0"
label=
"题目乱序"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsQuestionRandom"
:true-value=
"1"
:false-value=
"0"
label=
"题目乱序"
disable
/>
<div
class=
"paper_QuesDes"
>
学生接收到的题目显示顺序不同
</div>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsOptionRandom"
:true-value=
"1"
:false-value=
"0"
label=
"选项乱序"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsOptionRandom"
:true-value=
"1"
:false-value=
"0"
label=
"选项乱序"
disable
/>
<div
class=
"paper_QuesDes"
>
学生接收到的题目选项顺序不同
</div>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsLeaveAnswer"
:true-value=
"1"
:false-value=
"0"
label=
"学生离开作答页面"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsLeaveAnswer"
:true-value=
"1"
:false-value=
"0"
label=
"学生离开作答页面"
disable
/>
<
template
>
<span
style=
"position: relative; top: 2px"
>
<el-input
style=
"width: 80px"
size=
"small"
v-model=
"postMsg.LeaveTimes"
@
keyup
.
native=
"checkInteger(postMsg, 'LeaveTimes')"
maxlength=
"5"
disabled
></el-input>
<el-input
style=
"width: 80px"
size=
"small"
v-model=
"postMsg.LeaveTimes"
@
keyup
.
native=
"checkInteger(postMsg, 'LeaveTimes')"
maxlength=
"5"
disabled
></el-input>
次,系统强制收卷
</span>
</
template
>
...
...
@@ -308,31 +203,13 @@
系统强制收卷后,教师重新发放试卷,学生可以继续作答
</div>
<div
style=
"margin-bottom: 15px"
>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsDisableMultiTerminal"
:true-value=
"1"
:false-value=
"0"
label=
"禁止学生多终端考试"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsDisableMultiTerminal"
:true-value=
"1"
:false-value=
"0"
label=
"禁止学生多终端考试"
disable
/>
</div>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsExamType"
:true-value=
"1"
:false-value=
"0"
label=
"只允许"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsExamType"
:true-value=
"1"
:false-value=
"0"
label=
"只允许"
disable
/>
<
template
>
<span
style=
"position: relative; top: 2px"
>
<el-select
style=
"width: 80px"
size=
"small"
v-model=
"postMsg.ExamTypeValue"
disabled
>
<el-select
style=
"width: 80px"
size=
"small"
v-model=
"postMsg.ExamTypeValue"
disabled
>
<el-option
:value=
"1"
label=
"App"
></el-option>
<el-option
:value=
"2"
label=
"PC"
></el-option>
</el-select>
...
...
@@ -343,57 +220,28 @@
</div>
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
考试须知
</span>
<UeEditor
v-model=
"postMsg.ExamNotice"
:config=
"config"
style=
"margin: 30px 0 0 110px; z-index: 1; width: 1026px"
ref=
"UE_Title"
disabled
></UeEditor>
<UeEditor
v-model=
"postMsg.ExamNotice"
:config=
"config"
style=
"margin: 30px 0 0 110px; z-index: 1; width: 1026px"
ref=
"UE_Title"
disabled
></UeEditor>
</div>
<div
style=
"margin: 20px 0"
>
高级设置
</div>
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
交卷设置
</span>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsAutoSubmit"
:true-value=
"1"
:false-value=
"0"
label=
"考试到达截止时间后自动提交"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsAutoSubmit"
:true-value=
"1"
:false-value=
"0"
label=
"考试到达截止时间后自动提交"
disable
/>
</div>
<div
class=
"setCt"
>
<span
class=
"papPub_Left f1"
>
评分设置
</span>
<div
class=
"f1"
>
<q-checkbox
size=
"xs"
v-model=
"postMsg.FillInIsSubject"
:true-value=
"1"
:false-value=
"0"
label=
"填空类型的题目设为主观题"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.FillInIsSubject"
:true-value=
"1"
:false-value=
"0"
label=
"填空类型的题目设为主观题"
disable
/>
<div
class=
"paper_QuesDes"
>
填空题类型的包括填空题、分录题、资料题,设为主观题后需教师手动批阅
</div>
<q-checkbox
size=
"xs"
v-model=
"postMsg.FillInIsIgnore"
:true-value=
"1"
:false-value=
"0"
label=
"填空题答案不区分大小写"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.FillInIsIgnore"
:true-value=
"1"
:false-value=
"0"
label=
"填空题答案不区分大小写"
disable
/>
<div
class=
"paper_QuesDes"
>
勾选后,英文大写和小写都可以得分
</div>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsHalfScore"
:true-value=
"1"
:false-value=
"0"
label=
"多选题未选全给一半分"
disable
/>
<q-checkbox
size=
"xs"
v-model=
"postMsg.IsHalfScore"
:true-value=
"1"
:false-value=
"0"
label=
"多选题未选全给一半分"
disable
/>
<div
class=
"paper_QuesDes"
>
不勾选时全选对才给分
</div>
</div>
</div>
...
...
@@ -406,19 +254,18 @@
disable
/> -->
</div>
<classstutreeForm
v-if=
"isShowClassStu"
@
close=
"closeClassStuForm"
@
success=
"getClassStuList"
>
<classstutreeForm
v-if=
"isShowClassStu"
@
close=
"closeClassStuForm"
@
success=
"getClassStuList"
>
</classstutreeForm>
</div>
</template>
<
script
>
import
UeEditor
from
"../../components/editor/UeEditor"
;
import
classstutreeForm
from
"../../components/exam/classstutree-form"
;
import
{
savePublishExam
,
queryExamPublish
}
from
"../../api/teacher/index"
;
export
default
{
import
UeEditor
from
"../../components/editor/UeEditor"
;
import
classstutreeForm
from
"../../components/exam/classstutree-form"
;
import
{
savePublishExam
,
queryExamPublish
}
from
"../../api/teacher/index"
;
export
default
{
components
:
{
classstutreeForm
,
UeEditor
,
...
...
@@ -559,5 +406,6 @@ export default {
});
},
},
};
};
</
script
>
src/router/routes.js
View file @
9333b10a
...
...
@@ -1072,6 +1072,11 @@ const routes = [{
component
:
()
=>
import
(
"pages/exam/paperInfo"
)
},
{
path
:
"/exam/examtest"
,
//学生考试
component
:
()
=>
import
(
"pages/exam/examtest"
)
},
{
path
:
"/exam/paperCreate"
,
//试卷组卷
component
:
()
=>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment