Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
school-paper-admin-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
school-paper
school-paper-admin-front
Commits
ae1b32f4
Commit
ae1b32f4
authored
Jul 31, 2023
by
H.wb.wang.peixun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
审阅批卷页面对接
parent
e03b4576
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
804 additions
and
184 deletions
+804
-184
src/api/school-paper/testPaper.js
+4
-3
src/api/school-paper/testPaperRecord.js
+20
-5
src/components/FileUpload/index.vue
+15
-19
src/components/ImageUpload/index.vue
+12
-28
src/views/school-paper/testPaper/index.vue
+218
-31
src/views/school-paper/testPaperRecord/components/treeselect.vue
+121
-0
src/views/school-paper/testPaperRecord/index.vue
+414
-98
No files found.
src/api/school-paper/testPaper.js
View file @
ae1b32f4
...
@@ -10,10 +10,11 @@ export function listTestPaper(query) {
...
@@ -10,10 +10,11 @@ export function listTestPaper(query) {
}
}
// 查询试卷详细
// 查询试卷详细
export
function
getTestPaper
(
id
)
{
export
function
getTestPaper
(
query
)
{
return
request
({
return
request
({
url
:
'/school-paper/testPaper/'
+
id
,
url
:
'/school-paper/questionBankTestPaper/list'
,
method
:
'get'
method
:
'get'
,
params
:
query
})
})
}
}
// 新增试卷
// 新增试卷
...
...
src/api/school-paper/testPaperRecord.js
View file @
ae1b32f4
...
@@ -17,10 +17,11 @@ export function listgetClassList(query) {
...
@@ -17,10 +17,11 @@ export function listgetClassList(query) {
})
})
}
}
// 查询答题记录详细
// 查询答题记录详细
export
function
getTestPaperRecord
(
id
)
{
export
function
getTestPaperRecord
(
query
)
{
return
request
({
return
request
({
url
:
'/school-paper/testPaperRecord/'
+
id
,
url
:
'/school-paper/testPaperRecordDetail/getStudentAnswerRecordList'
,
method
:
'get'
method
:
'get'
,
params
:
query
})
})
}
}
...
@@ -36,12 +37,26 @@ export function addTestPaperRecord(data) {
...
@@ -36,12 +37,26 @@ export function addTestPaperRecord(data) {
// 修改答题记录
// 修改答题记录
export
function
updateTestPaperRecord
(
data
)
{
export
function
updateTestPaperRecord
(
data
)
{
return
request
({
return
request
({
url
:
'/school-paper/testPaperRecord'
,
url
:
'/school-paper/testPaperRecord
Detail
'
,
method
:
'put'
,
method
:
'put'
,
data
:
data
data
:
data
})
})
}
}
// 批卷完成
// export function completeReadOver(query) {
// return request({
// url: '',
// method: 'get',
// data: query
// })
// }
export
function
completeReadOver
(
query
)
{
return
request
({
url
:
'/school-paper/testPaperRecord/completeReadOver'
,
method
:
'get'
,
params
:
query
})
}
// 删除答题记录
// 删除答题记录
export
function
delTestPaperRecord
(
id
)
{
export
function
delTestPaperRecord
(
id
)
{
return
request
({
return
request
({
...
...
src/components/FileUpload/index.vue
View file @
ae1b32f4
<
template
>
<
template
>
<div
class=
"upload-file"
>
<div
class=
"upload-file"
>
<el-upload
<el-upload
multiple
:action=
"uploadFileUrl"
:before-upload=
"handleBeforeUpload"
:file-list=
"fileList"
:limit=
"limit"
multiple
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
:on-success=
"handleUploadSuccess"
:show-file-list=
"false"
:action=
"uploadFileUrl"
:headers=
"headers"
:disabled=
"disabled"
class=
"upload-file-uploader"
ref=
"fileUpload"
>
:before-upload=
"handleBeforeUpload"
:file-list=
"fileList"
:limit=
"limit"
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
:on-success=
"handleUploadSuccess"
:show-file-list=
"false"
:headers=
"headers"
class=
"upload-file-uploader"
ref=
"fileUpload"
>
<!-- 上传按钮 -->
<!-- 上传按钮 -->
<el-button
size=
"mini"
type=
"primary"
>
选取文件
</el-button>
<el-button
size=
"mini"
type=
"primary"
>
选取文件
</el-button>
<!-- 上传提示 -->
<!-- 上传提示 -->
...
@@ -31,7 +20,7 @@
...
@@ -31,7 +20,7 @@
<el-link
:href=
"`${file.url}`"
:underline=
"false"
target=
"_blank"
>
<el-link
:href=
"`${file.url}`"
:underline=
"false"
target=
"_blank"
>
<span
class=
"el-icon-document"
>
{{ getFileName(file.name) }}
</span>
<span
class=
"el-icon-document"
>
{{ getFileName(file.name) }}
</span>
</el-link>
</el-link>
<div
class=
"ele-upload-list__item-content-action"
>
<div
class=
"ele-upload-list__item-content-action"
v-if=
"!disabled"
>
<el-link
:underline=
"false"
@
click=
"handleDelete(index)"
type=
"danger"
>
删除
</el-link>
<el-link
:underline=
"false"
@
click=
"handleDelete(index)"
type=
"danger"
>
删除
</el-link>
</div>
</div>
</li>
</li>
...
@@ -67,6 +56,10 @@ export default {
...
@@ -67,6 +56,10 @@ export default {
isShowTip
:
{
isShowTip
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
},
disabled
:
{
type
:
Boolean
,
default
:
false
}
}
},
},
data
()
{
data
()
{
...
@@ -100,11 +93,11 @@ export default {
...
@@ -100,11 +93,11 @@ export default {
}
}
// 然后将数组转为对象数组
// 然后将数组转为对象数组
this
.
fileList
=
list
.
map
(
item
=>
{
this
.
fileList
=
list
.
map
(
item
=>
{
item
=
{
url
:
item
.
url
,
name
:
item
.
name
};
item
=
{
url
:
item
.
url
,
name
:
item
.
name
};
// item.uid = item.uid || new Date().getTime() + temp++;
// item.uid = item.uid || new Date().getTime() + temp++;
return
item
;
return
item
;
});
});
console
.
log
(
this
.
fileList
,
'fileList---------'
)
console
.
log
(
this
.
fileList
,
'fileList---------'
)
}
else
{
}
else
{
this
.
fileList
=
[];
this
.
fileList
=
[];
return
[];
return
[];
...
@@ -157,7 +150,7 @@ export default {
...
@@ -157,7 +150,7 @@ export default {
// 上传成功回调
// 上传成功回调
handleUploadSuccess
(
res
,
file
)
{
handleUploadSuccess
(
res
,
file
)
{
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
this
.
uploadList
.
push
({
name
:
res
.
data
.
originalFilename
,
url
:
res
.
data
.
url
});
this
.
uploadList
.
push
({
name
:
res
.
data
.
originalFilename
,
url
:
res
.
data
.
url
});
this
.
uploadedSuccessfully
();
this
.
uploadedSuccessfully
();
}
else
{
}
else
{
this
.
number
--
;
this
.
number
--
;
...
@@ -186,7 +179,7 @@ export default {
...
@@ -186,7 +179,7 @@ export default {
},
},
// 获取文件名称
// 获取文件名称
getFileName
(
name
)
{
getFileName
(
name
)
{
console
.
log
(
name
,
'==========='
)
console
.
log
(
name
,
'==========='
)
// 如果是url那么取最后的名字 如果不是直接返回
// 如果是url那么取最后的名字 如果不是直接返回
if
(
name
.
lastIndexOf
(
"/"
)
>
-
1
)
{
if
(
name
.
lastIndexOf
(
"/"
)
>
-
1
)
{
return
name
.
slice
(
name
.
lastIndexOf
(
"/"
)
+
1
);
return
name
.
slice
(
name
.
lastIndexOf
(
"/"
)
+
1
);
...
@@ -211,18 +204,21 @@ export default {
...
@@ -211,18 +204,21 @@ export default {
.upload-file-uploader
{
.upload-file-uploader
{
margin-bottom
:
5px
;
margin-bottom
:
5px
;
}
}
.upload-file-list
.el-upload-list__item
{
.upload-file-list
.el-upload-list__item
{
border
:
1px
solid
#e4e7ed
;
border
:
1px
solid
#e4e7ed
;
line-height
:
2
;
line-height
:
2
;
margin-bottom
:
10px
;
margin-bottom
:
10px
;
position
:
relative
;
position
:
relative
;
}
}
.upload-file-list
.ele-upload-list__item-content
{
.upload-file-list
.ele-upload-list__item-content
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
color
:
inherit
;
color
:
inherit
;
}
}
.ele-upload-list__item-content-action
.el-link
{
.ele-upload-list__item-content-action
.el-link
{
margin-right
:
10px
;
margin-right
:
10px
;
}
}
...
...
src/components/ImageUpload/index.vue
View file @
ae1b32f4
<
template
>
<
template
>
<div
class=
"component-upload-image"
>
<div
class=
"component-upload-image"
>
<el-upload
<el-upload
multiple
:action=
"uploadImgUrl"
list-type=
"picture-card"
:on-success=
"handleUploadSuccess"
multiple
:before-upload=
"handleBeforeUpload"
:limit=
"limit"
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
:action=
"uploadImgUrl"
ref=
"imageUpload"
:on-remove=
"handleDelete"
:show-file-list=
"true"
:headers=
"headers"
:file-list=
"fileList"
list-type=
"picture-card"
:disabled=
"disabled"
:on-preview=
"handlePictureCardPreview"
:class=
"
{ hide: this.fileList.length >= this.limit }">
:on-success=
"handleUploadSuccess"
:before-upload=
"handleBeforeUpload"
:limit=
"limit"
:on-error=
"handleUploadError"
:on-exceed=
"handleExceed"
ref=
"imageUpload"
:on-remove=
"handleDelete"
:show-file-list=
"true"
:headers=
"headers"
:file-list=
"fileList"
:on-preview=
"handlePictureCardPreview"
:class=
"
{ hide: this.fileList.length >= this.limit }"
>
<i
class=
"el-icon-plus"
></i>
<i
class=
"el-icon-plus"
></i>
</el-upload>
</el-upload>
...
@@ -32,16 +19,8 @@
...
@@ -32,16 +19,8 @@
的文件
的文件
</div>
</div>
<el-dialog
<el-dialog
:visible
.
sync=
"dialogVisible"
title=
"预览"
width=
"800"
append-to-body
>
:visible
.
sync=
"dialogVisible"
<img
:src=
"dialogImageUrl"
style=
"display: block; max-width: 100%; margin: 0 auto"
/>
title=
"预览"
width=
"800"
append-to-body
>
<img
:src=
"dialogImageUrl"
style=
"display: block; max-width: 100%; margin: 0 auto"
/>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -73,6 +52,10 @@ export default {
...
@@ -73,6 +52,10 @@ export default {
type
:
Boolean
,
type
:
Boolean
,
default
:
true
,
default
:
true
,
},
},
disabled
:
{
type
:
Boolean
,
default
:
false
,
}
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -206,7 +189,7 @@ export default {
...
@@ -206,7 +189,7 @@ export default {
},
},
// 删除图片
// 删除图片
handleDelete
(
file
)
{
handleDelete
(
file
)
{
console
.
log
(
file
,
'文件'
)
console
.
log
(
file
,
'文件'
)
const
findex
=
this
.
fileList
.
map
((
f
)
=>
f
.
url
).
indexOf
(
file
.
url
);
const
findex
=
this
.
fileList
.
map
((
f
)
=>
f
.
url
).
indexOf
(
file
.
url
);
if
(
findex
>
-
1
)
{
if
(
findex
>
-
1
)
{
this
.
fileList
.
splice
(
findex
,
1
);
this
.
fileList
.
splice
(
findex
,
1
);
...
@@ -266,6 +249,7 @@ export default {
...
@@ -266,6 +249,7 @@ export default {
::v-deep
.hide
.el-upload--picture-card
{
::v-deep
.hide
.el-upload--picture-card
{
display
:
none
;
display
:
none
;
}
}
//
去掉动画效果
//
去掉动画效果
::v-deep
.el-list-enter-active
,
::v-deep
.el-list-enter-active
,
::v-deep
.el-list-leave-active
{
::v-deep
.el-list-leave-active
{
...
...
src/views/school-paper/testPaper/index.vue
View file @
ae1b32f4
...
@@ -2,9 +2,9 @@
...
@@ -2,9 +2,9 @@
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"审批阅卷"
prop=
"testName"
>
<el-form-item
label=
"审批阅卷"
prop=
"testName"
>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
/>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
班
级"
prop=
"categoryId"
>
<el-form-item
label=
"
年
级"
prop=
"categoryId"
>
<el-select
v-model=
"value"
placeholder=
"请选择"
>
<el-select
v-model=
"value"
placeholder=
"请选择"
>
<el-option
v-for=
"item in PhaseList"
:key=
"item.deptId"
:label=
"item.deptName"
:value=
"item.deptId"
>
<el-option
v-for=
"item in PhaseList"
:key=
"item.deptId"
:label=
"item.deptName"
:value=
"item.deptId"
>
</el-option>
</el-option>
...
@@ -84,7 +84,7 @@
...
@@ -84,7 +84,7 @@
<el-table-column
label=
"主键id"
align=
"center"
prop=
"id"
v-if=
"true"
/>
-->
<el-table-column
label=
"主键id"
align=
"center"
prop=
"id"
v-if=
"true"
/>
-->
<el-table-column
label=
"试卷名称"
prop=
"testName"
/>
<el-table-column
label=
"试卷名称"
prop=
"testName"
/>
<!--
<el-table-column
label=
"类别id"
align=
"center"
prop=
"categoryId"
/>
-->
<!--
<el-table-column
label=
"类别id"
align=
"center"
prop=
"categoryId"
/>
-->
<el-table-column
label=
"阶段"
prop=
"phase
Id
"
/>
<el-table-column
label=
"阶段"
prop=
"phase
Class
"
/>
<!--
<el-table-column
label=
"班级id"
align=
"center"
prop=
"classId"
/>
<!--
<el-table-column
label=
"班级id"
align=
"center"
prop=
"classId"
/>
<el-table-column
label=
"总分:100,150"
align=
"center"
prop=
"totalPoints"
/>
<el-table-column
label=
"总分:100,150"
align=
"center"
prop=
"totalPoints"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
...
@@ -106,7 +106,7 @@
...
@@ -106,7 +106,7 @@
<el-input
v-model=
"form.testName"
placeholder=
"请输入试卷名称"
/>
<el-input
v-model=
"form.testName"
placeholder=
"请输入试卷名称"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"题库类别"
prop=
"categoryId"
>
<el-form-item
label=
"题库类别"
prop=
"categoryId"
>
<el-select
v-model=
"form.categoryId"
placeholder=
"请选择题库类别"
>
<el-select
v-model=
"form.categoryId"
placeholder=
"请选择题库类别"
>
<el-option
v-for=
"item in category"
:key=
"item.id"
:label=
"item.typeValue"
:value=
"item.id"
>
<el-option
v-for=
"item in category"
:key=
"item.id"
:label=
"item.typeValue"
:value=
"item.id"
>
</el-option>
</el-option>
</el-select>
</el-select>
...
@@ -142,26 +142,61 @@
...
@@ -142,26 +142,61 @@
<!-- 详情对话框 -->
<!-- 详情对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"opens"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"opens"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rulest"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rulest"
label-width=
"80px"
>
<el-form-item
label=
"题目"
prop=
"
userId
"
>
<el-form-item
label=
"题目"
prop=
"
topic
"
>
<editor
v-model=
"form.
optionContent"
:min-height=
"192"
:iconType=
"['image']
"
/>
<editor
v-model=
"form.
topic"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true
"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"答案"
prop=
"testPaperId"
>
<
template
v-if=
"[1, '1', 3, '3'].includes(form.species)"
>
<el-input
type=
"textarea"
:rows=
"2"
placeholder=
"请输入内容"
v-model=
"textarea"
>
<el-form-item
label=
"答案"
prop=
"rightAnswers"
>
</el-input>
<editor
v-model=
"form.rightAnswers"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"标准答案"
prop=
"rightAnswers"
>
<el-form-item
label=
"答案图片"
prop=
"rightAnswersPic"
>
<el-radio-group
v-model=
"rightAnswers"
>
<imageUpload
:limit=
"9"
v-model=
"form.rightAnswersPic"
:disabled=
"true"
/>
<el-radio
:label=
"index"
v-for=
"(item, index) in checkList"
:key=
"index"
>
{{ index | filterType(checkList)
</el-form-item>
}}
</el-radio>
</
template
>
</el-radio-group>
<
template
v-if=
"[2, '2'].includes(form.species)"
>
</el-form-item>
<el-form-item
label=
"选项"
prop=
"options"
>
<el-form-item
label=
"图片"
prop=
"remark"
>
<div
class=
"app-container-form-check"
>
<el-image
style=
"width: 100px; height: 100px"
:src=
"url"
:preview-src-list=
"srcList"
>
<i
class=
"el-icon-circle-plus-outline app-container-form-check-add"
</el-image>
v-if=
"!form.options || !form.options.length"
@
click=
"clickAddCheckList"
></i>
<div
v-for=
"(item, index) in form.options"
:key=
"index"
class=
"app-container-form-check-item"
>
<span
class=
"app-container-form-check-item-type"
>
{{
index
|
filterType
(
form
.
options
)
}}
</span><i
v-if=
"index + 1 === form.options.length"
class=
"el-icon-circle-plus-outline app-container-form-check-item-add"
></i>
<i
class=
"el-icon-remove-outline app-container-form-check-item-del"
v-else
></i>
<editor
v-model=
"item.optionContent"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</div>
</div>
</el-form-item>
<el-form-item
label=
"标准答案"
prop=
"rightAnswers"
v-if=
"form.options && form.options.length"
>
<el-radio-group
v-model=
"form.rightAnswers"
>
<el-radio
:label=
"item.optionTag"
v-for=
"(item, index) in form.options"
:key=
"index"
disabled
>
{{
index
|
filterType
(
form
.
options
)
}}
</el-radio>
</el-radio-group>
</el-form-item>
</
template
>
<el-form-item
label=
"典例精讲"
prop=
"type"
>
<el-switch
@
change=
"changeExplain"
v-model=
"form.type"
active-color=
"#409eff"
disabled
>
</el-switch>
</el-form-item>
</el-form-item>
<
template
v-if=
"form.type"
>
<el-form-item
label=
"解答过程"
prop=
"resolveCourse"
>
<editor
v-model=
"form.resolveCourse"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</el-form-item>
<el-form-item
label=
"解答视频"
prop=
"resolveVideo"
>
<fileUpload
v-model=
"form.resolveVideo"
:limit=
"1"
ref=
"refFileupload"
:value=
"form.resolveVideo"
:disabled=
"true"
:fileSize=
"1024"
:fileType=
"['mp4', 'mp3']"
/>
</el-form-item>
</
template
>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;"
>
<div
class=
"btnColor"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"submitForm"
>
下 一 题
</el-button>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;"
v-if=
"query.pageNum > 1 && pages > 1"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"justQuestion(form)"
>
上 一 题
</el-button>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;margin-left: 20px;"
v-if=
"query.pageNum != pages"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"nextQuestion(form)"
>
下 一 题
</el-button>
</div>
</div>
</div>
</el-dialog>
</el-dialog>
</div>
</div>
...
@@ -188,6 +223,7 @@ export default {
...
@@ -188,6 +223,7 @@ export default {
textarea
:
''
,
textarea
:
''
,
markSiz
:
1
,
markSiz
:
1
,
value
:
''
,
value
:
''
,
testPaperId
:
''
,
// 按钮loading
// 按钮loading
buttonLoading
:
false
,
buttonLoading
:
false
,
// 遮罩层
// 遮罩层
...
@@ -220,7 +256,12 @@ export default {
...
@@ -220,7 +256,12 @@ export default {
totalPoints
:
undefined
,
totalPoints
:
undefined
,
status
:
undefined
,
status
:
undefined
,
},
},
rulest
:{},
query
:
{
pageNum
:
1
,
pageSize
:
1
,
},
pages
:
0
,
// 总页码
rulest
:
{},
// 表单参数
// 表单参数
form
:
{},
form
:
{},
// 表单校验
// 表单校验
...
@@ -287,7 +328,26 @@ export default {
...
@@ -287,7 +328,26 @@ export default {
},
},
methods
:
{
methods
:
{
nextQuestion
(
val
)
{
if
(
this
.
query
.
pageNum
<
this
.
pages
)
{
this
.
query
.
pageNum
++
this
.
handleUpdate
()
}
},
justQuestion
(
val
)
{
this
.
query
.
pageNum
--
this
.
handleUpdate
()
},
// 典例精讲
changeExplain
(
e
)
{
let
self
=
this
;
if
(
e
)
{
self
.
$refs
.
form
.
clearValidate
();
self
.
initleRules
();
self
.
isExplan
(
e
);
self
.
isSpec
(
self
.
form
.
species
);
}
},
//题库类别
//题库类别
questionType
()
{
questionType
()
{
questionType
({
pageSize
:
9999
,
pageNum
:
1
}).
then
((
res
)
=>
{
questionType
({
pageSize
:
9999
,
pageNum
:
1
}).
then
((
res
)
=>
{
...
@@ -333,8 +393,8 @@ export default {
...
@@ -333,8 +393,8 @@ export default {
this
.
getList
();
this
.
getList
();
},
},
// 查看试卷
// 查看试卷
clickView
(){
clickView
()
{
this
.
opens
=
true
this
.
opens
=
true
},
},
/** 重置按钮操作 */
/** 重置按钮操作 */
resetQuery
()
{
resetQuery
()
{
...
@@ -354,25 +414,47 @@ export default {
...
@@ -354,25 +414,47 @@ export default {
this
.
title
=
"添加试卷"
;
this
.
title
=
"添加试卷"
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$refs
[
'refSelect'
].
value
=
null
this
.
$refs
[
'refSelect'
].
value
=
null
},
300
)
},
300
)
},
},
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
)
{
if
(
row
)
{
this
.
query
.
pageNum
=
1
this
.
testPaperId
=
row
.
id
}
this
.
loading
=
true
;
this
.
loading
=
true
;
this
.
reset
();
this
.
reset
();
const
id
=
row
.
id
||
this
.
ids
// const id = row.id || this.ids
getTestPaper
(
id
).
then
(
response
=>
{
let
params
=
{
...
this
.
query
,
testPaperId
:
this
.
testPaperId
}
getTestPaper
(
params
).
then
(
response
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
this
.
form
=
response
.
data
;
this
.
form
=
response
.
rows
[
0
];
if
(
this
.
form
.
type
==
1
)
{
this
.
form
.
type
=
true
}
else
if
(
this
.
form
.
type
==
0
)
{
this
.
form
.
type
=
false
}
if
(
this
.
form
.
resolveVideo
)
{
let
brr
=
[];
brr
.
push
({
url
:
this
.
form
.
resolveVideo
,
name
:
this
.
form
.
resolveVideoName
})
this
.
form
.
resolveVideo
=
brr
}
this
.
opens
=
true
;
this
.
opens
=
true
;
this
.
title
=
"查看试卷"
;
this
.
title
=
"查看试卷"
;
this
.
pages
=
response
.
pages
});
});
},
},
/** 提交按钮 */
/** 提交按钮 */
submitForm
()
{
submitForm
()
{
// this.form.lassId = this.$refs['refSelect'].value
// this.form.lassId = this.$refs['refSelect'].value
this
.
$set
(
this
.
form
,
'classId'
,
this
.
$refs
[
'refSelect'
].
value
)
this
.
$set
(
this
.
form
,
'classId'
,
this
.
$refs
[
'refSelect'
].
value
)
console
.
log
(
this
.
form
,
'this.form========'
)
console
.
log
(
this
.
form
,
'this.form========'
)
if
(
this
.
markSiz
==
1
)
{
if
(
this
.
markSiz
==
1
)
{
this
.
form
.
totalPoints
=
100
this
.
form
.
totalPoints
=
100
}
else
{
}
else
{
...
@@ -426,6 +508,111 @@ export default {
...
@@ -426,6 +508,111 @@ export default {
};
};
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.btnColor
{
display
:
flex
;
}
.app-container
{
&-list
{
padding
:
20px
40px
;
display
:
flex
;
flex-wrap
:
wrap
;
//
justify-content
:
space-between
;
&-item
{
padding
:
15px
20px
;
width
:
calc
(
33%
-
40px
);
border-radius
:
5px
;
background-color
:
#f1efef
;
margin-bottom
:
20px
;
margin-right
:
10px
;
&-title
{
font-size
:
18px
;
margin-bottom
:
10px
;
}
&
-html
{
font-size
:
16px
;
margin-bottom
:
20px
;
word-break
:
break-all
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
3
;
/* 超出几行省略 */
overflow
:
hidden
;
}
&
-footer
{
display
:
flex
;
justify-content
:
right
;
button
{
background
:
transparent
;
border
:
none
;
}
button
::after
{
border
:
none
;
}
}
}
//
&
-item
:last-child
{
//
margin-bottom
:
0px
;
//
}
}
&
-form
{
height
:
60vh
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
&-check
{
&-add
{
font-size
:
30px
;
color
:
#409eff
;
cursor
:
pointer
;
}
&
-item
{
margin-bottom
:
12px
;
&-type
{
display
:
inline-block
;
padding
:
8px
15px
;
border
:
1px
solid
#eeecec
;
font-size
:
16px
;
line-height
:
16px
;
border-radius
:
5px
;
margin
:
0px
12px
15px
0px
;
}
&
-add
,
&
-del
{
font-size
:
25px
;
cursor
:
pointer
;
}
&
-add
{
color
:
#409eff
;
}
&
-del
{
color
:
#f56c6c
;
}
}
&
-item
:last-child
{
margin-bottom
:
0
rpx
;
}
}
}
}
.mark
{
.mark
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-around
;
justify-content
:
space-around
;
...
...
src/views/school-paper/testPaperRecord/components/treeselect.vue
0 → 100644
View file @
ae1b32f4
<
template
>
<!--
<div
class=
"main"
>
<div
class=
"tree"
>
-->
<Treeselect
v-model=
"value"
:options=
"options"
:placeholder=
"'请选择人员'"
:multiple=
"multiple"
@
input=
"treeSelectInput"
@
select=
"treeSelectChange"
@
deselect=
"treeSelectDeselect"
@
search-change=
"treeSelectSearch"
@
open=
"treeSelectOpen"
@
close=
"treeSelectClose"
/>
<!--
</div>
</div>
-->
</
template
>
<
script
>
import
Treeselect
from
"@riophae/vue-treeselect"
;
import
"@riophae/vue-treeselect/dist/vue-treeselect.css"
;
import
{
listUser
,
getUser
,
delUser
,
addUser
,
updateUser
,
resetUserPwd
,
changeUserStatus
,
deptTreeSelect
}
from
"@/api/system/user"
;
// import treeData from './data/tree'
export
default
{
data
()
{
return
{
value
:
null
,
options
:
[]
}
},
props
:{
multiple
:{
type
:
false
}
},
components
:
{
Treeselect
},
mounted
(){
// 延迟模拟请求数据
setTimeout
(()
=>
{
// this.options = treeData
// this.value = [ "1682295245318119426", "1682295184152584194"] // 测试回显操作
},
300
)
this
.
getDeptTree
()
},
methods
:{
/** 查询部门下拉树结构 */
getDeptTree
()
{
deptTreeSelect
().
then
(
response
=>
{
this
.
options
=
response
.
data
;
});
},
// 选中触发(第一次回显的时候会触发,清除值的时候会触发, value值为undefined) input事件用于v-model双向绑定组件更新父组件值
treeSelectInput
(
value
,
instanceId
)
{
console
.
log
(
value
,
'input事件'
)
console
.
log
(
this
.
value
,
'this.value -- input'
)
// 这个不需要 延迟
},
// 选中触发(清除值的时候不会触发)
treeSelectChange
(
raw
,
instanceId
)
{
console
.
log
(
raw
,
'当前的对象'
)
let
self
=
this
setTimeout
(()
=>
{
// 如果用到this.value 需要setTimeout延迟一下拿到最新的值
console
.
log
(
this
.
value
,
'this.value -- select'
)
if
(
!
this
.
multiple
)
{
if
(
raw
.
children
==
undefined
)
{
}
else
{
if
(
self
.
value
==
raw
.
id
)
{
self
.
value
=
null
}
}
}
})
},
// 移除选项时触发 当设置multiple为true时生效 raw为当前移除的对象
treeSelectDeselect
(
raw
,
instanceId
)
{
console
.
log
(
raw
,
'deselect-->>'
)
},
// 搜索
treeSelectSearch
(
searchQuery
,
instanceId
)
{
console
.
log
(
searchQuery
,
'当前搜索的值'
)
},
// 展开触发
treeSelectOpen
(
instanceId
)
{
console
.
log
(
'展开了'
)
},
// 关闭触发
treeSelectClose
(
value
,
instanceId
)
{
console
.
log
(
value
,
'当前的value值'
)
},
// 字段默认 id label 用于规范化数据源
tenantIdnormalizer
(
node
,
instanceId
)
{
if
(
node
.
children
&&
!
node
.
children
.
length
)
{
delete
node
.
children
}
return
{
id
:
node
.
id
,
label
:
node
.
title
,
children
:
node
.
children
}
}
}
}
</
script
>
<
style
scoped
>
.main
{
width
:
100%
;
height
:
100%
;
padding
:
60px
0
0
200px
;
}
.main
.tree
{
width
:
240px
;
height
:
40px
;
}
::v-deep
.vue-treeselect__label
{
color
:
#606266
;
}
</
style
>
\ No newline at end of file
src/views/school-paper/testPaperRecord/index.vue
View file @
ae1b32f4
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"68px"
>
<el-form-item
label=
"审批阅卷"
prop=
"testName"
>
<el-col
:span=
"6"
>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
:disabled=
"disabled"
/>
<el-form-item
label=
"审批阅卷"
prop=
"testName"
label-width=
"100px"
>
</el-form-item>
<el-input
v-model=
"queryParams.testName"
placeholder=
"请输入试卷名称搜索"
clearable
:disabled=
"disabled"
/>
<el-form-item
label=
"班级"
prop=
"phaseId"
>
</el-form-item>
<el-select
v-model=
"queryParams.phaseId"
placeholder=
"请选择班级"
>
</el-col>
<el-option
v-for=
"item in PhaseList"
:key=
"item.deptId"
:label=
"item.deptName"
:value=
"item.deptId"
>
</el-option>
<el-col
:span=
"6"
>
</el-select>
<el-form-item
label=
"班级"
prop=
"classId"
>
</el-form-item>
<div
style=
"width: 60%;"
>
<treeselect
ref=
"refSelect"
:multiple=
"multiple"
:disabled=
"disabled"
/>
</div>
</el-form-item>
</el-col>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
搜索
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
>
重置
</el-button>
...
@@ -68,12 +72,12 @@
...
@@ -68,12 +72,12 @@
<el-table-column
label=
"主键id"
align=
"center"
prop=
"id"
v-if=
"true"
/>
-->
<el-table-column
label=
"主键id"
align=
"center"
prop=
"id"
v-if=
"true"
/>
-->
<el-table-column
label=
"试卷名称"
prop=
"testName"
/>
<el-table-column
label=
"试卷名称"
prop=
"testName"
/>
<el-table-column
label=
"满分"
prop=
"totalPoints"
/>
<el-table-column
label=
"满分"
prop=
"totalPoints"
/>
<el-table-column
label=
"班级"
prop=
"
classId
"
/>
<el-table-column
label=
"班级"
prop=
"
phaseClass
"
/>
<!--
<el-table-column
label=
"总得分"
align=
"center"
prop=
"totalPoints"
/>
<!--
<el-table-column
label=
"总得分"
align=
"center"
prop=
"totalPoints"
/>
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
-->
<el-table-column
label=
"备注"
align=
"center"
prop=
"remark"
/>
-->
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"medium"
@
click=
"examination(
1
)"
>
批卷
</el-button>
<el-button
type=
"primary"
size=
"medium"
@
click=
"examination(
scope.row
)"
>
批卷
</el-button>
<!--
<el-button
<!--
<el-button
size=
"mini"
size=
"mini"
...
@@ -89,15 +93,20 @@
...
@@ -89,15 +93,20 @@
@
selection-change=
"handleSelectionChange"
>
@
selection-change=
"handleSelectionChange"
>
<!-- <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键id" align="center" prop="id" v-if="true"/> -->
<el-table-column label="主键id" align="center" prop="id" v-if="true"/> -->
<el-table-column
label=
"同学名称"
prop=
"
userId
"
/>
<el-table-column
label=
"同学名称"
prop=
"
nickName
"
/>
<el-table-column
label=
"班级"
prop=
"
classId
"
/>
<el-table-column
label=
"班级"
prop=
"
phaseClass
"
/>
<el-table-column
label=
"得分"
prop=
"
statu
s"
/>
<el-table-column
label=
"得分"
prop=
"
totalPoint
s"
/>
<!-- <el-table-column label="总得分" align="center" prop="totalPoints" />
<!-- <el-table-column label="总得分" align="center" prop="totalPoints" />
<el-table-column label="备注" align="center" prop="remark" /> -->
<el-table-column label="备注" align="center" prop="remark" /> -->
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"medium"
@
click=
"examination(2)"
>
批卷
</el-button>
<el-button
v-if=
"scope.row.status == 3"
type=
"success"
size=
"medium"
@
click=
"handleUpdate(scope.row, 2)"
>
已批卷
</el-button>
<el-button
v-else
type=
"primary"
size=
"medium"
@
click=
"handleUpdate(scope.row, 1)"
>
批卷
</el-button>
</
template
>
</
template
>
<!-- <template slot-scope="scope" v-if="scope.row.status == 1 || scope.row.status == 2">
</template> -->
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
@@ -107,39 +116,108 @@
...
@@ -107,39 +116,108 @@
<!-- 添加或修改答题记录对话框 -->
<!-- 添加或修改答题记录对话框 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"open"
append-to-body
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"题目"
prop=
"userId"
>
<
!-- <
el-form-item label="题目" prop="userId">
<editor
v-model=
"form.
optionContent
"
:min-height=
"192"
:iconType=
"['image']"
/>
<editor v-model="form.
topic
" :min-height="192" :iconType="['image']" />
</el-form-item>
</el-form-item>
<el-form-item label="答案" prop="testPaperId">
<el-form-item label="答案" prop="testPaperId">
<el-input
type=
"textarea"
:rows=
"2"
placeholder=
"请输入内容"
v-model=
"
textarea
"
>
<el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="
form.answer
">
</el-input>
</el-input>
</el-form-item>
</el-form-item>
<el-form-item label="图片" prop="remark">
<el-form-item label="图片" prop="remark">
<el-image
style=
"width: 100px; height: 100px"
:src=
"
url"
:preview-src-list=
"srcList
"
>
<el-image style="width: 100px; height: 100px" :src="
form.answerPic
">
</el-image>
</el-image>
</el-form-item>
</el-form-item>
<el-form-item label="分数" prop="totalPoints">
<el-form-item label="分数" prop="totalPoints">
<el-input
v-model=
"form.
totalPoints
"
placeholder=
"请输入总得分"
/>
<el-input v-model="form.
score
" placeholder="请输入总得分" />
</el-form-item>
</el-form-item>
<el-form-item label="优秀答案" prop="totalPoints">
<el-form-item label="优秀答案" prop="totalPoints">
<el-switch
v-model=
"value"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
>
<el-switch v-model="form.good" active-color="#13ce66" inactive-color="#ff4949">
</el-switch>
</el-form-item> -->
<!-- <el-col :span="18"> -->
<el-form-item
label=
"题目"
prop=
"topic"
>
<editor
v-model=
"form.topic"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</el-form-item>
<
template
v-if=
"[1, '1', 3, '3'].includes(form.species)"
>
<el-form-item
label=
"答案"
prop=
"answer"
>
<editor
v-model=
"form.answer"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</el-form-item>
<el-form-item
label=
"答案图片"
prop=
"correctAnswerPic"
>
<imageUpload
:limit=
"9"
v-model=
"form.correctAnswerPic"
:disabled=
"true"
/>
</el-form-item>
</
template
>
<
template
v-if=
"[2, '2'].includes(form.species)"
>
<el-form-item
label=
"选项"
prop=
"options"
>
<div
class=
"app-container-form-check"
>
<i
class=
"el-icon-circle-plus-outline app-container-form-check-add"
v-if=
"!form.options || !form.options.length"
@
click=
"clickAddCheckList"
></i>
<div
v-for=
"(item, index) in form.options"
:key=
"index"
class=
"app-container-form-check-item"
>
<span
class=
"app-container-form-check-item-type"
>
{{
index
|
filterType
(
form
.
options
)
}}
</span><i
v-if=
"index + 1 === form.options.length"
class=
"el-icon-circle-plus-outline app-container-form-check-item-add"
></i>
<i
class=
"el-icon-remove-outline app-container-form-check-item-del"
v-else
></i>
<editor
v-model=
"item.optionContent"
:min-height=
"192"
:iconType=
"['image']"
:readOnly=
"true"
/>
</div>
</div>
</el-form-item>
<el-form-item
label=
"标准答案"
prop=
"correctAnswer"
v-if=
"form.options && form.options.length"
>
<el-radio-group
v-model=
"form.correctAnswer"
>
<el-radio
:label=
"item.optionTag"
v-for=
"(item, index) in form.options"
:key=
"index"
disabled
>
{{
index
|
filterType
(
form
.
options
)
}}
</el-radio>
</el-radio-group>
</el-form-item>
</
template
>
<!-- <el-form-item label="典例精讲" prop="type">
<el-switch @change="changeExplain" v-model="form.type" active-color="#409eff">
</el-switch>
</el-form-item>
<template v-if="form.type">
<el-form-item label="解答过程" prop="resolveCourse">
<editor v-model="form.resolveCourse" :min-height="192" :iconType="['image']" />
</el-form-item>
<el-form-item label="解答视频" prop="resolveVideo">
<fileUpload v-model="form.resolveVideo" :limit="1" ref="refFileupload" :value="form.resolveVideo"
:fileSize="1024" :fileType="['mp4', 'mp3']" />
</el-form-item>
</template> -->
<!-- </el-col> -->
<el-form-item
label=
"分数"
prop=
"score"
>
<el-input
v-model=
"form.score"
placeholder=
"请输入总得分"
:disabled=
"reviewed"
/>
</el-form-item>
<el-form-item
label=
"优秀答案"
prop=
"good"
>
<el-switch
v-model=
"form.good"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
:disabled=
"reviewed"
>
</el-switch>
</el-switch>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;"
>
<div
class=
"btnColor"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"submitForm"
>
下 一 题
</el-button>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;"
v-if=
"query.pageNum > 1 && pages > 1"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"justQuestion(form)"
>
上 一 题
</el-button>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;margin-left: 20px;"
v-if=
"query.pageNum != pages"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"nextQuestion(form)"
>
下 一 题
</el-button>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: left;margin-left: 20px;"
v-if=
"query.pageNum == pages && reviewed == false"
>
<el-button
:loading=
"buttonLoading"
type=
"primary"
@
click=
"clickComplete(form)"
>
批 卷 完 成
</el-button>
</div>
</div>
</div>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
listTestPaperRecord
,
getTestPaperRecord
,
delTestPaperRecord
,
addTestPaperRecord
,
updateTestPaperRecord
,
listgetClassList
}
from
"@/api/school-paper/testPaperRecord"
;
import
{
listTestPaperRecord
,
getTestPaperRecord
,
delTestPaperRecord
,
addTestPaperRecord
,
updateTestPaperRecord
,
listgetClassList
,
completeReadOver
}
from
"@/api/school-paper/testPaperRecord"
;
import
{
import
{
getPhaseList
getPhaseList
}
from
"@/api/school-paper/questionBank"
;
}
from
"@/api/school-paper/questionBank"
;
import
Treeselect
from
"./components/treeselect.vue"
export
default
{
export
default
{
name
:
"TestPaperRecord"
,
name
:
"TestPaperRecord"
,
components
:
{
Treeselect
},
data
()
{
data
()
{
return
{
return
{
url
:
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
,
url
:
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
,
...
@@ -147,26 +225,12 @@ export default {
...
@@ -147,26 +225,12 @@ export default {
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg'
,
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg'
,
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
],
],
disabled
:
false
,
textarea
:
''
,
disabled
:
false
,
reviewed
:
false
,
PhaseList
:
[],
// 阶段
PhaseList
:
[],
// 阶段
value
:
''
,
value
:
''
,
typePaper
:
1
,
typePaper
:
1
,
options
:
[{
value
:
'选项1'
,
label
:
'黄金糕'
},
{
value
:
'选项2'
,
label
:
'双皮奶'
},
{
value
:
'选项3'
,
label
:
'蚵仔煎'
},
{
value
:
'选项4'
,
label
:
'龙须面'
},
{
value
:
'选项5'
,
label
:
'北京烤鸭'
}],
// 按钮loading
// 按钮loading
buttonLoading
:
false
,
buttonLoading
:
false
,
// 遮罩层
// 遮罩层
...
@@ -176,7 +240,7 @@ export default {
...
@@ -176,7 +240,7 @@ export default {
// 非单个禁用
// 非单个禁用
single
:
true
,
single
:
true
,
// 非多个禁用
// 非多个禁用
multiple
:
tru
e
,
multiple
:
fals
e
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
true
,
showSearch
:
true
,
// 总条数
// 总条数
...
@@ -191,39 +255,132 @@ export default {
...
@@ -191,39 +255,132 @@ export default {
queryParams
:
{
queryParams
:
{
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
10
,
pageSize
:
10
,
phaseId
:
undefined
,
testName
:
undefined
,
testName
:
undefined
,
},
},
pages
:
0
,
// 总页码
query
:
{
pageNum
:
1
,
pageSize
:
1
,
},
classId
:
''
,
// 表单参数
// 表单参数
form
:
{},
form
:
{},
// 表单校验
// 表单校验
rules
:
{
rules
:
{
id
:
[
score
:
[
{
required
:
true
,
message
:
"主键id不能为空"
,
trigger
:
"blur"
}
],
userId
:
[
{
required
:
true
,
message
:
"用户id不能为空"
,
trigger
:
"blur"
}
],
testPaperId
:
[
{
required
:
true
,
message
:
"试卷id不能为空"
,
trigger
:
"blur"
}
],
status
:
[
{
required
:
true
,
message
:
"状态:0 批卷中,1 批卷完成不能为空"
,
trigger
:
"change"
}
],
totalPoints
:
[
{
required
:
true
,
message
:
"总得分不能为空"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"总得分不能为空"
,
trigger
:
"blur"
}
],
],
remark
:
[
// good
: [
{
required
:
true
,
message
:
"备注
不能为空"
,
trigger
:
"blur"
}
// { required: true, message: "用户id
不能为空", trigger: "blur" }
],
//
],
}
}
};
};
},
},
filters
:
{
filterType
(
val
,
list
)
{
if
(
val
>=
0
)
{
let
arr
=
[
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
,
"H"
,
"I"
,
"J"
,
"K"
,
"L"
,
"M"
,
"N"
,
"O"
,
"P"
,
"Q"
,
"R"
,
"S"
,
"T"
,
"U"
,
"V"
,
"W"
,
"X"
,
"Y"
,
"Z"
,
];
return
arr
[
val
];
}
else
{
return
val
;
}
},
},
created
()
{
created
()
{
this
.
getList
();
this
.
$nextTick
(()
=>
{
this
.
getList
();
})
this
.
questionType
()
this
.
questionType
()
},
},
methods
:
{
methods
:
{
justQuestion
(
val
)
{
this
.
query
.
pageNum
--
this
.
handleUpdate
(
val
)
},
nextQuestion
(
val
)
{
let
self
=
this
if
(
this
.
reviewed
==
false
)
{
this
.
$refs
[
"form"
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
self
.
query
.
pageNum
<
self
.
pages
)
{
self
.
query
.
pageNum
++
let
good
if
(
self
.
form
.
good
==
true
)
{
good
=
0
}
else
{
good
=
1
}
let
params
=
{
id
:
val
.
id
,
score
:
self
.
form
.
score
,
good
:
good
}
updateTestPaperRecord
(
params
).
then
(
response
=>
{
self
.
handleUpdate
(
val
)
})
}
}
});
}
else
{
if
(
self
.
query
.
pageNum
<
self
.
pages
)
{
self
.
query
.
pageNum
++
self
.
handleUpdate
(
val
)
}
}
},
clickComplete
()
{
completeReadOver
({
id
:
this
.
form
.
recordId
}).
then
((
res
)
=>
{
this
.
open
=
false
;
this
.
$modal
.
msgSuccess
(
"批卷完成"
);
this
.
getList
();
})
},
// 典例精讲
changeExplain
(
e
)
{
let
self
=
this
;
if
(
e
)
{
self
.
$refs
.
form
.
clearValidate
();
self
.
initleRules
();
self
.
isExplan
(
e
);
self
.
isSpec
(
self
.
form
.
species
);
}
},
// 选项
clickAddCheckList
()
{
if
(
this
.
form
.
options
&&
!
this
.
form
.
options
.
length
)
{
this
.
form
.
options
.
unshift
({
optionContent
:
""
,
});
}
},
// 阶段
// 阶段
questionType
()
{
questionType
()
{
getPhaseList
().
then
((
res
)
=>
{
getPhaseList
().
then
((
res
)
=>
{
...
@@ -232,28 +389,43 @@ export default {
...
@@ -232,28 +389,43 @@ export default {
},
},
// 批卷
// 批卷
examination
(
val
)
{
examination
(
val
)
{
if
(
val
==
1
)
{
if
(
val
)
{
listgetClassList
(
this
.
queryParams
).
then
(
response
=>
{
this
.
classId
=
val
.
classId
this
.
testPaperRecordList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
});
this
.
disabled
=
true
this
.
typePaper
=
2
}
else
if
(
val
==
2
)
{
this
.
reset
();
this
.
open
=
true
;
this
.
title
=
"正在批改 同学1 的(期中模考试卷1套)试卷"
;
}
}
},
// this.resetQuery()
/** 查询答题记录列表 */
// let classId = this.$refs['refSelect'].value
getList
()
{
// console.log(val,'val-------')
this
.
loading
=
true
;
let
params
=
{
listTestPaperRecord
(
this
.
queryParams
).
then
(
response
=>
{
...
this
.
queryParams
,
classId
:
this
.
classId
}
listgetClassList
(
params
).
then
(
response
=>
{
this
.
testPaperRecordList
=
response
.
rows
;
this
.
testPaperRecordList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
this
.
loading
=
false
;
});
});
this
.
disabled
=
true
this
.
$refs
[
'refSelect'
].
value
=
undefined
this
.
resetForm
(
"queryForm"
);
this
.
typePaper
=
2
},
/** 查询答题记录列表 */
getList
()
{
if
(
this
.
typePaper
==
2
)
{
this
.
examination
()
}
else
{
this
.
loading
=
true
;
let
classId
=
this
.
$refs
[
'refSelect'
].
value
?
this
.
$refs
[
'refSelect'
].
value
:
''
let
params
=
{
...
this
.
queryParams
,
classId
:
classId
}
listTestPaperRecord
(
params
).
then
(
response
=>
{
this
.
testPaperRecordList
=
response
.
rows
;
this
.
total
=
response
.
total
;
this
.
loading
=
false
;
});
}
},
},
// 取消按钮
// 取消按钮
cancel
()
{
cancel
()
{
...
@@ -263,16 +435,13 @@ export default {
...
@@ -263,16 +435,13 @@ export default {
// 表单重置
// 表单重置
reset
()
{
reset
()
{
this
.
form
=
{
this
.
form
=
{
id
:
undefined
,
topic
:
undefined
,
userId
:
undefined
,
answer
:
undefined
,
testPaperId
:
undefined
,
answerPic
:
undefined
,
status
:
undefined
,
score
:
undefined
,
totalPoints
:
undefined
,
goodsAnswers
:
undefined
,
remark
:
undefined
,
good
:
undefined
,
createTime
:
undefined
,
correctAnswer
:
undefined
createBy
:
undefined
,
updateTime
:
undefined
,
updateBy
:
undefined
};
};
this
.
resetForm
(
"form"
);
this
.
resetForm
(
"form"
);
},
},
...
@@ -283,6 +452,7 @@ export default {
...
@@ -283,6 +452,7 @@ export default {
},
},
/** 重置按钮操作 */
/** 重置按钮操作 */
resetQuery
()
{
resetQuery
()
{
this
.
$refs
[
'refSelect'
].
value
=
undefined
this
.
resetForm
(
"queryForm"
);
this
.
resetForm
(
"queryForm"
);
this
.
handleQuery
();
this
.
handleQuery
();
},
},
...
@@ -290,7 +460,7 @@ export default {
...
@@ -290,7 +460,7 @@ export default {
handleSelectionChange
(
selection
)
{
handleSelectionChange
(
selection
)
{
this
.
ids
=
selection
.
map
(
item
=>
item
.
id
)
this
.
ids
=
selection
.
map
(
item
=>
item
.
id
)
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
//
this.multiple = !selection.length
},
},
/** 新增按钮操作 */
/** 新增按钮操作 */
handleAdd
()
{
handleAdd
()
{
...
@@ -299,15 +469,44 @@ export default {
...
@@ -299,15 +469,44 @@ export default {
this
.
title
=
"添加答题记录"
;
this
.
title
=
"添加答题记录"
;
},
},
/** 修改按钮操作 */
/** 修改按钮操作 */
handleUpdate
(
row
)
{
handleUpdate
(
row
,
val
)
{
this
.
loading
=
true
;
let
titlesiz
=
'正在批改'
this
.
reset
();
if
(
val
==
1
)
{
const
id
=
row
.
id
||
this
.
ids
this
.
reviewed
=
false
getTestPaperRecord
(
id
).
then
(
response
=>
{
titlesiz
=
'正在批改'
this
.
loading
=
false
;
this
.
query
.
pageNum
=
1
this
.
form
=
response
.
data
;
}
else
if
(
val
==
2
)
{
this
.
open
=
true
;
this
.
reviewed
=
true
this
.
title
=
"修改答题记录"
;
titlesiz
=
'正在查看'
this
.
query
.
pageNum
=
1
}
let
self
=
this
self
.
loading
=
true
;
let
params
=
{
recordId
:
row
.
recordId
,
...
self
.
query
,
}
getTestPaperRecord
(
params
).
then
(
response
=>
{
self
.
loading
=
false
;
if
(
response
.
rows
.
length
&&
response
.
rows
)
{
self
.
$nextTick
(()
=>
{
self
.
form
=
response
.
rows
[
0
];
if
(
self
.
form
.
good
==
1
)
{
self
.
form
.
good
=
false
}
else
if
(
self
.
form
.
good
==
0
)
{
self
.
form
.
good
=
true
}
self
.
title
=
titlesiz
+
self
.
form
.
studentName
+
"的"
+
'('
+
self
.
form
.
testName
+
')'
+
'试卷'
;
// self.$set(self.form, 'rightAnswers', 3)
self
.
open
=
true
;
})
}
else
{
self
.
$modal
.
msgSuccess
(
"暂无数据"
);
}
self
.
pages
=
response
.
pages
// self.title = "正在批改 同学1 的(期中模考试卷1套)试卷";
});
});
},
},
/** 提交按钮 */
/** 提交按钮 */
...
@@ -352,10 +551,126 @@ export default {
...
@@ -352,10 +551,126 @@ export default {
},
},
/** 导出按钮操作 */
/** 导出按钮操作 */
handleExport
()
{
handleExport
()
{
let
classId
=
this
.
$refs
[
'refSelect'
].
value
this
.
download
(
'school-paper/testPaperRecord/export'
,
{
this
.
download
(
'school-paper/testPaperRecord/export'
,
{
...
this
.
queryParams
...
this
.
queryParams
,
classId
:
classId
},
`testPaperRecord_
${
new
Date
().
getTime
()}
.xlsx`
)
},
`testPaperRecord_
${
new
Date
().
getTime
()}
.xlsx`
)
}
}
}
}
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
.btnColor
{
display
:
flex
;
}
.app-container
{
&-list
{
padding
:
20px
40px
;
display
:
flex
;
flex-wrap
:
wrap
;
//
justify-content
:
space-between
;
&-item
{
padding
:
15px
20px
;
width
:
calc
(
33%
-
40px
);
border-radius
:
5px
;
background-color
:
#f1efef
;
margin-bottom
:
20px
;
margin-right
:
10px
;
&-title
{
font-size
:
18px
;
margin-bottom
:
10px
;
}
&
-html
{
font-size
:
16px
;
margin-bottom
:
20px
;
word-break
:
break-all
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
3
;
/* 超出几行省略 */
overflow
:
hidden
;
}
&
-footer
{
display
:
flex
;
justify-content
:
right
;
button
{
background
:
transparent
;
border
:
none
;
}
button
::after
{
border
:
none
;
}
}
}
//
&
-item
:last-child
{
//
margin-bottom
:
0px
;
//
}
}
&
-form
{
height
:
60vh
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
&-check
{
&-add
{
font-size
:
30px
;
color
:
#409eff
;
cursor
:
pointer
;
}
&
-item
{
margin-bottom
:
12px
;
&-type
{
display
:
inline-block
;
padding
:
8px
15px
;
border
:
1px
solid
#eeecec
;
font-size
:
16px
;
line-height
:
16px
;
border-radius
:
5px
;
margin
:
0px
12px
15px
0px
;
}
&
-add
,
&
-del
{
font-size
:
25px
;
cursor
:
pointer
;
}
&
-add
{
color
:
#409eff
;
}
&
-del
{
color
:
#f56c6c
;
}
}
&
-item
:last-child
{
margin-bottom
:
0
rpx
;
}
}
}
}
::v-deep
.el-form-item__content
{
width
:
100%
;
margin-left
:
0px
!important
;
}
::v-deep
.el-form-item
{
display
:
flex
}
</
style
>
\ No newline at end of file
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