Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
educationStu
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
向伟
educationStu
Commits
b328904e
Commit
b328904e
authored
Mar 09, 2022
by
zhengke
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
daf9ff75
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
667 additions
and
160 deletions
+667
-160
exam.js
src/api/exam.js
+24
-0
listen.vue
src/components/question/listen.vue
+454
-0
word.vue
src/components/question/word.vue
+13
-15
MyExam.vue
src/pages/exam/MyExam.vue
+4
-2
examStart.vue
src/pages/exam/examStart.vue
+172
-143
No files found.
src/api/exam.js
View file @
b328904e
...
@@ -109,6 +109,30 @@ export function GetQuestionWords(data) {
...
@@ -109,6 +109,30 @@ export function GetQuestionWords(data) {
})
})
}
}
/**
* 获取语法
* @param {JSON参数} data
*/
export
function
GetQuestionGrammar
(
data
)
{
return
request
({
url
:
'/Exam/GetQuestionGrammar'
,
method
:
'post'
,
data
})
}
/**
* 获取听力
* @param {JSON参数} data
*/
export
function
GetQuestionListening
(
data
)
{
return
request
({
url
:
'/Exam/GetQuestionListening'
,
method
:
'post'
,
data
})
}
/**
/**
* 点击答案提交答题
* 点击答案提交答题
* @param {JSON参数} data
* @param {JSON参数} data
...
...
src/components/question/listen.vue
0 → 100644
View file @
b328904e
This diff is collapsed.
Click to expand it.
src/components/question/word.vue
View file @
b328904e
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
</view>
</view>
<view
v-for=
"(item2, index2) in item1.QuestionContentObj"
:key=
"index2"
<view
v-for=
"(item2, index2) in item1.QuestionContentObj"
:key=
"index2"
class=
"flex item2 flex_start_center"
>
class=
"flex item2 flex_start_center"
>
<
template
v-if=
"item1.StundetAnswer
==''
"
>
<
template
v-if=
"item1.StundetAnswer
.length==0
"
>
<view
class=
"chooseNum"
@
click=
"change(item1, item2)"
>
{{
item2
.
ShowName
}}
<view
class=
"chooseNum"
@
click=
"change(item1, item2)"
>
{{
item2
.
ShowName
}}
</view>
</view>
<view
class=
"chooseName"
@
click=
"change(item1, item2)"
v-html=
"item2.Content"
></view>
<view
class=
"chooseName"
@
click=
"change(item1, item2)"
v-html=
"item2.Content"
></view>
...
@@ -35,17 +35,17 @@
...
@@ -35,17 +35,17 @@
</view>
</view>
</
template
>
</
template
>
</view>
</view>
<view
class=
"AnswerContent"
v-if=
"item1.StundetAnswer
!=''
"
>
<view
class=
"AnswerContent"
v-if=
"item1.StundetAnswer
.length>0
"
>
<view>
<view>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
style=
"color: #8c8a94"
>
正确答案:
</text>
<text
class=
"isTrueAnswer"
>
{{ item1.QuestionAnswerList[0] }}
</text>
,
<text
class=
"isTrueAnswer"
>
{{ item1.QuestionAnswerList[0] }}
</text>
,
<text>
您的答案是:
<text>
您的答案是:
<
template
v-if=
"item1.StundetAnswer
!= ''
"
>
<
template
v-if=
"item1.StundetAnswer
.length>0
"
>
<text
v-if=
"item1.StundetAnswer == item1.QuestionAnswerList[0]"
<text
v-if=
"item1.StundetAnswer
[0]
== item1.QuestionAnswerList[0]"
class=
"isTrueAnswer"
>
class=
"isTrueAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答正确
{{
item1
.
StundetAnswer
}}
,回答正确
</text>
</text>
<text
v-else
class=
"isNotAnswer"
>
{{
item1
.
StundetAnswer
}}
,回答错误
</text>
<text
v-else
class=
"isNotAnswer"
>
{{
item1
.
StundetAnswer
[
0
]
}}
,回答错误
</text>
</
template
>
</
template
>
<
template
v-else
>
<
template
v-else
>
<text>
未作答
</text>
<text>
未作答
</text>
...
@@ -98,9 +98,6 @@
...
@@ -98,9 +98,6 @@
let
UserInfo
=
uni
.
getStorageSync
(
'userInfo'
);
let
UserInfo
=
uni
.
getStorageSync
(
'userInfo'
);
watch
(()
=>
[...
props
.
paperData
],
(
val
)
=>
{
watch
(()
=>
[...
props
.
paperData
],
(
val
)
=>
{
val
.
forEach
(
x
=>
{
x
.
StundetAnswer
=
''
;
})
data
.
dataList
=
[...
data
.
dataList
,
...
val
];
data
.
dataList
=
[...
data
.
dataList
,
...
val
];
})
})
let
methods
=
{
let
methods
=
{
...
@@ -116,9 +113,9 @@
...
@@ -116,9 +113,9 @@
},
},
//点击选择答案
//点击选择答案
change
(
item1
,
item2
)
{
change
(
item1
,
item2
)
{
item1
.
StundetAnswer
=
item2
.
Name
;
item1
.
StundetAnswer
[
0
]
=
item2
.
Name
;
if
(
item1
.
QuestionAnswerList
&&
item1
.
QuestionAnswerList
.
length
>
0
)
{
if
(
item1
.
QuestionAnswerList
&&
item1
.
QuestionAnswerList
.
length
>
0
)
{
if
(
item1
.
StundetAnswer
==
item1
.
QuestionAnswerList
[
0
])
{
if
(
item1
.
StundetAnswer
[
0
]
==
item1
.
QuestionAnswerList
[
0
])
{
data
.
current
+=
1
;
data
.
current
+=
1
;
}
}
}
}
...
@@ -131,18 +128,19 @@
...
@@ -131,18 +128,19 @@
QuestionContent
:
item1
.
QuestionContentObj
,
QuestionContent
:
item1
.
QuestionContentObj
,
QuestionTypeId
:
item1
.
QuestionTypeId
,
QuestionTypeId
:
item1
.
QuestionTypeId
,
QuestionTypeKey
:
item1
.
QuestionTypeKey
,
QuestionTypeKey
:
item1
.
QuestionTypeKey
,
Answer
:
item1
.
StundetAnswer
,
StudentAnswer
:
item1
.
StundetAnswer
,
Answer
:
item1
.
Answer
,
AnswerParse
:
item1
.
AnswerParse
,
AnswerParse
:
item1
.
AnswerParse
,
LevelType
:
item1
.
LevelType
,
LevelType
:
item1
.
LevelType
,
IsAnswer
:
0
,
IsAnswer
:
0
,
IsWrong
:
0
IsWrong
:
0
}
}
if
(
item1
.
StundetAnswer
){
if
(
item1
.
StundetAnswer
.
length
>
0
){
msg
.
IsAnswer
=
1
;
msg
.
IsAnswer
=
1
;
}
else
{
}
else
{
msg
.
IsAnswer
=
0
;
msg
.
IsAnswer
=
0
;
}
}
if
(
item1
.
StundetAnswer
==
item1
.
QuestionAnswerList
[
0
]){
if
(
item1
.
StundetAnswer
[
0
]
==
item1
.
QuestionAnswerList
[
0
]){
msg
.
IsWrong
=
0
;
msg
.
IsWrong
=
0
;
}
else
{
}
else
{
msg
.
IsWrong
=
1
;
msg
.
IsWrong
=
1
;
...
@@ -157,8 +155,8 @@
...
@@ -157,8 +155,8 @@
},
},
//判断是否为正确答案
//判断是否为正确答案
getErrorAnswer
(
item1
,
Number
)
{
getErrorAnswer
(
item1
,
Number
)
{
if
(
item1
.
StundetAnswer
!=
item1
.
QuestionAnswerList
[
0
])
{
if
(
item1
.
StundetAnswer
[
0
]
!=
item1
.
QuestionAnswerList
[
0
])
{
if
(
item1
.
StundetAnswer
==
Number
)
{
if
(
item1
.
StundetAnswer
[
0
]
==
Number
)
{
return
true
return
true
}
}
}
}
...
...
src/pages/exam/MyExam.vue
View file @
b328904e
...
@@ -206,12 +206,12 @@
...
@@ -206,12 +206,12 @@
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
wordsFinishCount
}}
/
{{
TypeObj
.
wordsTotalCount
}}
</view>
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
wordsFinishCount
}}
/
{{
TypeObj
.
wordsTotalCount
}}
</view>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word1.png"
alt=
""
/>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word1.png"
alt=
""
/>
</view>
</view>
<view
class=
"Ques_Circle"
>
<view
class=
"Ques_Circle"
@
click=
"goExam(2)"
>
<view
class=
"Ques_Top"
>
语法
</view>
<view
class=
"Ques_Top"
>
语法
</view>
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
grammarFinishCount
}}
/
{{
TypeObj
.
grammarTotalCount
}}
</view>
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
grammarFinishCount
}}
/
{{
TypeObj
.
grammarTotalCount
}}
</view>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word2.png"
alt=
""
/>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word2.png"
alt=
""
/>
</view>
</view>
<view
class=
"Ques_Circle"
>
<view
class=
"Ques_Circle"
@
click=
"goExam(3)"
>
<view
class=
"Ques_Top"
>
听力
</view>
<view
class=
"Ques_Top"
>
听力
</view>
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
listeningFinishCount
}}
/
{{
TypeObj
.
listeningTotalCount
}}
</view>
<view
class=
"Ques_Num"
v-if=
"TypeObj"
>
{{
TypeObj
.
listeningFinishCount
}}
/
{{
TypeObj
.
listeningTotalCount
}}
</view>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word3.png"
alt=
""
/>
<img
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/educationStu/word3.png"
alt=
""
/>
...
@@ -369,6 +369,8 @@
...
@@ -369,6 +369,8 @@
},
},
async
onLoad
(
options
)
{
async
onLoad
(
options
)
{
await
this
.
getLevels
();
await
this
.
getLevels
();
},
async
onShow
(){
let
UserInfo
=
uni
.
getStorageSync
(
'userInfo'
);
let
UserInfo
=
uni
.
getStorageSync
(
'userInfo'
);
this
.
TypeMsg
.
StudentId
=
UserInfo
.
AccountId
;
this
.
TypeMsg
.
StudentId
=
UserInfo
.
AccountId
;
await
this
.
getLevelTotal
();
await
this
.
getLevelTotal
();
...
...
src/pages/exam/examStart.vue
View file @
b328904e
<
template
>
<
template
>
<view
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
:style=
"
{ 'padding-top': `${statusBarHeight}px` }">
<view
style=
"height: 100rpx"
></view>
<view
style=
"height: 100rpx"
></view>
<van-nav-bar
fixed
>
<van-nav-bar
fixed
>
<template
#
left
>
<template
#
left
>
<van-icon
name=
"cross"
size=
"32rpx"
@
click=
"goBack()"
/>
<van-icon
name=
"cross"
size=
"32rpx"
@
click=
"goBack()"
/>
</
template
>
</
template
>
<
template
#
title
>
<
template
#
title
>
</
template
>
</
template
>
</van-nav-bar>
</van-nav-bar>
<view
class=
"exam-con"
>
<view
class=
"exam-con"
>
<!-- 单词 -->
<!-- 单词 语法-->
<word
:paperData=
"dataList"
v-if=
"Type==1"
:Count=
"Count"
@
getAfter=
"getAfter()"
/>
<word
:paperData=
"dataList"
v-if=
"Type==1||Type==2"
:Count=
"Count"
@
getAfter=
"getAfter()"
/>
<!-- 阅读理解 -->
<!-- 听力 -->
<readingCompre
:paperData=
"dataList"
v-if=
"Type==4"
:Count=
"Count"
@
getAfter=
"getAfter()"
/>
<listen
:paperData=
"dataList"
v-if=
"Type==3"
:Count=
"Count"
@
getAfter=
"getAfter()"
/>
</view>
<!-- 阅读理解 -->
<van-toast
id=
"van-toast"
/>
<readingCompre
:paperData=
"dataList"
v-if=
"Type==4"
:Count=
"Count"
@
getAfter=
"getAfter()"
/>
</view>
</view>
</view>
</template>
</template>
<
script
>
<
script
>
import
{
import
{
ref
,
ref
,
reactive
,
reactive
,
toRefs
,
toRefs
,
toRef
,
toRef
,
getCurrentInstance
,
getCurrentInstance
,
watch
,
watch
,
computed
,
computed
,
onMounted
,
onMounted
,
}
from
"vue"
;
}
from
"vue"
;
import
{
GetQuestionReading
}
from
"../../api/exam"
;
import
{
import
{
changeNumToHan
}
from
"../../utils/index"
;
submitPaper
,
import
{
submitPaper
,
GetQuestionWords
}
from
"../../api/exam"
;
GetQuestionWords
,
GetQuestionGrammar
,
import
readingCompre
from
"../../components/question/readingCompre"
;
GetQuestionListening
,
import
word
from
"../../components/question/word.vue"
;
GetQuestionReading
,
export
default
{
}
from
"../../api/exam"
;
components
:
{
import
readingCompre
from
"../../components/question/readingCompre"
;
word
,
import
word
from
"../../components/question/word.vue"
;
readingCompre
import
listen
from
"../../components/question/listen.vue"
;
},
export
default
{
setup
(
props
,
context
)
{
components
:
{
let
{
refs
}
=
getCurrentInstance
();
word
,
console
.
log
(
refs
);
listen
,
let
data
=
reactive
({
readingCompre
statusBarHeight
:
0
,
},
dataList
:
[],
setup
(
props
,
context
)
{
changeIndex
:
0
,
//大题序号
let
{
isOperate
:
true
,
//考试状态 判断是考试还是查看答案
refs
isAutoTime
:
false
,
}
=
getCurrentInstance
();
examMsg
:{
console
.
log
(
refs
);
PageIndex
:
1
,
let
data
=
reactive
({
PageSize
:
20
,
statusBarHeight
:
0
,
BankType
:
1
,
dataList
:
[],
StartId
:
0
changeIndex
:
0
,
//大题序号
},
isOperate
:
true
,
//考试状态 判断是考试还是查看答案
Count
:
0
,
//题目总数
isAutoTime
:
false
,
Type
:
1
,
//1单词 2语法 3听力 4阅读
examMsg
:
{
});
PageIndex
:
1
,
let
methods
=
{
PageSize
:
20
,
changeNumToHan
,
BankType
:
1
,
//返回
StartId
:
0
goBack
(){
},
uni
.
navigateBack
();
Count
:
0
,
//题目总数
},
Type
:
1
,
//1单词 2语法 3听力 4阅读
jumpPage
()
{
});
uni
.
navigateTo
({
let
methods
=
{
url
:
"/pages/exam/examPaper"
,
//返回
});
goBack
()
{
},
uni
.
navigateBack
();
GetWords
(){
},
let
res
=
GetQuestionWords
(
data
.
examMsg
).
then
(
res
=>
{
jumpPage
()
{
if
(
res
)
{
uni
.
navigateTo
({
if
(
res
.
Code
==
1
)
{
url
:
"/pages/exam/examPaper"
,
this
.
dataList
=
res
.
Data
.
PageData
;
});
this
.
Count
=
res
.
Data
.
Count
;
},
}
//单词
}
GetWords
()
{
});
let
res
=
GetQuestionWords
(
data
.
examMsg
).
then
(
res
=>
{
},
if
(
res
.
Code
==
1
)
{
GetMyQuestionReading
()
{
this
.
dataList
=
res
.
Data
.
PageData
;
let
res
=
GetQuestionReading
(
data
.
examMsg
).
then
(
res
=>
{
this
.
Count
=
res
.
Data
.
Count
;
if
(
res
)
{
}
if
(
res
.
Code
==
1
)
{
});
console
.
log
(
res
,
'数据'
);
},
this
.
dataList
=
res
.
Data
.
PageData
;
//语法
this
.
Count
=
res
.
Data
.
Count
;
getGrammar
()
{
}
let
res
=
GetQuestionGrammar
(
data
.
examMsg
).
then
(
res
=>
{
}
if
(
res
.
Code
==
1
)
{
});
this
.
dataList
=
res
.
Data
.
PageData
;
},
this
.
Count
=
res
.
Data
.
Count
;
//往后追加题
}
getAfter
(){
});
data
.
examMsg
.
PageIndex
++
;
},
if
(
data
.
Type
==
1
){
//听力
this
.
GetWords
();
getListen
()
{
}
let
res
=
GetQuestionListening
(
data
.
examMsg
).
then
(
res
=>
{
if
(
data
.
Type
==
4
){
if
(
res
.
Code
==
1
)
{
this
.
GetMyQuestionReading
();
this
.
dataList
=
res
.
Data
.
PageData
;
}
this
.
Count
=
res
.
Data
.
Count
;
},
}
//获取答案改变后的数据
});
getAnswerChange
(
val
,
index
)
{
},
// data.peaperDetail.Paper.GroupList[index] = val;
//阅读
},
GetMyQuestionReading
()
{
//交卷
let
res
=
GetQuestionReading
(
data
.
examMsg
).
then
(
res
=>
{
async
savePaper
()
{
if
(
res
.
Code
==
1
)
{
console
.
log
(
res
,
'数据'
);
},
this
.
dataList
=
res
.
Data
.
PageData
;
};
this
.
Count
=
res
.
Data
.
Count
;
onMounted
(()
=>
{
}
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
});
});
},
return
{
//往后追加题
...
toRefs
(
data
),
getAfter
()
{
...
methods
,
data
.
examMsg
.
PageIndex
++
;
};
if
(
data
.
Type
==
1
)
{
},
this
.
GetWords
();
async
onLoad
(
options
)
{
}
console
.
log
(
options
,
'options'
);
if
(
data
.
Type
==
2
)
{
if
(
options
&&
options
.
Type
){
this
.
getGrammar
();
this
.
Type
=
options
.
Type
;
}
}
if
(
data
.
Type
==
3
){
if
(
options
&&
options
.
BankType
){
this
.
getListen
();
this
.
examMsg
.
BankType
=
options
.
BankType
;
}
}
if
(
data
.
Type
==
4
)
{
if
(
options
&&
options
.
StartId
){
this
.
GetMyQuestionReading
();
this
.
examMsg
.
StartId
=
options
.
StartId
;
}
}
},
//获取单词
};
if
(
this
.
Type
==
1
){
onMounted
(()
=>
{
this
.
GetWords
();
data
.
statusBarHeight
=
uni
.
getSystemInfoSync
().
statusBarHeight
;
}
});
if
(
this
.
Type
==
4
){
return
{
this
.
GetMyQuestionReading
();
...
toRefs
(
data
),
}
...
methods
,
},
};
};
},
async
onLoad
(
options
)
{
console
.
log
(
options
,
'options'
);
if
(
options
&&
options
.
Type
)
{
this
.
Type
=
options
.
Type
;
}
if
(
options
&&
options
.
BankType
)
{
this
.
examMsg
.
BankType
=
options
.
BankType
;
}
if
(
options
&&
options
.
StartId
)
{
this
.
examMsg
.
StartId
=
options
.
StartId
;
}
//获取单词
if
(
this
.
Type
==
1
)
{
this
.
GetWords
();
}
//获取语法
if
(
this
.
Type
==
2
)
{
this
.
getGrammar
();
}
//获取听力
if
(
this
.
Type
==
3
)
{
this
.
getListen
();
}
if
(
this
.
Type
==
4
)
{
this
.
GetMyQuestionReading
();
}
},
};
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.exam-con
{
.exam-con
{
box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
}
.answerSheet
{
.answerSheet
{
font-size
:
40
rpx
;
font-size
:
40
rpx
;
margin-left
:
30
rpx
;
margin-left
:
30
rpx
;
color
:
#000
;
color
:
#000
;
}
}
</
style
>
</
style
>
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