Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica_eagle_new
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
xiaoping.di
pica_eagle_new
提交
ff59bca6
提交
ff59bca6
编写于
10月 08, 2021
作者:
xiaoping.di
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
提交
上级
a66cacc4
变更
21
隐藏空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
613 行增加
和
3314 行删除
+613
-3314
package.json
package.json
+1
-0
exam.js
src/api/exam.js
+15
-0
item.vue
src/components/pica-radio/item.vue
+23
-22
examHistory.vue
src/components/stroke/examHistory.vue
+28
-66
examInfo.vue
src/components/stroke/examInfo.vue
+46
-33
livesExam
src/components/stroke/livesExam
+0
-633
localExamHistory.vue
src/components/stroke/localExamHistory.vue
+20
-61
picaHeader.vue
src/components/stroke/picaHeader.vue
+8
-52
projectContent-200422.vue
src/components/stroke/projectContent-200422.vue
+0
-726
projectContent.0131.vue
src/components/stroke/projectContent.0131.vue
+0
-729
projectContent.1.vue
src/components/stroke/projectContent.1.vue
+0
-727
projectContent.vue
src/components/stroke/projectContent.vue
+14
-5
index.js
src/router/index.js
+12
-2
exam_history.vue
src/views/exam/exam_history.vue
+71
-0
exam_wrong.vue
src/views/exam/exam_wrong.vue
+26
-28
index.vue
src/views/exam/index.vue
+193
-122
local_exam_history.vue
src/views/exam/local_exam_history.vue
+112
-0
index.vue
src/views/examResult/index.vue
+9
-7
index.js
src/views/stroke/index.js
+25
-98
index.vue
src/views/stroke/index.vue
+5
-3
yarn.lock
yarn.lock
+5
-0
未找到文件。
package.json
浏览文件 @
ff59bca6
...
...
@@ -27,6 +27,7 @@
"
lodash
"
:
"
^4.17.15
"
,
"
md5
"
:
"
^2.3.0
"
,
"
pre-commit
"
:
"
^1.2.2
"
,
"
storejs
"
:
"
^2.0.1
"
,
"
vant
"
:
"
^2.8.4
"
,
"
vconsole
"
:
"
^3.3.4
"
,
"
vue
"
:
"
^2.6.11
"
,
...
...
src/api/exam.js
浏览文件 @
ff59bca6
...
...
@@ -41,6 +41,13 @@ export const getCoopExamResultNews = async (param) => {
params
:
param
,
});
};
export
const
getCoopResultNewsLocal
=
async
(
param
)
=>
{
return
request
({
url
:
'app/exam/lives/results'
,
method
:
'GET'
,
params
:
param
,
});
};
// 当前用户的进行中问诊数据查询
export
const
getCoopExamWrongRecords
=
async
(
param
)
=>
{
return
request
({
...
...
@@ -55,3 +62,11 @@ export const getHotCache = async () => {
method
:
'get'
,
});
};
export
const
getAnwserExam
=
async
(
param
)
=>
{
return
request
({
url
:
'app/projectExam/apply'
,
method
:
'POST'
,
data
:
param
});
};
src/components/pica-radio/item.vue
浏览文件 @
ff59bca6
...
...
@@ -2,34 +2,38 @@
<!-- Created by Tw93 on 17/07/28. -->
<
template
>
<
!--
<van-cell
title=
"单元格"
value=
"内容"
/
>
<van-cell
title=
"单元格"
value=
"内容"
label=
"描述信息"
/>
-->
<div
:has-bottom-border=
"false
"
@
wxcCellClicked=
"wxcCellClicked
"
:accessible=
"true"
:aria-label=
"`$
{title},状态为${checked?'已选中':'未选中'},${disabled?'不可更改':''}`">
<img
:src=
"radioIcon
"
slot=
"label"
class=
"radio"
/>
<div
:style=
"
{color:color}
"
class="title-text"
slot="title">
{{
title
}}
</div>
<
div
>
<div
:has-bottom-border=
"false"
class=
"radio-all"
@
click=
"wxcCellClicked
"
:accessible=
"true
"
:aria-label=
"`$
{title},状态为${checked?'已选中':'未选中'},${disabled?'不可更改':''}`">
<img
:src=
"radioIcon"
slot=
"label
"
class=
"radio"
/>
<div
:style=
"
{color:color}"
class="title-text
"
slot="title">
{{
title
}}
</div>
</div>
</div>
</
template
>
<
style
scoped
>
.radio-all
{
display
:
flex
;
align-items
:
center
;
margin-top
:
10px
;
}
.radio
{
width
:
36px
;
height
:
36px
;
margin-right
:
20px
;
margin-top
:
5px
;
width
:
18px
;
height
:
18px
;
margin-right
:
10px
;
}
.title-text
{
font-size
:
32
px
;
font-size
:
18
px
;
color
:
rgb
(
102
,
102
,
102
);
overflow
:
visible
;
line-height
:
45
px
;
line-height
:
23
px
;
}
</
style
>
...
...
@@ -72,11 +76,10 @@
}),
computed
:
{
radioIcon
()
{
const
{
icon
,
disabled
,
checked
,
config
}
=
this
;
const
{
icon
,
checked
,
config
}
=
this
;
const
mergeIcon
=
icon
;
config
.
checkedIcon
&&
(
mergeIcon
[
0
]
=
config
.
checkedIcon
);
config
.
disabledIcon
&&
(
mergeIcon
[
1
]
=
config
.
disabledIcon
);
// return checked ? mergeIcon[disabled ? 1 : 0] : '';
return
checked
?
CHECKED
:
UNCHECKED
;
},
backgroundColor
()
{
...
...
@@ -85,8 +88,6 @@
},
color
()
{
const
{
disabled
,
checked
,
config
}
=
this
;
// let checkedColor = '#EE9900';
// let checkedColor = '#35cbca';
let
checkedColor
=
'rgb(42, 185, 165)'
;
config
.
checkedColor
&&
(
checkedColor
=
config
.
checkedColor
);
return
checked
&&
!
disabled
?
checkedColor
:
'#3D3D3D'
;
...
...
src/components/stroke/examHistory.vue
浏览文件 @
ff59bca6
...
...
@@ -110,48 +110,10 @@
},
methods
:
{
historyMore
()
{
if
(
this
.
$route
.
name
===
'exam_start'
)
{
// this.appBuryingPointEntrust({
// ...click_all_history,
// createdTime: new Date().getTime()
// });
}
else
if
(
this
.
$route
.
name
===
'exam_result'
)
{
// this.appBuryingPointEntrust({
// ...click_all_history_result,
// createdTime: new Date().getTime()
// });
}
this
.
$emit
(
'watchHistory'
,
'options'
);
// this.$router.push({
// path:'/exam_history',
// query:{
// examId: this.examId,
// examType: this.$route.jquery.examType
// }
// })
},
goExamError
(
obj
)
{
if
(
obj
.
wrongNo
>
0
)
{
if
(
this
.
$route
.
name
===
'exam_start'
)
{
// this.appBuryingPointEntrust({
// ...click_check_wrong_collection,
// createdTime: new Date().getTime(),
// labelvalue:this.exam.name
// });
}
else
if
(
this
.
$route
.
name
===
'exam_history'
)
{
// this.appBuryingPointEntrust({
// ...click_check_wrong_collection_history,
// createdTime: new Date().getTime(),
// labelvalue:obj.name
// });
}
else
if
(
this
.
$route
.
name
===
'exam_result'
)
{
// this.appBuryingPointEntrust({
// ...click_down_wrong_collection,
// createdTime: new Date().getTime(),
// labelvalue:this.exam.name
// });
}
if
(
obj
.
wrongNo
>
0
)
{
this
.
$router
.
push
({
path
:
'/exam-wrong'
,
query
:
{
...
...
@@ -172,48 +134,47 @@
justify-content
:
center
;
align-items
:
center
;
background-color
:
#ffffff
;
padding-top
:
2
0px
;
padding-top
:
1
0px
;
}
.history_title
{
flex-direction
:
row
;
padding-left
:
30px
;
padding-right
:
30px
;
padding-top
:
22px
;
padding-bottom
:
30px
;
padding
:
11px
15px
15px
15px
;
justify-content
:
space-between
;
}
.history_title_text
{
font-size
:
32
px
;
font-size
:
16
px
;
/*font-weight:600;*/
}
.history_title_right
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
.history_title_total
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
}
.history_title_img
{
height
:
30
px
;
width
:
30
px
;
height
:
15
px
;
width
:
15
px
;
}
.history_items
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
padding-left
:
30px
;
padding-right
:
30px
;
height
:
75px
;
padding
:
0
15px
;
height
:
auto
;
}
.history_item_time
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
flex
:
5
;
/* flex:5; */
}
.history_item_result
{
font-size
:
28
px
;
flex
:
4
;
font-size
:
14
px
;
/* flex:4; */
}
.color-success
{
color
:
rgba
(
42
,
185
,
165
,
1
);
...
...
@@ -222,16 +183,17 @@
color
:
rgba
(
255
,
114
,
114
,
1
);
}
.history_item_info
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
flex
:
4
;
padding-left
:
10
px
;
padding-left
:
5
px
;
}
.flex-8
{
flex
:
8
;
}
.history_item_right
{
display
:
flex
;
flex-direction
:
row
;
flex
:
5
;
justify-content
:
center
;
...
...
@@ -240,22 +202,21 @@
line-height
:
30px
;
}
.history_item_seemore
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
padding-right
:
4px
;
padding-left
:
22px
;
padding-left
:
6px
;
}
.history_item_right_img
{
width
:
30
px
;
height
:
30
px
;
width
:
15
px
;
height
:
15
px
;
}
.history_item_radio
{
width
:
16
px
;
height
:
16
px
;
margin-top
:
10
px
;
width
:
8
px
;
height
:
8
px
;
margin-top
:
5
px
;
}
.history_item_radio_bottom
{
margin-top
:
8
px
;
margin-top
:
5
px
;
width
:
2px
;
height
:
45px
;
background-color
:
rgba
(
222
,
222
,
222
,
1
)
...
...
@@ -264,5 +225,6 @@
align-items
:
center
;
justify-content
:
space-between
;
flex
:
2
;
margin-left
:
5px
;
}
</
style
>
src/components/stroke/examInfo.vue
浏览文件 @
ff59bca6
...
...
@@ -146,9 +146,8 @@
// ...click_mid_wrong_collection,
// createdTime: new Date().getTime()
// });
this
.
$router
.
push
({
path
:
'/exam
_
wrong'
,
path
:
'/exam
-
wrong'
,
query
:
{
answerResultId
:
obj
.
answerResultId
,
examType
:
this
.
$route
.
query
.
examType
...
...
@@ -164,7 +163,7 @@
const
endDate
=
new
Date
(
this
.
options
.
endDate
);
const
date
=
new
Date
();
if
(
date
>
endDate
)
{
this
.
showExamFinishedTip
=
true
;
this
.
showExamFinishedTip
=
true
;
this
.
$dialog
.
alert
({
title
:
''
,
message
:
"考试已结束"
,
...
...
@@ -196,7 +195,10 @@
// createdTime: new Date().getTime()
// });
if
(
this
.
examType
==
'common'
)
{
weex
.
requireModule
(
'CourseModule'
).
goBack
(
2
);
this
.
$router
.
push
({
path
:
'/stoke'
});
//weex.requireModule('CourseModule').goBack(2);
}
else
{
this
.
$router
.
push
({
path
:
'/'
...
...
@@ -225,81 +227,92 @@
.container
{
justify-content
:
center
;
align-items
:
center
;
margin-bottom
:
2
0px
;
padding-bottom
:
1
0px
;
background-color
:
#ffffff
;
height
:
798px
;
width
:
750px
;
height
:
auto
;
width
:
100%
;
}
.result_content
{
justify-content
:
center
;
align-items
:
center
;
background-color
:
#ffffff
;
padding-top
:
100px
;
padding-left
:
30px
;
padding-right
:
30px
;
padding
:
25px
7px
0
7px
;
}
.result_image
{
width
:
240px
;
height
:
240px
;
width
:
120px
;
height
:
120px
;
display
:
block
;
margin
:
0
auto
;
}
.exam_name
{
margin-top
:
40px
;
margin-bottom
:
30px
;
margin-top
:
20px
;
margin-bottom
:
15px
;
margin
:
0
auto
;
}
.exam_name_text
{
font-size
:
34
px
;
font-size
:
17
px
;
color
:
rgba
(
51
,
51
,
51
,
1
);
font-weight
:
700
;
font-weight
:
600
;
text-align
:
center
;
margin-top
:
15px
;
}
.exam_time
{
flex-direction
:
row
;
}
.exam_time_text
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
margin-right
:
20px
;
margin-right
:
10px
;
margin-top
:
10px
;
text-align
:
center
;
}
.exam_time_status
{
flex-direction
:
row
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
margin-top
:
10px
;
}
.exam_time_wrang
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
51
,
51
,
51
,
1
);
}
.exam_time_img
{
width
:
28
px
;
height
:
28
px
;
width
:
16
px
;
height
:
16
px
;
}
.exam_button
{
height
:
7
6px
;
height
:
3
6px
;
background-color
:
rgba
(
88
,
181
,
168
,
1
);
justify-content
:
center
;
align-items
:
center
;
border-radius
:
44px
;
padding-left
:
65px
;
padding-right
:
65px
;
margin-top
:
40px
;
margin-bottom
:
40px
;
width
:
380px
;
border-radius
:
20px
;
padding
:
0px
30px
;
width
:
50%
;
line-height
:
36px
;
text-align
:
center
;
margin
:
0
auto
;
margin-top
:
10px
;
margin-bottom
:
10px
;
}
.exam_button_text
{
font-size
:
32
px
;
font-size
:
16
px
;
color
:
#ffffff
;
border-radius
:
44
px
;
border-radius
:
20
px
;
}
.retry
{
display
:
flex
;
justify-content
:
center
;
flex-direction
:
row
;
align-items
:
center
;
}
.retry_text
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
153
,
153
,
153
,
1
);
margin-right
:
10px
;
}
.go_retry
{
font-size
:
28
px
;
font-size
:
14
px
;
color
:
rgba
(
42
,
185
,
165
,
1
);
border-bottom-style
:
solid
;
border-bottom-width
:
2px
;
...
...
src/components/stroke/livesExam
已删除
100644 → 0
浏览文件 @
a66cacc4
<template>
<div class="container">
<div class="stroke_container">
<div class="local-exam">
<text class="project_title">现场考试</text>
<div class="code-btn-wrap">
<wxc-button :btnStyle="codeBtn" :textStyle="codeTextStyle" text="输入考试码" @wxcButtonClicked="codeBtnClicked"></wxc-button>
</div>
</div>
<div class="history-wrap">
<div class="history-header">
<text class="project_title his_label">考试记录</text>
<div class="course_see_more" @click="seeMoreHistory" v-if="livesExamContent.localHistoryList.length > 5">
<text class="see_more">更多</text>
<image class="see_more_img" src="https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_gray%403x.png"></image>
</div>
</div>
<local-exam-history :showHeaderH="false" :localHistoryList="livesExamContent.localHistoryList" :examId="11"></local-exam-history>
</div>
</div>
<wxc-loading :show="isShow"></wxc-loading>
<wxc-dialog confirm-text="重新输入"
cancel-text="取消"
:show="showReInputTip"
@wxcDialogCancelBtnClicked="hideReInput"
@wxcDialogConfirmBtnClicked="reInputConfirm">
<text slot="content" class="content-subtext">考试码不正确</text>
</wxc-dialog>
<wxc-dialog confirm-text="我知道了"
:show="showExamNotStartTip"
main-btn-color="#35cbca"
:single="true"
@wxcDialogConfirmBtnClicked="notStartConfirm">
<text slot="content" class="content-subtext">考试未开始</text>
</wxc-dialog>
<wxc-dialog confirm-text="我知道了"
:show="showExamFinishedTip"
main-btn-color="#35cbca"
:single="true"
@wxcDialogConfirmBtnClicked="finishedConfirm">
<text slot="content" class="content-subtext">考试已结束</text>
</wxc-dialog>
<!--height="342"-->
<wxc-mask height="642"
width="750"
border-radius="0"
duration="200"
mask-bg-color="transparent"
:has-animation="true"
:has-overlay="true"
:show-close="false"
:show="showCodeInputDialog">
<div class="code-content">
<div class="code-title-wrap">
<image class="code-img" src="https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/close%403x.png" @click="showCodeInputDialog=false"></image>
<text class="code-title">请输入考试码</text>
</div>
<div class="code-input-wrap">
<input type="text" class="code-input" :class="[code1.length > 0 ? 'code-active': '']" v-model="code1" maxlength="1" @input="codeChange(code1, 'code2')" ref="code1"/>
<input type="text" class="code-input" :class="[code2.length > 0 ? 'code-active': '']" v-model="code2" maxlength="1" @input="codeChange(code2, 'code3')" ref="code2"/>
<input type="text" class="code-input" :class="[code3.length > 0 ? 'code-active': '']" v-model="code3" maxlength="1" @input="codeChange(code3, 'code4')" ref="code3"/>
<input type="text" class="code-input" :class="[code4.length > 0 ? 'code-active': '']" v-model="code4" maxlength="1" @input="codeChange(code4, 'code5')" ref="code4"/>
<input type="text" class="code-input" :class="[code5.length > 0 ? 'code-active': '']" v-model="code5" maxlength="1" @input="codeChange(code5, 'code6')" ref="code5"/>
<input type="text" class="code-input" :class="[code6.length > 0 ? 'code-active': '']" v-model="code6" maxlength="1" @input="codeChange(code6, '')" ref="code6"/>
</div>
</div>
</wxc-mask>
</div>
</template>
<script>
import { Utils, WxcButton, WxcMask } from 'weex-ui'
import WxcDialog from '../components/wxc-dialog'
import picaCommon from '../util/picaCommon'
import WxcLoading from '../components/wxc-loading'
import localExamHistory from '../components/stroke/localExamHistory'
let modal = weex.requireModule('modal')
let configurationModule = weex.requireModule('configurationModule')
let globalEvent = weex.requireModule('globalEvent')
export default {
components: {WxcDialog, Utils, WxcLoading, WxcButton, WxcMask, localExamHistory},
props:['livesExamContent'],
data(){
return{
showExamFinishedTip: false,
showReInputTip: false,
showExamNotStartTip: false,
code1: '',
code2: '',
code3: '',
code4: '',
code5: '',
code6: '',
showCodeInputDialog: false,
showHeaderH: true,
showHeader:false,
y:0,
projectName: '', //项目名称
isShow: false,
isIOS: true,
codeBtn: {
height: '90px',
backgroundColor: 'rgba(106, 159, 233, 0.1)',
borderRadius: '100px',
width: '600px'
},
codeTextStyle: {
color: 'rgb(106, 159, 233)',
fontSize: '32px'
}
}
},
created () {
this.projectId = this.getUrlSearch(weex.config.bundleUrl, 'id') || 1
this.isIOS = Utils.env.isIOS()
// this.init()
},
mounted(){
},
computed: {
},
methods: {
finishedConfirm() {
this.showExamFinishedTip = false
},
hideReInput() {
this.showReInputTip = false
},
reInputConfirm() {
this.hideReInput()
this.showCodeInputDialog = true
this.$nextTick(()=> {
this.$refs['code1'].focus()
})
},
notStartConfirm() {
this.showExamNotStartTip = false
},
clearCode() {
this.code1 = ''
this.code2 = ''
this.code3 = ''
this.code4 = ''
this.code5 = ''
this.code6 = ''
},
checkCodeInputFinished() {
var code
if(this.code1 && this.code2 && this.code3 && this.code4 && this.code5 && this.code6) {
code = '' + this.code1 + this.code2 + this.code3 + this.code4 + this.code5 + this.code6
this.clearCode()
this.showCodeInputDialog = false
this.isShow = true
//考试id
// private Integer examId;
//考试结果标志1表示考试进行中5表示考试未开始10表示考试了已经结束15表示查询不到考试(考试码不正确)20考试被管理员删除(隐藏)
// private Integer resultFlag;
//考试开始时间
// protected Date startDate;
//考试结束时间
// protected Date endDate;
this.GET('app/exam/lives/check',{examCode: code}, (res) => {
this.isShow = false
var result = res.data.checkResult,
flag = result.resultFlag
if(flag == 1) {
this.$router.push({
path:'/exam_result',query:{examId: result.examId, origin: 'start', examType: 'local', endDate: result.endDate}
})
} else if(flag == 5) {
this.showExamNotStartTip = true
} else if(flag == 10 || flag == 20) {
this.showExamFinishedTip = true
} else if(flag == 15) {
this.showReInputTip = true
}
})
}
},
codeChange(val, nextInput) {
if(val && nextInput) {
this.$refs[nextInput].focus()
}
this.checkCodeInputFinished()
},
seeMoreHistory() {
this.$router.push({
path:'/local_exam_history',query:{examId: this.examId}
})
},
codeBtnClicked() {
this.showCodeInputDialog = true
this.$nextTick(()=> {
this.$refs['code1'].focus()
})
},
/* getLength(str, num){
if (str.length > num){
str = str.substr(0, num) + "..."
}
return str
},*/
/* init(){
this.getTop()
},*/
/*getTop(){
this.isShow = true
let _self = this
this.GET('contents/projects/top',{id:this.projectId},function (res) {
console.log('top',res)
// modal.alert({
// message: "top:" + JSON.stringify(res)
// })
if (res && res.data){
// _self.infoMsg = res.data.intro
// _self.info.message = _self.infoMsg
_self.infoLists = res.data.texts //简介(文案)组件
_self.sliderLists = res.data.carousels //轮播图组件
_self.projectName = res.data.projectName //项目名称
_self.projectName = _self.getLength(_self.projectName, 8);
}else{
modal.toast({
message: '网络异常,请稍后再试',
duration: 1.0
})
}
_self.getBottom()
})
},
getBottom(){
let _self = this
this.GET('contents/projects/bottom',{id:this.projectId},function (res) {
console.log('bottom',res)
// modal.alert({
// message: "bottom:" + JSON.stringify(res)
// })
if (res && res.data){
_self.courseLists = res.data.courses //[0].courseModuleList
if (_self.courseLists && _self.courseLists.length){
_self.courseLists.sort(function(a,b){
return a.seq_no - b.seq_no
})
}
_self.courseLists = _self.courseLists.concat([])
}else {
modal.toast({
message: '网络异常,请稍后再试',
duration: 1.0
})
}
_self.getMiddle()
})
},
getMiddle(){
let _self = this
this.GET('contents/projects/middle',{id: this.projectId},function (res) {
console.log("middle",res)
// modal.alert({
// message: "middle:" + JSON.stringify(res)
// })
_self.isShow = false
if (res && res.data){
_self.examLists = res.data.moduleTypeExams
if (_self.examLists && _self.examLists.length){
_self.examLists.sort(function(a,b){
return a.seq_no - b.seq_no
})
_self.examLists.forEach(function (item) {
item.allLists = item.examModuleList
if (item.courseList){
let arr = item.courseList
arr.forEach(function (course) {
let exam_id = course.exam_id
for (let k =0; k < item.allLists.length; k++){
if (exam_id == item.allLists[k].exam_id){
item.allLists.splice(k, 0, course);
break;
}
}
})
}
})
_self.examLists = _self.examLists.concat([])
}else {
_self.examLists = []
}
_self.getOrder()
}else{
modal.toast({
message: '网络异常,请稍后再试',
duration: 1.0
})
}
})
},
getOrder(){
let _self = this
this.GET('contents/projects/'+ this.projectId,{},function (res) {
console.log('order',res)
// modal.alert({
// message: "order:" + JSON.stringify(res)
// })
if (res && res.data){
//组件type
// module_type:1、轮播图组件 5、文案组件 10、考试组件 15、关联课程组件 20、链接组件 25、现场考试组件
_self.orderList = res.data.projectList
if (res.data.respCode != 200){
modal.toast({
message: res.data.respMsg,
duration: 1.0
})
return
}
let arr = [{slot:'type_1'},{slot:'type_2'},{slot:'type_3'},{slot:'type_4'},{slot:'type_5'}]
// arr.map(function (item) {
// _self.slots.push(item)
// })
_self.slots.length = _self.orderList.length
// debugger
for(let i = 0; i < _self.orderList.length; i++){
let number = _self.orderList[i].module_type
switch (number){
case 1:
_self.slots[i] = arr[0];
break;
case 5:
_self.slots[i] = arr[1];
break;
case 10:
_self.slots[i] = arr[2];
break;
case 15:
_self.slots[i] = arr[3];
break;
case 25:
_self.slots[i] = arr[4];
break;
}
}
// debugger
_self.slots = _self.slots.concat([])
_self.infoLists.forEach(function (item) {
_self.allComponentLists.push(item)
})
_self.sliderLists.forEach(function (item) {
_self.allComponentLists.push(item)
})
_self.courseLists.forEach(function (item) {
_self.allComponentLists.push(item)
})
_self.examLists.forEach(function (item) {
_self.allComponentLists.push(item)
})
_self.allComponentLists.sort(function (a,b) {
return a.seq_no - b.seq_no
})
_self.allComponentLists = _self.allComponentLists.concat([])//Object.assign([],)
}else{
modal.toast({
message: '网络异常,请稍后再试',
duration: 1.0
})
}
})
},*/
taggleSlot(){
if(this.slot =='title'){
this.slot ='content'
}else{
this.slot =='title'
}
},
scroll(event){
let y = parseInt(event.contentOffset.y)
if(y < -50){//去认证被遮住
this.showHeader = true
}else{
this.showHeader = false
}
},
openDialog () {
this.show = true;
},
goBack(){
configurationModule.goBack()
},
wxcDialogCancelBtnClicked () {
//此处必须设置,组件为无状态组件,自己管理
// this.show = false;
this.taggleSlot()
},
wxcDialogConfirmBtnClicked () {
//此处必须设置,组件为无状态组件,自己管理
//this.show = false;
},
wxcDialogNoPromptClicked (e) {
//此处必须设置,组件为无状态组件,自己管理
this.isChecked = e.isChecked;
}
/*getLocalExamResults(){
let para = {
examId: this.$route.query.examId,
pageNo: 1,
pageSize: 5
}
/!* if(this.$route.query.examType === 'local') {
url = 'app/exam/lives/results'
}*!/
this.GET('app/exam/lives/results', para, res => {
// this.showLoading = false
let data = res.data
console.log(data)
/!*if(data.respCode === 200) {
// this.isInitFinished = true
this.localHistoryList = this.format(data.examRecordList)
} else {
this.toast({
message: data.respMsg
})
}*!/
})
}*/
// clickJ(){
// this.$refs["mainCp"].map( function (item) {
// if (item.$el.attrs.type == "type_3"){
// console.log("cc:",item)
// }
// })
// console.log("cc:",this.$refs["mainCp"])
// },
// clickShareImage(){
// configurationModule.shareProject()
// },
},
}
</script>
<style scoped>
.content-subtext {
font-size:34px;
color:rgba(102,102,102,1);
line-height:50px;
text-align: center;
}
.code-input-wrap {
flex-direction: row;
justify-content: center;
align-items: center;
height: 244px;
background-color: white;
}
.code-input {
width:90px;
height:90px;
background:rgba(255,255,255,1);
border-radius:4px;
border-width:1px;
border-style:solid;
border-color:rgba(204,204,204,1);
margin-right: 10px;
font-size: 50px;
color:rgba(51,51,51,1);
line-height:50px;
text-align: center;
}
.code-active {
border-color:rgba(65,183,167,1);
}
.code-input:focus {
border-color:rgba(58,172,156,1);
}
.code-title-wrap {
padding: 20px 20px 30px 20px;
flex-direction: row;
justify-content: center;
align-items: center;
border-bottom-width:1px;
border-bottom-style:solid;
border-bottom-color:rgba(240,240,240,1);
background-color: white;
}
.code-img {
width: 50px;
height: 50px;
position: absolute;
left: 20px;
}
.code-title {
font-size:35px;
color:rgba(51,51,51,1);
/*line-height:30px;*/
}
.history-header {
flex-direction:row;
width:750px;
justify-content:space-between;
padding-top:30px;
padding-left:30px;
padding-right:30px;
}
.course_see_more{
flex-direction:row;
height: 48px;
line-height: 48px;
justify-content: center;
align-items: center;
}
.see_more{
font-size:28px;
color:#999999;
padding-right: 6px;
}
.see_more_img{
width:30px;
height:30px;
}
.history-wrap {
background-color: rgb(255, 255, 255);
/*padding: 30px 0 30px 30px;*/
/*margin-top: 20px;*/
border-top-width: 1px;
border-top-style: solid;
border-top-color: rgb(240, 240, 240);
padding-bottom: 40px;
}
.local-exam {
background-color: rgb(255, 255, 255);
padding: 30px;
margin-top: 20px;
}
.code-btn-wrap {
padding-top: 40px;
/*padding-left: 10px;*/
/*padding-right: 40px;*/
justify-content: center;
align-items: center;
}
.project_title{
font-size:36px;
color:#333333;
font-weight:700;
}
.his_label {
color:#999999;
font-weight: 500;
}
.stroke_container{
background-color:#f5f5f5;
}
.stroke_header_statusBar{
position: fixed;
left: 0;
top: 0;
width: 750px;
height: 44px;
align-items: flex-end;
padding-left:0px;
padding-right:0px;
padding-bottom:0px;
flex-direction:row;
justify-content: space-between;
}
.background-fff{
background-color: #ffffff;
}
.background-999{
background-color: #999999;
}
.stroke_header{
position:fixed;
left:0px;
top: 44px;
width:750px;
height: 106px;
align-items: flex-end;
padding-left:30px;
padding-right:30px;
padding-bottom:30px;
flex-direction:row;
justify-content: space-between;
}
.stroke_header_white{
background-color:#ffffff;
}
.stroke_header_left{
flex-direction:row;
align-items: center;
}
.stroke_header_title{
position:absolute;
left:0;
bottom:30px;
width:750px;
text-align:center;
height: 50px;
font-size:36px;
color:#333333;
}
.go_back{
width:50px;
height:50px;
}
.home_page{
font-size:32px;
color:#333333;
}
/*.share_image{*/
/*position: absolute;*/
/*width: 50px;*/
/*height: 50px;*/
/*right: 16px;*/
/*bottom:35px;*/
/*}*/
</style>
src/components/stroke/localExamHistory.vue
浏览文件 @
ff59bca6
...
...
@@ -4,18 +4,18 @@
v-if=
"showHeaderH"
class=
"history_title"
>
<
text
class=
"history_title_text"
>
<
div
class=
"history_title_text"
>
考试记录
</
text
>
</
div
>
<div
v-if=
"historyList.length > 2"
class=
"history_title_right"
@
click=
"historyMore"
>
<
text
class=
"history_title_total"
>
<
div
class=
"history_title_total"
>
全部
</
text
>
<im
age
</
div
>
<im
g
class=
"history_title_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_gray%403x.png"
/>
...
...
@@ -28,22 +28,22 @@
class=
"history-item"
>
<div
class=
"his-left"
>
<
text
class=
"his-title"
>
<
div
class=
"his-title"
>
{{
value
.
name
}}
</
text
>
<
text
class=
"his-detail"
>
</
div
>
<
div
class=
"his-detail"
>
{{
value
.
passFlag
==
5
?
'通过'
:
'未通过'
}}
共
{{
value
.
correctNo
+
value
.
wrongNo
}}
题 对
{{
value
.
correctNo
}}
题 错
{{
value
.
wrongNo
}}
题
</
text
>
</
div
>
</div>
<div
v-if=
"value.restTimes
<
0
&&
value
.
restTimes
!=
-1
"
class=
"his-right"
@
click=
"goExamError(value)"
>
<
text
class=
"set_text_see"
>
<
div
class=
"set_text_see"
>
查看
</
text
>
<im
age
</
div
>
<im
g
class=
"item3_right_arrow"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_black%403x.png"
/>
...
...
@@ -53,41 +53,28 @@
class=
"his-right"
@
click=
"goExamStart"
>
<
text
class=
"re-exam"
>
<
div
class=
"re-exam"
>
重考
</
text
>
</
div
>
</div>
</div>
<!--
<div
class=
"history-item"
>
<div
class=
"his-left"
>
<text
class=
"his-title"
>
高血压中老年考试考试题,目高血压中老年考试考试题目高,血压中老年考试考试题目高血压中老年考试考试题目
</text>
<text
class=
"his-detail"
>
成绩:优秀 共30题 对18题 错12题
</text>
</div>
<div
class=
"his-right"
>
<text
class=
"re-exam"
>
重考
</text>
</div>
</div>
-->
<div
v-if=
"localHistoryList == 0"
class=
"history-empty"
>
<im
age
<im
g
class=
"empty-img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/wu%402x.png"
/>
<
text
class=
"empty-text"
>
<
div
class=
"empty-text"
>
暂无现场考试记录
</
text
>
</
div
>
</div>
</div>
</
template
>
<
script
>
// text collapse
import
{
click_retest
}
from
'../../util/buryingPoint'
;
export
default
{
components
:
{},
props
:[
'localHistoryList'
,
'showHeaderH'
,
'examId'
],
...
...
@@ -97,19 +84,8 @@
},
computed
:
{
// historyListBak:function(){//备份
// return this.historyList.concat([])
// },
// historys:function(){
// var newList = this.limit?this.historyList.splice(0,this.limit):this.historyList
// return newList
// }
},
created
()
{
// this.historys = this.historyList
// this.historyListBak = this.historyList.concat([])//拷贝一份
// console.log(this.$props['historyList'])
// this.historys = this.$props.historyListBak.splice(0,3)
},
mounted
()
{
...
...
@@ -117,14 +93,14 @@
methods
:
{
historyMore
()
{
this
.
$router
.
push
({
path
:
'/exam
_
history'
,
query
:{
examId
:
this
.
examId
}
path
:
'/exam
-
history'
,
query
:{
examId
:
this
.
examId
}
});
},
// 查看
goExamError
(
obj
)
{
if
(
obj
.
wrongNo
>
0
)
{
this
.
$router
.
push
({
path
:
'/exam
_
wrong'
,
path
:
'/exam
-
wrong'
,
query
:
{
answerResultId
:
obj
.
answerResultId
}
...
...
@@ -132,13 +108,8 @@
}
},
examWrongPage
(
obj
)
{
// 查看错题
this
.
appBuryingPointEntrust
({
...
click_mid_wrong_collection
,
createdTime
:
new
Date
().
getTime
()
});
this
.
$router
.
push
({
path
:
'/exam
_
wrong'
,
path
:
'/exam
-
wrong'
,
query
:
{
answerResultId
:
obj
.
answerResultId
}
...
...
@@ -146,19 +117,7 @@
},
// 重考
goExamStart
(
obj
)
{
// 我要重考
/* if (this.endNum != undefined && this.endNum != null && this.endNum == 0){
modal.toast({
message: "您尚未完成相关培训课程的学习",
duration: 1.0
})
}else {
this.$emit("reExamStart")
}*/
this
.
$emit
(
'reExamStart'
);
this
.
appBuryingPointEntrust
({
...
click_retest
,
createdTime
:
new
Date
().
getTime
()
});
}
},
...
...
src/components/stroke/picaHeader.vue
浏览文件 @
ff59bca6
...
...
@@ -3,27 +3,26 @@
<div
class=
"head-fixed"
>
<div
class=
"head-bg"
:style=
"
{backgroundColor: headBg, height:
headHeight + 'px
'}"
:style=
"
{backgroundColor: headBg, height:
'auto
'}"
/>
<div
class=
"head wrap"
:style=
"
{paddingTop: (70 - headHeight) + 'px'}"
>
<img
v-if=
"type != 2"
src=
"http://pica-pro.oss-cn-shanghai.aliyuncs.com/md_resources/back_gray.png"
style=
"width:
50px; height: 50
px;"
style=
"width:
25px; height: 25
px;"
@
click=
"goBack"
/>
<div
v-if=
"!showHeader"
style=
"width:
50px;height: 50
px;"
style=
"width:
25px;height: 25
px;"
>
</div>
<img
v-if=
"type == 2"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/close%403x.png"
style=
"width:
50px; height: 50
px;"
style=
"width:
35px; height: 35
px;"
@
click=
"goBack"
/>
<div
class=
"title"
>
...
...
@@ -56,9 +55,6 @@
created
()
{
if
(
this
.
isAndroid
)
{
this
.
headBg
=
'#999999'
;
// weex.requireModule('eventModule').getStatusBarSize(res => {
// this.headHeight = parseInt(res.height) / 1.5;
// });
}
},
mounted
()
{
...
...
@@ -76,11 +72,8 @@
},
},
};
</
script
>
<
style
scoped
>
.head-fixed
{
position
:
fixed
;
...
...
@@ -98,51 +91,14 @@
border-bottom-color
:
#e7e7e7
;
}
.wrap
{
padding
:
70px
30px
20px
30
px
;
padding
:
10px
15
px
;
}
.empty
{
width
:
50
px
;
height
:
3
px
;
width
:
25
px
;
height
:
1
px
;
}
.title
{
font-size
:
38px
;
/*font-weight: 600;*/
font-size
:
19px
;
color
:
#333333
;
}
/*.result_header{*/
/*position:fixed;*/
/*top:0;*/
/*left:0;*/
/*height:140px;*/
/*width:750px;*/
/*background-color:#ffffff;*/
/*padding-left:20px;*/
/*flex-direction: row;*/
/*align-items:center;*/
/*justify-content: space-between;*/
/*border-bottom-style: solid;*/
/*border-bottom-width: 1px;*/
/*border-bottom-color: #e7e7e7;*/
/*}*/
/*.back_wrap{*/
/*flex-direction: row;*/
/*}*/
/*.back_image{*/
/*width: 50px;*/
/*height: 50px;*/
/*margin-top:35px;*/
/*}*/
/*.title{*/
/*font-size:36px;*/
/*color:rgba(51,51,51,1);*/
/*width:750px;*/
/*position:absolute;*/
/*top:0;*/
/*left:0;*/
/*height:140px;*/
/*text-align:center;*/
/*margin-top:70px;*/
/*}*/
</
style
>
src/components/stroke/projectContent-200422.vue
已删除
100644 → 0
浏览文件 @
a66cacc4
<
template
>
<div>
<div
class=
"container"
>
<text
class=
"project_title"
>
{{
examContent
.
module_name
}}
</text>
<div
v-if=
"examContent.allowFlag == 0"
class=
"project_advice"
@
click=
"clickJoin(examContent)"
>
<text
class=
"project_advice_text"
>
{{
examContent
.
show_text
}}
</text>
<text
class=
"project_join_text"
>
{{
examContent
.
interactive_text
}}
</text>
<image
class=
"project_see_more"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_red%403x.png"
/>
</div>
<div
v-if=
"examContent.passFlag == 5"
class=
"project_advice_auth"
@
click=
"getCertify"
>
<image
class=
"advice_auth_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/cup%403x.png"
/>
<div
class=
"advice_auth_text"
>
<text
class=
"advice_auth_text_content"
>
{{
examContent
.
all_exam_writing
}}
</text>
</div>
<!--
<image
class=
"advice_auth_right_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/whiteLeft%403x.png"
></image>
-->
</div>
<div
v-for=
"(value,key) in examContent.allLists"
:key=
"key"
:class=
"[examContent.allLists.length>key+1?'test_list':'test_list1']"
>
<!--左边序号/圆圈-->
<div
class=
"test_item1"
>
<image
v-if=
"examContent.exam_order == 5"
class=
"circle_gray"
:src=
"examContent.allowFlag==1 ? circleYellow: circleGray"
/>
<text
v-if=
"examContent.exam_order == 1"
class=
"order_number"
:class=
"[(examContent.allowFlag==1 && setOpen(key,examContent.allLists))? ((value.testNumFlag > 0 || value.progress == 100)? 'color-666': 'color-42a'): 'color-ccc']"
>
0
{{
key
+
1
}}
.
</text>
<div
v-if=
"examContent.exam_order == 1 && key
<
(
examContent
.
allLists
.
length
-
1
)"
class=
"set_line_item"
:class=
"[(examContent.allowFlag==1 && (value.testNumFlag >0 || value.progress == 100 )) ? 'back-666': 'back-f0']"
/>
</div>
<!--中间文案-->
<div
class=
"test_item2"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
>
<text
v-if=
"examContent.allowFlag == 0"
class=
"test_name color-666"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"examContent.allowFlag == 1"
class=
"test_name"
:class=
"[ examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? (value.testNumFlag > 0 || value.progress == 100) ? 'color-333': 'color-42a': 'color-666': 'color-333']"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"!value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
testNumFlag
>
0
?
((
value
.
standard_type
==
10
?
"成绩:"
+
value
.
answerResultModel
.
custom_value
:
value
.
standard_type
==
5
?
value
.
answerResultModel
.
custom_value
:
"已完成"
)
+
" 共"
+
value
.
question_no
+
"题 对"
+
value
.
answerResultModel
.
correct_no
+
"题 错"
+
value
.
answerResultModel
.
wrong_no
+
"题"
):
messages
(
value
.
exam_writing
,
16
)
}}
</text>
<text
v-if=
"value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
progress
>
0
?
(
value
.
progress
==
100
)
?
"已完成学习"
:
"进行中 完成"
+
value
.
progress
+
"%"
:
messages
(
value
.
study_writing
,
16
)
}}
</text>
</div>
<!--右边文案-->
<div
class=
"test_item3"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
@
click=
"goExam(key,value)"
>
<text
v-if=
"value.testNumFlag == 0 || value.progress
<
100
"
class=
"go_examination"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'border-color-94': 'border-color-e5' : 'border-color-94' : 'border-color-e5',
examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'color-42a' : 'color-999': 'color-42a' : 'color-999']"
>
{{
value
.
course_id
?
'去学习'
:
'去考试'
}}
</text>
<div
v-if=
"value.testNumFlag > 0 || value.progress == 100"
class=
"go_result"
>
<text
class=
"set_text_see"
>
{{
value
.
course_id
?
"再学一遍"
:
getBoolForExam
(
value
)
?
"重考"
:
"查看"
}}
</text>
<image
class=
"item3_right_arrow"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_black%403x.png"
/>
</div>
</div>
</div>
</div>
<wxc-dialog
title=
""
:content=
"setContent"
:show=
"isQuery"
cancel-text=
"取消"
confirm-text=
"去考试"
main-btn-color=
"#35cbca"
@
wxcDialogCancelBtnClicked=
"wxcDialogCancelBtnClicked"
@
wxcDialogConfirmBtnClicked=
"wxcDialogConfirmBtnClicked"
/>
</div>
</
template
>
<
script
>
// text collapse
import
Vue
from
'vue'
;
const
modal
=
weex
.
requireModule
(
'modal'
);
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
const
globalEvent
=
weex
.
requireModule
(
'globalEvent'
);
import
wxcDialog
from
'../wxc-dialog'
;
const
storage
=
weex
.
requireModule
(
'storage'
);
export
default
{
components
:
{
wxcDialog
},
props
:[
'examContent'
,
'hasAuth'
,
'keyIndex'
],
data
()
{
return
{
projectId
:
1
,
hasCertify
:
false
,
circleGray
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_gray%403x.png'
,
circleYellow
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_red%403x.png'
,
isQuery
:
false
,
setContent
:
'学习课程后再参加考试,成绩肯能会更优秀哦!'
,
currentId
:
0
,
currentIndex
:
0
,
// 当前选中的考试下标
currentObj
:
{},
// 当前选中的考试内容
beforeLearningExamNumber
:
0
,
examNotStartLable
:
''
,
query
:
{
examId
:
null
,
origin
:
''
}
};
},
computed
:
{
},
created
()
{
},
mounted
()
{
},
methods
:
{
messages
(
str
,
num
)
{
return
str
.
length
>
num
?
str
.
substr
(
0
,
num
-
1
)
+
'...'
:
str
;
},
setOpen
(
index
,
arr
)
{
if
(
index
==
0
)
{
return
true
;
}
else
if
(
index
>
0
&&
((
arr
[
index
-
1
].
progress
==
100
||
arr
[
index
-
1
].
testNumFlag
>
0
)
||
(
arr
[
index
].
progress
==
100
||
arr
[
index
].
testNumFlag
>
0
)))
{
return
true
;
}
return
false
;
},
clickJoin
(
obj
)
{
if
(
obj
.
transfer_flag
==
1
)
{
// 有跳转路径
const
url
=
obj
.
url
?
obj
.
url
:
'https://vuejs.org'
;
this
.
$router
.
push
({
path
:
'/web_url'
,
query
:
{
url
:
url
}
});
}
},
getCertify
()
{
},
dateToString
(
t_date
)
{
const
start_date_y
=
t_date
.
getFullYear
();
const
start_date_m
=
t_date
.
getMonth
()
+
1
;
const
start_date_d
=
t_date
.
getDate
();
const
start_date_h
=
t_date
.
getHours
();
const
start_date_mm
=
t_date
.
getMinutes
();
return
start_date_m
+
'月'
+
start_date_d
+
'日 '
+
start_date_h
+
':'
+
start_date_mm
;
},
checkExamBegin
(
obj
)
{
if
(
!
obj
.
course_id
&&
obj
.
date_type
==
5
)
{
// 定时开放
const
now_date
=
new
Date
();
const
start_date
=
new
Date
(
obj
.
start_date
);
const
end_date
=
new
Date
(
obj
.
end_date
);
const
min_time
=
now_date
-
start_date
;
const
max_time
=
end_date
-
now_date
;
if
(
min_time
>
0
&&
max_time
>
0
)
{
return
true
;
}
else
{
this
.
examNotStartLable
=
'考试开放时间 '
+
this
.
dateToString
(
start_date
)
+
'至'
+
this
.
dateToString
(
end_date
);
return
false
;
}
}
else
{
// 始终开放
return
true
;
}
},
goIDCardAndEdu
(
obj
)
{
const
sendObj
=
{
field_requirement
:
0
,
roleCode
:
'R001'
,
user_role_list
:
''
};
this
.
GET
(
'contents/projects/guestRoleCode'
,
{},
(
res
)
=>
{
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
if
(
res
.
data
&&
res
.
data
.
respCode
==
200
)
{
sendObj
.
roleCode
=
res
.
data
.
roleCode
;
const
mess
=
obj
.
field_requirement
?
obj
.
field_requirement
:
-
1
;
sendObj
.
field_requirement
=
mess
;
sendObj
.
user_role_list
=
obj
.
user_role_list
;
configurationModule
.
checkIDCardAndEducation
(
sendObj
);
}
else
{
modal
.
toast
({
message
:
'网络异常,请稍后再试'
,
duration
:
1.0
});
}
});
},
goExam
(
index
,
obj
)
{
// modal.alert({message:'keyIndex ' + this.keyIndex})
storage
.
setItem
(
'keyIndex'
,
this
.
keyIndex
,
(
e
)
=>
{
// modal.alert({message:e.result})
});
if
(
this
.
examContent
.
allowFlag
==
1
)
{
// 加入项目(项目考试组件有权限)
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
if
(
this
.
checkExamBegin
(
obj
))
{
this
.
beginLogicForExam
(
index
,
obj
);
}
else
{
modal
.
toast
({
message
:
this
.
examNotStartLable
,
duration
:
1.0
});
}
}
else
{
// 未加入项目
modal
.
toast
({
message
:
this
.
examContent
.
show_text
,
duration
:
1.0
});
}
},
getBoolForExam
(
obj
)
{
// 在考试至少完成一次情况下
// console.log(obj)
// obj.answerResultModel={
// pass_flag:5
// }
if
(
obj
.
answerResultModel
.
pass_flag
==
5
)
{
// 考试通过,不重考
return
false
;
}
else
{
// 考试不通过
if
(
obj
.
again_times
==
-
1
||
(
obj
.
again_times
-
obj
.
exam_num
>
0
))
{
// 考试无限次,或者考试次数小于允许考试次数
return
true
;
}
else
{
return
false
;
}
}
},
addLogicForExam
()
{
// modal.alert({
// message:'跳转考试页面前的数据===>'+JSON.stringify(this.query)
// })
this
.
$router
.
push
({
path
:
'/exam_result'
,
query
:
this
.
query
});
},
beginLogicForExam
(
index
,
obj
)
{
if
(
!
obj
.
course_id
)
{
// 考试项
if
(
obj
.
testNumFlag
>
0
)
{
// 完成考试
const
isGoExam
=
this
.
getBoolForExam
(
obj
);
if
(
isGoExam
)
{
// 去重考
if
((
index
==
0
||
index
==
1
)
||
(
index
>
0
&&
!
this
.
examContent
.
allLists
[
index
-
1
].
course_id
))
{
//
// modal.alert({message:'111'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
==
100
)
{
// modal.alert({message:'222'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
// modal.alert({message:'333'})
const
course_name
=
lastItem
.
course_name
;
if
(
obj
.
times
==
-
1
||
(
obj
.
times
-
obj
.
exam_num
>
0
))
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 不去重考
// modal.alert({message:'444'})
this
.
query
=
{
answerResultId
:
obj
.
answerResultModel
.
id
,
examId
:
obj
.
exam_id
,
origin
:
'end'
};
if
(
index
>
0
&&
this
.
examContent
.
allLists
[
index
-
1
].
course_id
)
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
<
100
)
{
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
Vue
.
set
(
this
.
query
,
'endNum'
,
this
.
beforeLearningExamNumber
);
}
}
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
}
else
{
// 没有考试
if
(
index
>
0
)
{
// 大于第一项
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
course_id
)
{
if
(
lastItem
.
progress
==
100
)
{
// 课程已完成
// modal.alert({message:'555'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
else
{
// modal.alert({message:'666'})
let
flag
=
false
;
if
(
this
.
examContent
.
exam_order
==
1
)
{
// 考试顺序--序贯
for
(
let
i
=
0
;
i
<
index
;
i
++
)
{
if
(
!
this
.
examContent
.
allLists
[
i
].
course_id
)
{
if
(
this
.
examContent
.
allLists
[
i
].
testNumFlag
>
0
&&
this
.
examContent
.
allLists
[
i
].
answerResultModel
.
pass_flag
==
5
)
{
// 之前考试全部通过
}
else
{
flag
=
true
;
// 有一门考试未考,或者未通过
break
;
}
}
}
}
if
(
flag
)
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
else
{
const
course_name
=
this
.
examContent
.
allLists
[
index
-
1
].
course_name
;
if
(
obj
.
times
>
0
||
obj
.
times
==
-
1
)
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
obj
.
times
;
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 考试上一项是考试 modal.alert({message:'777'})
const
c1
=
this
.
examContent
.
exam_order
==
5
;
// 考试为并列
const
c3
=
(
this
.
examContent
.
exam_order
==
1
&&
lastItem
.
testNumFlag
>
0
)
&&
(
lastItem
.
standard_type
==
1
||
(
lastItem
.
standard_type
>
1
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
));
// 考试为序贯且考试完成,上次考试无结果,或者结果为通过
if
(
c1
||
c3
)
{
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
else
{
// 第一项
// modal.alert({message:'888'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
}
}
else
{
// 课程项
if
(
this
.
examContent
.
exam_order
==
5
||
index
==
0
)
{
// 顺序并列, 或者顺序贯序但为第一项
// modal.alert({message:'999'})
configurationModule
.
intoCourse
(
obj
);
}
else
{
// modal.alert({message:'xxxxxx'})
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
((
lastItem
.
testNumFlag
>
0
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
)
||
lastItem
.
progress
>=
0
)
{
configurationModule
.
intoCourse
(
obj
);
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
},
wxcDialogCancelBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
},
wxcDialogConfirmBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
this
.
query
=
{
examId
:
this
.
currentId
,
origin
:
'start'
};
if
(
this
.
beforeLearningExamNumber
>
0
)
{
Vue
.
set
(
this
.
query
,
'startNum'
,
this
.
beforeLearningExamNumber
);
}
this
.
goIDCardAndEdu
(
this
.
currentObj
);
}
},
};
</
script
>
<
style
scoped
>
.container
{
justify-content
:
start
;
align-items
:
flex-start
;
background-color
:
#ffffff
;
padding-top
:
30px
;
padding-left
:
30px
;
padding-right
:
0px
;
padding-bottom
:
0
;
margin-top
:
20px
;
}
.project_title
{
font-size
:
36px
;
color
:
#333333
;
font-weight
:
700
;
}
.project_advice
{
flex-direction
:
row
;
width
:
690px
;
height
:
90px
;
/*padding-top: 24px;*/
padding-left
:
30px
;
padding-right
:
30px
;
/*padding-bottom: 30px;*/
margin-top
:
40px
;
margin-bottom
:
40px
;
background-color
:
#FDFBF5
;
justify-content
:
space-between
;
border-radius
:
10px
;
}
.project_advice_auth
{
margin-top
:
30px
;
}
.advice_auth_img
{
width
:
690px
;
height
:
140px
;
}
.advice_auth_right_img
{
width
:
40px
;
height
:
40px
;
position
:
absolute
;
top
:
70px
;
right
:
30px
;
transform
:
rotate
(
180deg
);
}
.advice_auth_text
{
position
:
absolute
;
left
:
0
;
top
:
0
;
height
:
140px
;
width
:
690px
;
justify-content
:
center
;
align-items
:
center
;
flex-direction
:
row
;
}
.advice_auth_text_content
{
font-size
:
34px
;
color
:
#ffffff
;
font-weight
:
600
;
}
.circle_gray
{
width
:
16px
;
height
:
16px
;
}
.project_advice_text
{
color
:
#947e2c
;
font-size
:
30px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_join_text
{
color
:
#d86161
;
font-size
:
30px
;
padding-right
:
20px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_see_more
{
width
:
20px
;
height
:
20px
;
position
:
absolute
;
top
:
37px
;
right
:
20px
;
transform
:
rotate
(
0deg
);
}
.test_list
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
}
.test_list1
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
/*padding-bottom:30px;*/
}
.order_number
{
font-size
:
26px
;
width
:
45px
;
height
:
26px
;
top
:
-7px
;
font-weight
:
600
;
}
.test_item1
{
flex
:
3
;
padding-top
:
45px
;
height
:
166px
;
/*justify-content:center;*/
}
.test_item2
{
flex
:
29
;
padding-top
:
30px
;
padding-bottom
:
30px
;
height
:
166px
;
justify-content
:
center
;
}
.test_item3
{
flex
:
10
;
align-items
:
flex-end
;
height
:
166px
;
padding-bottom
:
30px
;
padding-top
:
30px
;
padding-right
:
30px
;
justify-content
:
center
;
}
.border-bottom
{
border-bottom-style
:
solid
;
border-bottom-color
:
rgba
(
240
,
240
,
240
,
1
);
border-bottom-width
:
1px
;
}
.color-333
{
color
:
#333333
;
}
.color-666
{
color
:
#666666
;
}
.color-999
{
color
:
#999999
;
}
.color-ccc
{
color
:
#cccccc
;
}
.color-42a
{
color
:
#2ab9a5
;
}
.border-color-e5
{
border-color
:
#e5e5e5
;
}
.border-color-94
{
border-color
:
#94dcd2
;
}
.test_name
{
font-size
:
32px
;
margin-bottom
:
30px
;
font-weight
:
600
;
}
.test_info
{
font-size
:
26px
;
}
.go_examination
{
font-size
:
26px
;
/*padding-top:10px;*/
padding-left
:
20px
;
padding-right
:
20px
;
border-radius
:
25px
;
border-style
:
solid
;
border-width
:
1px
;
width
:
120px
;
height
:
50px
;
line-height
:
50px
;
}
.go_result
{
flex-direction
:
row
;
align-items
:
center
;
}
.set_text_see
{
font-size
:
28px
;
color
:
rgba
(
102
,
102
,
102
,
1
);
padding-right
:
10px
;
/*font-weight: 600;*/
}
.item3_right_arrow
{
width
:
20px
;
height
:
20px
;
}
.set_line_item
{
width
:
2px
;
height
:
118px
;
left
:
10px
;
top
:
5px
;
background-color
:
#f0f0f0
;
}
.back-f0
{
}
.back-666
{
background-color
:
#666666
;
}
</
style
>
src/components/stroke/projectContent.0131.vue
已删除
100644 → 0
浏览文件 @
a66cacc4
<
template
>
<div>
<div
class=
"container"
>
<text
class=
"project_title"
>
{{
examContent
.
module_name
}}
</text>
<div
v-if=
"examContent.allowFlag == 0"
class=
"project_advice"
@
click=
"clickJoin(examContent)"
>
<text
class=
"project_advice_text"
>
{{
examContent
.
show_text
}}
</text>
<text
class=
"project_join_text"
>
{{
examContent
.
interactive_text
}}
</text>
<image
class=
"project_see_more"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_red%403x.png"
/>
</div>
<div
v-if=
"examContent.passFlag == 5"
class=
"project_advice_auth"
@
click=
"getCertify"
>
<image
class=
"advice_auth_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/cup%403x.png"
/>
<div
class=
"advice_auth_text"
>
<text
class=
"advice_auth_text_content"
>
{{
examContent
.
all_exam_writing
}}
</text>
</div>
<!--
<image
class=
"advice_auth_right_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/whiteLeft%403x.png"
></image>
-->
</div>
<div
v-for=
"(value,key) in examContent.allLists"
:key=
"key"
:class=
"[examContent.allLists.length>key+1?'test_list':'test_list1']"
>
<!--左边序号/圆圈-->
<div
class=
"test_item1"
>
<image
v-if=
"examContent.exam_order == 5"
class=
"circle_gray"
:src=
"examContent.allowFlag==1 ? circleYellow: circleGray"
/>
<text
v-if=
"examContent.exam_order == 1"
class=
"order_number"
:class=
"[(examContent.allowFlag==1 && setOpen(key,examContent.allLists))? ((value.testNumFlag > 0 || value.progress == 100)? 'color-666': 'color-42a'): 'color-ccc']"
>
0
{{
key
+
1
}}
.
</text>
<div
v-if=
"examContent.exam_order == 1 && key
<
(
examContent
.
allLists
.
length
-
1
)"
class=
"set_line_item"
:class=
"[(examContent.allowFlag==1 && (value.testNumFlag >0 || value.progress == 100 )) ? 'back-666': 'back-f0']"
/>
</div>
<!--中间文案-->
<div
class=
"test_item2"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
>
<text
v-if=
"examContent.allowFlag == 0"
class=
"test_name color-666"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"examContent.allowFlag == 1"
class=
"test_name"
:class=
"[ examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? (value.testNumFlag > 0 || value.progress == 100) ? 'color-333': 'color-42a': 'color-666': 'color-333']"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"!value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
testNumFlag
>
0
?
((
value
.
standard_type
==
10
?
"成绩:"
+
value
.
answerResultModel
.
custom_value
:
value
.
standard_type
==
5
?
value
.
answerResultModel
.
custom_value
:
"已完成"
)
+
" 共"
+
value
.
question_no
+
"题 对"
+
value
.
answerResultModel
.
correct_no
+
"题 错"
+
value
.
answerResultModel
.
wrong_no
+
"题"
):
messages
(
value
.
exam_writing
,
16
)
}}
</text>
<text
v-if=
"value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
progress
>
0
?
(
value
.
progress
==
100
)
?
"已完成学习"
:
"进行中 完成"
+
value
.
progress
+
"%"
:
messages
(
value
.
study_writing
,
16
)
}}
</text>
</div>
<!--右边文案-->
<div
class=
"test_item3"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
@
click=
"goExam(key,value)"
>
<text
v-if=
"value.testNumFlag == 0 || value.progress
<
100
"
class=
"go_examination"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'border-color-94': 'border-color-e5' : 'border-color-94' : 'border-color-e5',
examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'color-42a' : 'color-999': 'color-42a' : 'color-999']"
>
{{
value
.
course_id
?
'去学习'
:
'去考试'
}}
</text>
<div
v-if=
"value.testNumFlag > 0 || value.progress == 100"
class=
"go_result"
>
<text
class=
"set_text_see"
>
{{
value
.
course_id
?
"再学一遍"
:
getBoolForExam
(
value
)
?
"重考"
:
"查看"
}}
</text>
<image
class=
"item3_right_arrow"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_black%403x.png"
/>
</div>
</div>
</div>
</div>
<wxc-dialog
title=
""
:content=
"setContent"
:show=
"isQuery"
cancel-text=
"取消"
confirm-text=
"去考试"
main-btn-color=
"#35cbca"
@
wxcDialogCancelBtnClicked=
"wxcDialogCancelBtnClicked"
@
wxcDialogConfirmBtnClicked=
"wxcDialogConfirmBtnClicked"
/>
</div>
</
template
>
<
script
>
// text collapse
import
Vue
from
'vue'
;
const
modal
=
weex
.
requireModule
(
'modal'
);
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
const
globalEvent
=
weex
.
requireModule
(
'globalEvent'
);
import
wxcDialog
from
'../wxc-dialog'
;
const
storage
=
weex
.
requireModule
(
'storage'
);
export
default
{
components
:
{
wxcDialog
},
props
:[
'examContent'
,
'hasAuth'
,
'keyIndex'
],
data
()
{
return
{
projectId
:
1
,
hasCertify
:
false
,
circleGray
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_gray%403x.png'
,
circleYellow
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_red%403x.png'
,
isQuery
:
false
,
setContent
:
'学习课程后再参加考试,成绩肯能会更优秀哦!'
,
currentId
:
0
,
currentIndex
:
0
,
// 当前选中的考试下标
currentObj
:
{},
// 当前选中的考试内容
beforeLearningExamNumber
:
0
,
examNotStartLable
:
''
,
query
:
{
examId
:
null
,
origin
:
''
}
};
},
computed
:
{
},
created
()
{
},
mounted
()
{
},
methods
:
{
messages
(
str
,
num
)
{
return
str
.
length
>
num
?
str
.
substr
(
0
,
num
-
1
)
+
'...'
:
str
;
},
setOpen
(
index
,
arr
)
{
if
(
index
==
0
)
{
return
true
;
}
else
if
(
index
>
0
&&
((
arr
[
index
-
1
].
progress
==
100
||
arr
[
index
-
1
].
testNumFlag
>
0
)
||
(
arr
[
index
].
progress
==
100
||
arr
[
index
].
testNumFlag
>
0
)))
{
return
true
;
}
return
false
;
},
clickJoin
(
obj
)
{
if
(
obj
.
transfer_flag
==
1
)
{
// 有跳转路径
const
url
=
obj
.
url
?
obj
.
url
:
'https://vuejs.org'
;
this
.
$router
.
push
({
path
:
'/web_url'
,
query
:
{
url
:
url
}
});
}
},
getCertify
()
{
},
dateToString
(
t_date
)
{
const
start_date_y
=
t_date
.
getFullYear
();
const
start_date_m
=
t_date
.
getMonth
()
+
1
;
const
start_date_d
=
t_date
.
getDate
();
const
start_date_h
=
t_date
.
getHours
();
const
start_date_mm
=
t_date
.
getMinutes
();
return
start_date_m
+
'月'
+
start_date_d
+
'日 '
+
start_date_h
+
':'
+
start_date_mm
;
},
checkExamBegin
(
obj
)
{
if
(
!
obj
.
course_id
&&
obj
.
date_type
==
5
)
{
// 定时开放
const
now_date
=
new
Date
();
const
start_date
=
new
Date
(
obj
.
start_date
);
const
end_date
=
new
Date
(
obj
.
end_date
);
const
min_time
=
now_date
-
start_date
;
const
max_time
=
end_date
-
now_date
;
if
(
min_time
>
0
&&
max_time
>
0
)
{
return
true
;
}
else
{
this
.
examNotStartLable
=
'考试开放时间 '
+
this
.
dateToString
(
start_date
)
+
'至'
+
this
.
dateToString
(
end_date
);
return
false
;
}
}
else
{
// 始终开放
return
true
;
}
},
goIDCardAndEdu
(
obj
)
{
// modal.alert({message:'goIDCardAndEdu ' + obj})
const
sendObj
=
{
field_requirement
:
0
,
roleCode
:
'R001'
,
user_role_list
:
''
};
this
.
GET
(
'contents/projects/guestRoleCode'
,
{},
(
res
)
=>
{
// modal.alert({message:'goIDCardAndEdu ' + res})
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
if
(
res
.
data
&&
res
.
data
.
respCode
==
200
)
{
sendObj
.
roleCode
=
res
.
data
.
roleCode
;
const
mess
=
obj
.
field_requirement
?
obj
.
field_requirement
:
-
1
;
sendObj
.
field_requirement
=
mess
;
// sendObj.field_requirement = -1
sendObj
.
user_role_list
=
obj
.
user_role_list
;
// modal.alert({message:'goIDCardAndEdu 200' + JSON.stringify(sendObj)})
configurationModule
.
checkIDCardAndEducation
(
sendObj
);
}
else
{
modal
.
toast
({
message
:
'网络异常,请稍后再试'
,
duration
:
1.0
});
}
});
},
goExam
(
index
,
obj
)
{
// modal.alert({message:'keyIndex ' + this.keyIndex})
storage
.
setItem
(
'keyIndex'
,
this
.
keyIndex
,
(
e
)
=>
{
// modal.alert({message:e.result})
});
if
(
this
.
examContent
.
allowFlag
==
1
)
{
// 加入项目(项目考试组件有权限)
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
if
(
this
.
checkExamBegin
(
obj
))
{
this
.
beginLogicForExam
(
index
,
obj
);
}
else
{
modal
.
toast
({
message
:
this
.
examNotStartLable
,
duration
:
1.0
});
}
}
else
{
// 未加入项目
modal
.
toast
({
message
:
this
.
examContent
.
show_text
,
duration
:
1.0
});
}
},
getBoolForExam
(
obj
)
{
// 在考试至少完成一次情况下
// console.log(obj)
// obj.answerResultModel={
// pass_flag:5
// }
if
(
obj
.
answerResultModel
.
pass_flag
==
5
)
{
// 考试通过,不重考
return
false
;
}
else
{
// 考试不通过
if
(
obj
.
again_times
==
-
1
||
(
obj
.
again_times
-
obj
.
exam_num
>
0
))
{
// 考试无限次,或者考试次数小于允许考试次数
return
true
;
}
else
{
return
false
;
}
}
},
addLogicForExam
()
{
// modal.alert({
// message:'跳转考试页面前的数据===>'+JSON.stringify(this.query)
// })
this
.
$router
.
push
({
path
:
'/exam_result'
,
query
:
this
.
query
});
},
beginLogicForExam
(
index
,
obj
)
{
if
(
!
obj
.
course_id
)
{
// 考试项
if
(
obj
.
testNumFlag
>
0
)
{
// 完成考试
const
isGoExam
=
this
.
getBoolForExam
(
obj
);
if
(
isGoExam
)
{
// 去重考
if
((
index
==
0
||
index
==
1
)
||
(
index
>
0
&&
!
this
.
examContent
.
allLists
[
index
-
1
].
course_id
))
{
//
// modal.alert({message:'111'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
==
100
)
{
// modal.alert({message:'222'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
// modal.alert({message:'333'})
const
course_name
=
lastItem
.
course_name
;
if
(
obj
.
times
==
-
1
||
(
obj
.
times
-
obj
.
exam_num
>
0
))
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 不去重考
// modal.alert({message:'444'})
this
.
query
=
{
answerResultId
:
obj
.
answerResultModel
.
id
,
examId
:
obj
.
exam_id
,
origin
:
'end'
};
if
(
index
>
0
&&
this
.
examContent
.
allLists
[
index
-
1
].
course_id
)
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
<
100
)
{
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
Vue
.
set
(
this
.
query
,
'endNum'
,
this
.
beforeLearningExamNumber
);
}
}
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
}
else
{
// 没有考试
if
(
index
>
0
)
{
// 大于第一项
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
course_id
)
{
if
(
lastItem
.
progress
==
100
)
{
// 课程已完成
// modal.alert({message:'555'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
else
{
// modal.alert({message:'666'})
let
flag
=
false
;
if
(
this
.
examContent
.
exam_order
==
1
)
{
// 考试顺序--序贯
for
(
let
i
=
0
;
i
<
index
;
i
++
)
{
if
(
!
this
.
examContent
.
allLists
[
i
].
course_id
)
{
if
(
this
.
examContent
.
allLists
[
i
].
testNumFlag
>
0
&&
this
.
examContent
.
allLists
[
i
].
answerResultModel
.
pass_flag
==
5
)
{
// 之前考试全部通过
}
else
{
flag
=
true
;
// 有一门考试未考,或者未通过
break
;
}
}
}
}
if
(
flag
)
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
else
{
const
course_name
=
this
.
examContent
.
allLists
[
index
-
1
].
course_name
;
if
(
obj
.
times
>
0
||
obj
.
times
==
-
1
)
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
obj
.
times
;
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 考试上一项是考试 modal.alert({message:'777'})
const
c1
=
this
.
examContent
.
exam_order
==
5
;
// 考试为并列
const
c3
=
(
this
.
examContent
.
exam_order
==
1
&&
lastItem
.
testNumFlag
>
0
)
&&
(
lastItem
.
standard_type
==
1
||
(
lastItem
.
standard_type
>
1
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
));
// 考试为序贯且考试完成,上次考试无结果,或者结果为通过
if
(
c1
||
c3
)
{
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
else
{
// 第一项
// modal.alert({message:'888'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
}
}
else
{
// 课程项
if
(
this
.
examContent
.
exam_order
==
5
||
index
==
0
)
{
// 顺序并列, 或者顺序贯序但为第一项
// modal.alert({message:'999'})
configurationModule
.
intoCourse
(
obj
);
}
else
{
// modal.alert({message:'xxxxxx'})
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
((
lastItem
.
testNumFlag
>
0
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
)
||
lastItem
.
progress
>=
0
)
{
configurationModule
.
intoCourse
(
obj
);
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
},
wxcDialogCancelBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
},
wxcDialogConfirmBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
this
.
query
=
{
examId
:
this
.
currentId
,
origin
:
'start'
};
if
(
this
.
beforeLearningExamNumber
>
0
)
{
Vue
.
set
(
this
.
query
,
'startNum'
,
this
.
beforeLearningExamNumber
);
}
this
.
goIDCardAndEdu
(
this
.
currentObj
);
}
},
};
</
script
>
<
style
scoped
>
.container
{
justify-content
:
start
;
align-items
:
flex-start
;
background-color
:
#ffffff
;
padding-top
:
30px
;
padding-left
:
30px
;
padding-right
:
0px
;
padding-bottom
:
0
;
margin-top
:
20px
;
}
.project_title
{
font-size
:
36px
;
color
:
#333333
;
font-weight
:
700
;
}
.project_advice
{
flex-direction
:
row
;
width
:
690px
;
height
:
90px
;
/*padding-top: 24px;*/
padding-left
:
30px
;
padding-right
:
30px
;
/*padding-bottom: 30px;*/
margin-top
:
40px
;
margin-bottom
:
40px
;
background-color
:
#FDFBF5
;
justify-content
:
space-between
;
border-radius
:
10px
;
}
.project_advice_auth
{
margin-top
:
30px
;
}
.advice_auth_img
{
width
:
690px
;
height
:
140px
;
}
.advice_auth_right_img
{
width
:
40px
;
height
:
40px
;
position
:
absolute
;
top
:
70px
;
right
:
30px
;
transform
:
rotate
(
180deg
);
}
.advice_auth_text
{
position
:
absolute
;
left
:
0
;
top
:
0
;
height
:
140px
;
width
:
690px
;
justify-content
:
center
;
align-items
:
center
;
flex-direction
:
row
;
}
.advice_auth_text_content
{
font-size
:
34px
;
color
:
#ffffff
;
font-weight
:
600
;
}
.circle_gray
{
width
:
16px
;
height
:
16px
;
}
.project_advice_text
{
color
:
#947e2c
;
font-size
:
30px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_join_text
{
color
:
#d86161
;
font-size
:
30px
;
padding-right
:
20px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_see_more
{
width
:
20px
;
height
:
20px
;
position
:
absolute
;
top
:
37px
;
right
:
20px
;
transform
:
rotate
(
0deg
);
}
.test_list
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
}
.test_list1
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
/*padding-bottom:30px;*/
}
.order_number
{
font-size
:
26px
;
width
:
45px
;
height
:
26px
;
top
:
-7px
;
font-weight
:
600
;
}
.test_item1
{
flex
:
3
;
padding-top
:
45px
;
height
:
166px
;
/*justify-content:center;*/
}
.test_item2
{
flex
:
29
;
padding-top
:
30px
;
padding-bottom
:
30px
;
height
:
166px
;
justify-content
:
center
;
}
.test_item3
{
flex
:
10
;
align-items
:
flex-end
;
height
:
166px
;
padding-bottom
:
30px
;
padding-top
:
30px
;
padding-right
:
30px
;
justify-content
:
center
;
}
.border-bottom
{
border-bottom-style
:
solid
;
border-bottom-color
:
rgba
(
240
,
240
,
240
,
1
);
border-bottom-width
:
1px
;
}
.color-333
{
color
:
#333333
;
}
.color-666
{
color
:
#666666
;
}
.color-999
{
color
:
#999999
;
}
.color-ccc
{
color
:
#cccccc
;
}
.color-42a
{
color
:
#2ab9a5
;
}
.border-color-e5
{
border-color
:
#e5e5e5
;
}
.border-color-94
{
border-color
:
#94dcd2
;
}
.test_name
{
font-size
:
32px
;
margin-bottom
:
30px
;
font-weight
:
600
;
}
.test_info
{
font-size
:
26px
;
}
.go_examination
{
font-size
:
26px
;
/*padding-top:10px;*/
padding-left
:
20px
;
padding-right
:
20px
;
border-radius
:
25px
;
border-style
:
solid
;
border-width
:
1px
;
width
:
120px
;
height
:
50px
;
line-height
:
50px
;
}
.go_result
{
flex-direction
:
row
;
align-items
:
center
;
}
.set_text_see
{
font-size
:
28px
;
color
:
rgba
(
102
,
102
,
102
,
1
);
padding-right
:
10px
;
/*font-weight: 600;*/
}
.item3_right_arrow
{
width
:
20px
;
height
:
20px
;
}
.set_line_item
{
width
:
2px
;
height
:
118px
;
left
:
10px
;
top
:
5px
;
background-color
:
#f0f0f0
;
}
.back-f0
{
}
.back-666
{
background-color
:
#666666
;
}
</
style
>
src/components/stroke/projectContent.1.vue
已删除
100644 → 0
浏览文件 @
a66cacc4
<
template
>
<div>
<div
class=
"container"
>
<text
class=
"project_title"
>
{{
examContent
.
module_name
}}
</text>
<div
v-if=
"examContent.allowFlag == 0"
class=
"project_advice"
@
click=
"clickJoin(examContent)"
>
<text
class=
"project_advice_text"
>
{{
examContent
.
show_text
}}
</text>
<text
class=
"project_join_text"
>
{{
examContent
.
interactive_text
}}
</text>
<image
class=
"project_see_more"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_red%403x.png"
/>
</div>
<div
v-if=
"examContent.passFlag == 5"
class=
"project_advice_auth"
@
click=
"getCertify"
>
<image
class=
"advice_auth_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/cup%403x.png"
/>
<div
class=
"advice_auth_text"
>
<text
class=
"advice_auth_text_content"
>
{{
examContent
.
all_exam_writing
}}
</text>
</div>
<!--
<image
class=
"advice_auth_right_img"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/whiteLeft%403x.png"
></image>
-->
</div>
<div
v-for=
"(value,key) in examContent.allLists"
:key=
"key"
:class=
"[examContent.allLists.length>key+1?'test_list':'test_list1']"
>
<!--左边序号/圆圈-->
<div
class=
"test_item1"
>
<image
v-if=
"examContent.exam_order == 5"
class=
"circle_gray"
:src=
"examContent.allowFlag==1 ? circleYellow: circleGray"
/>
<text
v-if=
"examContent.exam_order == 1"
class=
"order_number"
:class=
"[(examContent.allowFlag==1 && setOpen(key,examContent.allLists))? ((value.testNumFlag > 0 || value.progress == 100)? 'color-666': 'color-42a'): 'color-ccc']"
>
0
{{
key
+
1
}}
.
</text>
<div
v-if=
"examContent.exam_order == 1 && key
<
(
examContent
.
allLists
.
length
-
1
)"
class=
"set_line_item"
:class=
"[(examContent.allowFlag==1 && (value.testNumFlag >0 || value.progress == 100 )) ? 'back-666': 'back-f0']"
/>
</div>
<!--中间文案-->
<div
class=
"test_item2"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
>
<text
v-if=
"examContent.allowFlag == 0"
class=
"test_name color-666"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"examContent.allowFlag == 1"
class=
"test_name"
:class=
"[ examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? (value.testNumFlag > 0 || value.progress == 100) ? 'color-333': 'color-42a': 'color-666': 'color-333']"
>
{{
value
.
course_id
?
messages
(
value
.
course_name
,
14
)
:
messages
(
value
.
name
,
14
)
}}
</text>
<text
v-if=
"!value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
testNumFlag
>
0
?
((
value
.
standard_type
==
10
?
"成绩:"
+
value
.
answerResultModel
.
custom_value
:
value
.
standard_type
==
5
?
value
.
answerResultModel
.
custom_value
:
"已完成"
)
+
" 共"
+
value
.
question_no
+
"题 对"
+
value
.
answerResultModel
.
correct_no
+
"题 错"
+
value
.
answerResultModel
.
wrong_no
+
"题"
):
messages
(
value
.
exam_writing
,
16
)
}}
</text>
<text
v-if=
"value.course_id"
class=
"test_info"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.allLists) ? 'color-999': 'color-ccc' : 'color-999':'color-ccc']"
>
{{
value
.
progress
>
0
?
(
value
.
progress
==
100
)
?
"已完成学习"
:
"进行中 完成"
+
value
.
progress
+
"%"
:
messages
(
value
.
study_writing
,
16
)
}}
</text>
</div>
<!--右边文案-->
<div
class=
"test_item3"
:class=
"[key
<
examContent
.
allLists
.
length
-
1
?
'
border-bottom
'
:
'']"
@
click=
"goExam(key,value)"
>
<text
v-if=
"value.testNumFlag == 0 || value.progress
<
100
"
class=
"go_examination"
:class=
"[examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'border-color-94': 'border-color-e5' : 'border-color-94' : 'border-color-e5',
examContent.allowFlag==1 ? examContent.exam_order == 1 ? setOpen(key,examContent.examModuleList) ? 'color-42a' : 'color-999': 'color-42a' : 'color-999']"
>
{{
value
.
course_id
?
'去学习'
:
'去考试'
}}
</text>
<div
v-if=
"value.testNumFlag > 0 || value.progress == 100"
class=
"go_result"
>
<text
class=
"set_text_see"
>
{{
value
.
course_id
?
"再学一遍"
:
getBoolForExam
(
value
)
?
"重考"
:
"查看"
}}
</text>
<image
class=
"item3_right_arrow"
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/arrow_right_black%403x.png"
/>
</div>
</div>
</div>
</div>
<wxc-dialog
title=
""
:content=
"setContent"
:show=
"isQuery"
cancel-text=
"取消"
confirm-text=
"去考试"
main-btn-color=
"#35cbca"
@
wxcDialogCancelBtnClicked=
"wxcDialogCancelBtnClicked"
@
wxcDialogConfirmBtnClicked=
"wxcDialogConfirmBtnClicked"
/>
</div>
</
template
>
<
script
>
// text collapse
import
Vue
from
'vue'
;
const
modal
=
weex
.
requireModule
(
'modal'
);
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
const
globalEvent
=
weex
.
requireModule
(
'globalEvent'
);
import
wxcDialog
from
'../wxc-dialog'
;
const
storage
=
weex
.
requireModule
(
'storage'
);
export
default
{
components
:
{
wxcDialog
},
props
:[
'examContent'
,
'hasAuth'
,
'keyIndex'
],
data
()
{
return
{
projectId
:
1
,
hasCertify
:
false
,
circleGray
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_gray%403x.png'
,
circleYellow
:
'https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/circle_red%403x.png'
,
isQuery
:
false
,
setContent
:
'学习课程后再参加考试,成绩肯能会更优秀哦!'
,
currentId
:
0
,
currentIndex
:
0
,
// 当前选中的考试下标
currentObj
:
{},
// 当前选中的考试内容
beforeLearningExamNumber
:
0
,
examNotStartLable
:
''
,
query
:
{
examId
:
null
,
origin
:
''
}
};
},
computed
:
{
},
created
()
{
},
mounted
()
{
},
methods
:
{
messages
(
str
,
num
)
{
return
str
.
length
>
num
?
str
.
substr
(
0
,
num
-
1
)
+
'...'
:
str
;
},
setOpen
(
index
,
arr
)
{
if
(
index
==
0
)
{
return
true
;
}
else
if
(
index
>
0
&&
((
arr
[
index
-
1
].
progress
==
100
||
arr
[
index
-
1
].
testNumFlag
>
0
)
||
(
arr
[
index
].
progress
==
100
||
arr
[
index
].
testNumFlag
>
0
)))
{
return
true
;
}
return
false
;
},
clickJoin
(
obj
)
{
if
(
obj
.
transfer_flag
==
1
)
{
// 有跳转路径
const
url
=
obj
.
url
?
obj
.
url
:
'https://vuejs.org'
;
this
.
$router
.
push
({
path
:
'/web_url'
,
query
:
{
url
:
url
}
});
}
},
getCertify
()
{
},
dateToString
(
t_date
)
{
const
start_date_y
=
t_date
.
getFullYear
();
const
start_date_m
=
t_date
.
getMonth
()
+
1
;
const
start_date_d
=
t_date
.
getDate
();
const
start_date_h
=
t_date
.
getHours
();
const
start_date_mm
=
t_date
.
getMinutes
();
return
start_date_m
+
'月'
+
start_date_d
+
'日 '
+
start_date_h
+
':'
+
start_date_mm
;
},
checkExamBegin
(
obj
)
{
if
(
!
obj
.
course_id
&&
obj
.
date_type
==
5
)
{
// 定时开放
const
now_date
=
new
Date
();
const
start_date
=
new
Date
(
obj
.
start_date
);
const
end_date
=
new
Date
(
obj
.
end_date
);
const
min_time
=
now_date
-
start_date
;
const
max_time
=
end_date
-
now_date
;
if
(
min_time
>
0
&&
max_time
>
0
)
{
return
true
;
}
else
{
this
.
examNotStartLable
=
'考试开放时间 '
+
this
.
dateToString
(
start_date
)
+
'至'
+
this
.
dateToString
(
end_date
);
return
false
;
}
}
else
{
// 始终开放
return
true
;
}
},
goIDCardAndEdu
(
obj
)
{
const
sendObj
=
{
field_requirement
:
0
,
roleCode
:
'R001'
,
user_role_list
:
''
};
this
.
GET
(
'contents/projects/guestRoleCode'
,
{},
(
res
)
=>
{
const
configurationModule
=
weex
.
requireModule
(
'configurationModule'
);
if
(
res
.
data
&&
res
.
data
.
respCode
==
200
)
{
sendObj
.
roleCode
=
res
.
data
.
roleCode
;
const
mess
=
obj
.
field_requirement
?
obj
.
field_requirement
:
-
1
;
sendObj
.
field_requirement
=
mess
;
// sendObj.field_requirement = -1
sendObj
.
user_role_list
=
obj
.
user_role_list
;
configurationModule
.
checkIDCardAndEducation
(
sendObj
);
}
else
{
modal
.
toast
({
message
:
'网络异常,请稍后再试'
,
duration
:
1.0
});
}
});
},
goExam
(
index
,
obj
)
{
// modal.alert({message:'keyIndex ' +this.keyIndex})
storage
.
setItem
(
'keyIndex'
,
this
.
keyIndex
,
(
e
)
=>
{
// modal.alert({message:e.result})
});
if
(
this
.
examContent
.
allowFlag
==
1
)
{
// 加入项目(项目考试组件有权限)
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
if
(
this
.
checkExamBegin
(
obj
))
{
this
.
beginLogicForExam
(
index
,
obj
);
}
else
{
modal
.
toast
({
message
:
this
.
examNotStartLable
,
duration
:
1.0
});
}
}
else
{
// 未加入项目
modal
.
toast
({
message
:
this
.
examContent
.
show_text
,
duration
:
1.0
});
}
},
getBoolForExam
(
obj
)
{
// 在考试至少完成一次情况下
// console.log(obj)
// obj.answerResultModel={
// pass_flag:5
// }
if
(
obj
.
answerResultModel
.
pass_flag
==
5
)
{
// 考试通过,不重考
return
false
;
}
else
{
// 考试不通过
if
(
obj
.
again_times
==
-
1
||
(
obj
.
again_times
-
obj
.
exam_num
>
0
))
{
// 考试无限次,或者考试次数小于允许考试次数
return
true
;
}
else
{
return
false
;
}
}
},
addLogicForExam
()
{
// modal.alert({
// message:'跳转考试页面前的数据===>'+JSON.stringify(this.query)
// })
this
.
$router
.
push
({
path
:
'/exam_result'
,
query
:
this
.
query
});
},
beginLogicForExam
(
index
,
obj
)
{
if
(
!
obj
.
course_id
)
{
// 考试项
if
(
obj
.
testNumFlag
>
0
)
{
// 完成考试
const
isGoExam
=
this
.
getBoolForExam
(
obj
);
if
(
isGoExam
)
{
// 去重考
if
((
index
==
0
||
index
==
1
)
||
(
index
>
0
&&
!
this
.
examContent
.
allLists
[
index
-
1
].
course_id
))
{
//
// modal.alert({message:'111'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
==
100
)
{
// modal.alert({message:'222'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
// modal.alert({message:'333'})
const
course_name
=
lastItem
.
course_name
;
if
(
obj
.
times
==
-
1
||
(
obj
.
times
-
obj
.
exam_num
>
0
))
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 不去重考
// modal.alert({message:'444'})
this
.
query
=
{
answerResultId
:
obj
.
answerResultModel
.
id
,
examId
:
obj
.
exam_id
,
origin
:
'end'
};
if
(
index
>
0
&&
this
.
examContent
.
allLists
[
index
-
1
].
course_id
)
{
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
progress
<
100
)
{
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
(
obj
.
times
-
obj
.
exam_num
);
Vue
.
set
(
this
.
query
,
'endNum'
,
this
.
beforeLearningExamNumber
);
}
}
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
}
else
{
// 没有考试
if
(
index
>
0
)
{
// 大于第一项
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
(
lastItem
.
course_id
)
{
if
(
lastItem
.
progress
==
100
)
{
// 课程已完成
// modal.alert({message:'555'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query: this.query
// })
}
else
{
// modal.alert({message:'666'})
let
flag
=
false
;
if
(
this
.
examContent
.
exam_order
==
1
)
{
// 考试顺序--序贯
for
(
let
i
=
0
;
i
<
index
;
i
++
)
{
if
(
!
this
.
examContent
.
allLists
[
i
].
course_id
)
{
if
(
this
.
examContent
.
allLists
[
i
].
testNumFlag
>
0
&&
this
.
examContent
.
allLists
[
i
].
answerResultModel
.
pass_flag
==
5
)
{
// 之前考试全部通过
}
else
{
flag
=
true
;
// 有一门考试未考,或者未通过
break
;
}
}
}
}
if
(
flag
)
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
else
{
const
course_name
=
this
.
examContent
.
allLists
[
index
-
1
].
course_name
;
if
(
obj
.
times
>
0
||
obj
.
times
==
-
1
)
{
// 学习课程前的考试次数
this
.
setContent
=
'您尚未完成“'
+
course_name
+
'”课程的学习,是否直接考试?'
;
this
.
currentId
=
obj
.
exam_id
;
this
.
beforeLearningExamNumber
=
obj
.
times
==
-
1
?
100
:
obj
.
times
;
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
isQuery
=
true
;
}
else
{
modal
.
toast
({
message
:
'您尚未完成“'
+
course_name
+
'”培训课程的学习。'
,
duration
:
1.0
});
}
}
}
}
else
{
// 考试上一项是考试
// modal.alert({message:'777'})
const
c1
=
this
.
examContent
.
exam_order
==
5
;
// 考试为并列
const
c3
=
(
this
.
examContent
.
exam_order
==
1
&&
lastItem
.
testNumFlag
>
0
)
&&
(
lastItem
.
standard_type
==
1
||
(
lastItem
.
standard_type
>
1
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
));
// 考试为序贯且考试完成,上次考试无结果,或者结果为通过
if
(
c1
||
c3
)
{
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
else
{
// 第一项
// modal.alert({message:'888'})
this
.
query
=
{
examId
:
obj
.
exam_id
,
origin
:
'start'
};
this
.
currentIndex
=
index
;
this
.
currentObj
=
obj
;
this
.
goIDCardAndEdu
(
obj
);
// this.$router.push({
// path:'/exam_result',
// query:{
// examId: obj.exam_id,
// origin: 'start'
// }
// })
}
}
}
else
{
// 课程项
if
(
this
.
examContent
.
exam_order
==
5
||
index
==
0
)
{
// 顺序并列, 或者顺序贯序但为第一项
// modal.alert({message:'999'})
configurationModule
.
intoCourse
(
obj
);
}
else
{
// modal.alert({message:'xxxxxx'})
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
((
lastItem
.
testNumFlag
>
0
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
)
||
lastItem
.
progress
>=
0
)
{
configurationModule
.
intoCourse
(
obj
);
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
}
}
}
},
wxcDialogCancelBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
},
wxcDialogConfirmBtnClicked
()
{
// 此处必须设置,组件为无状态组件,自己管理
this
.
isQuery
=
false
;
this
.
query
=
{
examId
:
this
.
currentId
,
origin
:
'start'
};
if
(
this
.
beforeLearningExamNumber
>
0
)
{
Vue
.
set
(
this
.
query
,
'startNum'
,
this
.
beforeLearningExamNumber
);
}
this
.
goIDCardAndEdu
(
this
.
currentObj
);
}
},
};
</
script
>
<
style
scoped
>
.container
{
justify-content
:
start
;
align-items
:
flex-start
;
background-color
:
#ffffff
;
padding-top
:
30px
;
padding-left
:
30px
;
padding-right
:
0px
;
padding-bottom
:
0
;
margin-top
:
20px
;
}
.project_title
{
font-size
:
36px
;
color
:
#333333
;
font-weight
:
700
;
}
.project_advice
{
flex-direction
:
row
;
width
:
690px
;
height
:
90px
;
/*padding-top: 24px;*/
padding-left
:
30px
;
padding-right
:
30px
;
/*padding-bottom: 30px;*/
margin-top
:
40px
;
margin-bottom
:
40px
;
background-color
:
#FDFBF5
;
justify-content
:
space-between
;
border-radius
:
10px
;
}
.project_advice_auth
{
margin-top
:
30px
;
}
.advice_auth_img
{
width
:
690px
;
height
:
140px
;
}
.advice_auth_right_img
{
width
:
40px
;
height
:
40px
;
position
:
absolute
;
top
:
70px
;
right
:
30px
;
transform
:
rotate
(
180deg
);
}
.advice_auth_text
{
position
:
absolute
;
left
:
0
;
top
:
0
;
height
:
140px
;
width
:
690px
;
justify-content
:
center
;
align-items
:
center
;
flex-direction
:
row
;
}
.advice_auth_text_content
{
font-size
:
34px
;
color
:
#ffffff
;
font-weight
:
600
;
}
.circle_gray
{
width
:
16px
;
height
:
16px
;
}
.project_advice_text
{
color
:
#947e2c
;
font-size
:
30px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_join_text
{
color
:
#d86161
;
font-size
:
30px
;
padding-right
:
20px
;
font-weight
:
600
;
height
:
90px
;
line-height
:
90px
;
}
.project_see_more
{
width
:
20px
;
height
:
20px
;
position
:
absolute
;
top
:
37px
;
right
:
20px
;
transform
:
rotate
(
0deg
);
}
.test_list
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
}
.test_list1
{
flex-direction
:
row
;
width
:
720px
;
justify-content
:
space-between
;
/*padding-bottom:30px;*/
}
.order_number
{
font-size
:
26px
;
width
:
45px
;
height
:
26px
;
top
:
-7px
;
font-weight
:
600
;
}
.test_item1
{
flex
:
3
;
padding-top
:
45px
;
height
:
166px
;
/*justify-content:center;*/
}
.test_item2
{
flex
:
29
;
padding-top
:
30px
;
padding-bottom
:
30px
;
height
:
166px
;
justify-content
:
center
;
}
.test_item3
{
flex
:
10
;
align-items
:
flex-end
;
height
:
166px
;
padding-bottom
:
30px
;
padding-top
:
30px
;
padding-right
:
30px
;
justify-content
:
center
;
}
.border-bottom
{
border-bottom-style
:
solid
;
border-bottom-color
:
rgba
(
240
,
240
,
240
,
1
);
border-bottom-width
:
1px
;
}
.color-333
{
color
:
#333333
;
}
.color-666
{
color
:
#666666
;
}
.color-999
{
color
:
#999999
;
}
.color-ccc
{
color
:
#cccccc
;
}
.color-42a
{
color
:
#2ab9a5
;
}
.border-color-e5
{
border-color
:
#e5e5e5
;
}
.border-color-94
{
border-color
:
#94dcd2
;
}
.test_name
{
font-size
:
32px
;
margin-bottom
:
30px
;
font-weight
:
600
;
}
.test_info
{
font-size
:
26px
;
}
.go_examination
{
font-size
:
26px
;
/*padding-top:10px;*/
padding-left
:
20px
;
padding-right
:
20px
;
border-radius
:
25px
;
border-style
:
solid
;
border-width
:
1px
;
width
:
120px
;
height
:
50px
;
line-height
:
50px
;
}
.go_result
{
flex-direction
:
row
;
align-items
:
center
;
}
.set_text_see
{
font-size
:
28px
;
color
:
rgba
(
102
,
102
,
102
,
1
);
padding-right
:
10px
;
/*font-weight: 600;*/
}
.item3_right_arrow
{
width
:
20px
;
height
:
20px
;
}
.set_line_item
{
width
:
2px
;
height
:
118px
;
left
:
10px
;
top
:
5px
;
background-color
:
#f0f0f0
;
}
.back-f0
{
}
.back-666
{
background-color
:
#666666
;
}
</
style
>
src/components/stroke/projectContent.vue
浏览文件 @
ff59bca6
...
...
@@ -250,6 +250,7 @@
if
(
sendObj
.
user_role_list
==
"R004"
){
this
.
dataOkForExam
();
}
alert
(
123
)
//configurationModule.checkIDCardAndEducation(sendObj); 111
}
else
{
this
.
$toast
(
"网络异常,请稍后再试"
);
...
...
@@ -460,19 +461,27 @@
// modal.alert({message:'999'})
configurationModule
.
intoCourse
(
obj
);
}
else
{
// modal.alert({message:'xxxxxx'})
const
lastItem
=
this
.
examContent
.
allLists
[
index
-
1
];
if
((
lastItem
.
testNumFlag
>
0
&&
lastItem
.
answerResultModel
.
pass_flag
==
5
)
||
lastItem
.
progress
>=
0
)
{
configurationModule
.
intoCourse
(
obj
);
}
else
{
modal
.
toast
({
message
:
'请按顺序完成学习及考试'
,
duration
:
1.0
});
this
.
$toast
(
'请按顺序完成学习及考试'
)
}
}
}
},
goStudyNative
(
obj
){
this
.
appModuleModel
=
[{
}]
const
paramList
=
setEventByModuleCode
(
JSON
.
parse
(
JSON
.
stringify
(
this
.
appModuleModel
))
);
this
.
$rocNative
.
dispatchEventByModuleCode
({
modeCode
:
'M200'
,
jsonString
:
paramList
,
});
},
diaLogConfirm
(){
this
.
$dialog
.
confirm
({
...
...
src/router/index.js
浏览文件 @
ff59bca6
import
{
router
}
from
'@pica-cli/vue-cli-plugin-pica-cli-plugin/auto'
;
import
Index
from
'@/views/Home.vue'
;
//
import Index from '@/views/Home.vue';
import
{
toggleSkeletonRouter
}
from
'mn-template/plugins/toggleSkeleton.js'
;
import
handleAllRouter
from
'../public_uat'
;
const
routerConfig
=
[
{
path
:
'/'
,
name
:
'Index'
,
component
:
Index
component
:
()
=>
import
(
'@/views/stroke/index.vue'
)
},
{
path
:
'/stroke'
,
...
...
@@ -28,6 +28,16 @@ const routerConfig = [
name
:
'exam-wrong'
,
component
:
()
=>
import
(
'@/views/exam/exam_wrong.vue'
)
},
{
path
:
'/exam-history'
,
name
:
'exam-history'
,
component
:
()
=>
import
(
'@/views/exam/exam_history.vue'
)
},
{
path
:
'/local-exam-history'
,
name
:
'local-exam-history'
,
component
:
()
=>
import
(
'@/views/exam/local_exam_history'
)
},
{
path
:
'*'
,
redirect
:
process
.
env
.
VUE_APP_BASE_ROUTE
...
...
src/views/exam/exam_history.vue
0 → 100644
浏览文件 @
ff59bca6
<
template
>
<scroller
show-scrollbar=
"false"
class=
"back-fff"
>
<div
class=
"contenter"
>
<exam-history
:showHeaderH=
"showHeaderH"
:historyList=
"historyList"
:examId=
"id"
:examType=
"examType"
></exam-history>
<pica-header
title=
"考试记录"
@
goBack=
"goBack"
showHeader=
"true"
></pica-header>
<div
class=
"history-nomore"
v-if=
"historyList.length > 0"
>
<div
class=
"nomore-text"
>
没有更多记录了
</div>
</div>
</div>
</scroller>
</
template
>
<
style
scoped
>
.back-fff
{
background-color
:
#ffffff
;
}
.contenter
{
padding-top
:
150px
;
background-color
:
#ffffff
;
}
</
style
>
<
script
>
import
picaHeader
from
'@/components/stroke/picaHeader'
import
examHistory
from
'@/components/stroke/examHistory'
import
{
getCoopExamResultNews
,
getCoopResultNewsLocal
}
from
'@/api/exam.js'
;
export
default
{
data
:
()
=>
({
id
:
''
,
isPassExam
:
false
,
showHeaderH
:
false
,
historyList
:[],
examType
:
''
}),
computed
:
{
},
components
:{
picaHeader
,
examHistory
},
created
()
{
// this.historyList = this.$route.query.historyList
this
.
id
=
this
.
$route
.
query
.
examId
this
.
init
()
},
methods
:
{
init
(){
let
funCoop
=
getCoopExamResultNews
if
(
this
.
$route
.
query
.
examType
==
'local'
){
funCoop
=
getCoopResultNewsLocal
}
funCoop
({
examId
:
this
.
id
}).
catch
(
res
=>
{
this
.
historyList
=
res
.
data
.
examRecordList
this
.
historyList
.
map
(
res
=>
{
res
.
createdTime
=
res
.
createdTime
.
substring
(
0
,
10
)
})
})
}
}
}
</
script
>
<
style
scoped
>
.history-nomore
{
align-items
:
center
;
margin-top
:
15px
;
padding-bottom
:
15px
;
}
.nomore-text
{
color
:
rgba
(
153
,
153
,
153
,
1
);
font-size
:
15px
;
}
</
style
>
\ No newline at end of file
src/views/exam/exam_wrong.vue
浏览文件 @
ff59bca6
...
...
@@ -2,26 +2,26 @@
<list>
<cell>
<div
class=
"head-fixed"
>
<div
class=
"head-bg"
:style=
"
{backgroundColor: headBg, height:
headHeight + '
px'}">
</div>
<div
class=
"head wrap"
:style=
"
{paddingTop: (70 - headHeight) + 'px'}"
>
<img
@
click=
"back"
src=
"http://pica-pro.oss-cn-shanghai.aliyuncs.com/md_resources/back_gray.png"
style=
"width:
50px; height: 50
px;"
/>
<div
class=
"head-bg"
:style=
"
{backgroundColor: headBg, height:
'5
px'}">
</div>
<div
class=
"head wrap"
>
<img
@
click=
"back"
src=
"http://pica-pro.oss-cn-shanghai.aliyuncs.com/md_resources/back_gray.png"
style=
"width:
25px; height: 25
px;"
/>
<text
class=
"title"
>
错题集
</text>
<text
class=
"empty"
></text>
</div>
</div>
<div
class=
"img-wrap"
>
<img
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/icon_report_grey.png"
style=
"width:
106px; height: 130
px;"
/>
<img
src=
"https://pica-pro.oss-cn-shanghai.aliyuncs.com/eagle_plan/icon_report_grey.png"
style=
"width:
53px; height: 65
px;"
/>
</div>
<div
class=
"result-wrap"
>
<div
style=
"font-size:
32
px;"
>
正确题目数 :
{{
rightNum
}}
题
</div>
<div
style=
"padding-left:
30px;font-size: 32
px;"
>
错误题目数 :
</div>
<div
style=
"color: #d84a38;font-size:
32
px;"
>
{{
wrongNum
}}
题
</div>
<div
style=
"font-size:
16
px;"
>
正确题目数 :
{{
rightNum
}}
题
</div>
<div
style=
"padding-left:
15px;font-size: 16
px;"
>
错误题目数 :
</div>
<div
style=
"color: #d84a38;font-size:
16
px;"
>
{{
wrongNum
}}
题
</div>
</div>
<div
style=
"padding: 0
30
px"
>
<div
style=
"padding: 0
15
px"
>
<div
class=
"separator"
></div>
</div>
<div
class=
"info"
>
<div
style=
"font-size:
40px; padding-bottom: 40px; padding-top: 2
0px;"
>
试题分析
</div>
<div
style=
"font-size:
20px; padding-bottom: 20px; padding-top: 1
0px;"
>
试题分析
</div>
<div
class=
"detail"
v-for=
"(wrong,index) in wrongList"
:key=
"index"
>
<div
class=
"question-index"
>
第
{{
wrong
.
seqNo
}}
题:
</div>
<div
class=
"question-title"
>
{{
wrong
.
question
}}
</div>
...
...
@@ -40,34 +40,34 @@
}
.detail
{
position
:
relative
;
/*padding-left: 30px;*/
padding-bottom
:
15px
;
}
.question-index
{
position
:
absolute
;
top
:
0px
;
left
:
2
0px
;
left
:
1
0px
;
font-weight
:
600
;
font-size
:
32
px
;
font-size
:
16
px
;
}
.answer
{
font-size
:
32
px
;
line-height
:
50
px
;
font-size
:
15
px
;
line-height
:
25
px
;
font-weight
:
600
;
padding-left
:
150
px
;
padding-left
:
65
px
;
}
.question-title
{
font-size
:
32
px
;
font-size
:
16
px
;
font-weight
:
600
;
padding-bottom
:
10
px
;
padding-left
:
150
px
;
padding-bottom
:
5
px
;
padding-left
:
65
px
;
/*text-indent: -150px;*/
}
.result-wrap
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
padding
:
60px
0
10
0px
;
padding
:
30px
0
5
0px
;
}
.separator
{
border-bottom-style
:
solid
;
...
...
@@ -80,12 +80,11 @@
height
:
3px
;
}
.img-wrap
{
display
:
flex
;
flex-direction
:
row
;
justify-content
:
center
;
padding-top
:
22
0px
;
padding-top
:
11
0px
;
}
.head-fixed
{
position
:
fixed
;
top
:
0px
;
...
...
@@ -102,7 +101,7 @@
border-bottom-color
:
#e7e7e7
;
}
.wrap
{
padding
:
70px
30px
20px
2
0px
;
padding
:
1
0px
;
}
.title
{
...
...
@@ -117,6 +116,7 @@
// import WxcLoading from '../../components/wxc-loading'
//let modal = weex.requireModule('modal')
//import WxcLoading from '../../components/wxc-loading'
import
storejs
from
'storejs'
;
import
{
getCoopExamWrongRecords
}
from
'@/api/exam.js'
;
export
default
{
//components: { WxcLoading },
...
...
@@ -127,14 +127,12 @@
wrongNum
:
''
,
headBg
:
'#ffffff'
,
headHeight
:
0
,
token
:
"
E47F468E0BB34ED9ABD38DC16A95CAC2
"
token
:
"
FFA8F78823F44BEC86E5BD816BDA73D5
"
}),
computed
:
{
},
},
created
()
{
if
(
this
.
isAndroid
)
{
this
.
headBg
=
'#999999'
}
this
.
token
=
storejs
.
get
(
'token'
);
this
.
init
()
},
methods
:
{
...
...
src/views/exam/index.vue
浏览文件 @
ff59bca6
...
...
@@ -2,10 +2,10 @@
<list>
<cell>
<div
class=
"head-fixed"
>
<div
class=
"head-bg"
:style=
"
{backgroundColor: headBg, height:
headHeight + '
px'}">
</div>
<div
class=
"head wrap"
:style=
"
{paddingTop: (70 - headHeight) + 'px'}"
>
<div
class=
"head-bg"
:style=
"
{backgroundColor: headBg, height:
'15
px'}">
</div>
<div
class=
"head wrap"
>
<div
@
click=
"giveUp"
class=
"back-wrap"
>
<img
src=
"http://pica-pro.oss-cn-shanghai.aliyuncs.com/md_resources/back_gray.png"
style=
"width:
50px; height: 50
px;"
/>
<img
src=
"http://pica-pro.oss-cn-shanghai.aliyuncs.com/md_resources/back_gray.png"
style=
"width:
25px; height: 25
px;"
/>
<div
class=
"back-txt"
>
放弃考试
</div>
</div>
<text
class=
"empty"
></text>
...
...
@@ -31,7 +31,6 @@
</div>
<div
class=
"questions-wrap"
>
<div
class=
"question"
v-for=
"(item, index) in questions"
:ref=
"'question_' + index"
:key=
"index"
>
<div
class=
"description"
>
{{index + 1}}:{{item.name}}
</div>
<pica-radio
:list=
"item.answerList"
@
wxcRadioListChecked=
"select"
></pica-radio>
...
...
@@ -43,6 +42,9 @@
<div
class=
"status-label"
>
已答题:
</div>
<div
class=
"status-value"
>
{{selectedCount}}/{{questions.length}}
</div>
</div>
<div>
<van-button
type=
"primary"
class=
"coop-btn"
@
click=
"submitQuery"
>
{{isSubmitting ? '提交中' : '提交'}}
</van-button>
</div>
<!-- <wxc-button :btnStyle="submitBtnStyle" :text="isSubmitting ? '提交中' : '提交'"
@wxcButtonClicked="submitQuery"></wxc-button> 111-->
</div>
...
...
@@ -75,7 +77,6 @@
<text slot="title" class="content-title">提醒</text>
<text slot="content" class="content-subtext cont-center">确认要放弃本次考试吗?</text>
</wxc-dialog>
<wxc-dialog confirm-text="确定"
:show="showUnFinishedTip"
main-btn-color="#2ab9a5"
...
...
@@ -93,56 +94,65 @@
<
style
scoped
>
.status-label
{
font-size
:
32
px
;
font-size
:
18
px
;
color
:
rgb
(
102
,
102
,
102
);
line-height
:
88
px
;
line-height
:
44
px
;
}
.status-value
{
font-size
:
32
px
;
font-size
:
16
px
;
color
:
rgb
(
42
,
185
,
165
);
line-height
:
88
px
;
line-height
:
44
px
;
}
.select-status
{
display
:
flex
;
flex-direction
:
row
;
padding
-right
:
8
0px
;
padding
:
0px
2
0px
;
}
.back-wrap
{
display
:
flex
;
flex-direction
:
row
;
}
.question
{
padding
:
0
30px
30
px
;
padding
:
0
15px
15
px
;
border-bottom-style
:
solid
;
border-bottom-width
:
1px
;
border-bottom-color
:
rgb
(
240
,
240
,
240
);
}
.description
{
font-weight
:
600
;
font-size
:
32
px
;
font-size
:
16
px
;
color
:
#333333
;
line-height
:
50
px
;
padding
:
40px
0
15
px
0
;
line-height
:
25
px
;
padding
:
20px
0
7
px
0
;
}
.questions-wrap
{
padding
:
140px
0px
87
px
;
padding
:
60px
0px
45
px
;
background-color
:
white
;
}
.time-label
{
font-size
:
38
px
;
font-size
:
16
px
;
color
:
rgb
(
51
,
51
,
51
);
line-height
:
44
px
;
line-height
:
22
px
;
}
.back-txt
{
font-size
:
34
px
;
font-size
:
17
px
;
color
:
rgb
(
102
,
102
,
102
);
height
:
50
px
;
line-height
:
50
px
;
height
:
25
px
;
line-height
:
25
px
;
}
.time
{
color
:
#666666
;
}
.time-left
{
align-items
:
center
;
display
:
flex
;
justify-content
:
space-between
;
flex-direction
:
row
;
}
.van-count-down
{
margin-left
:
10px
;
}
.empty
{
width
:
50px
;
height
:
3px
;
...
...
@@ -173,6 +183,7 @@
z-index
:
999
;
}
.submit-wrap
{
display
:
flex
;
flex-direction
:
row
;
position
:
fixed
;
bottom
:
0px
;
...
...
@@ -185,6 +196,10 @@
border-top-width
:
1px
;
border-top-color
:
rgba
(
240
,
240
,
240
,
1
);
}
.coop-btn
{
padding
:
0
26px
;
background
:
#58b5a8
;
}
.head
{
flex-direction
:
row
;
justify-content
:
space-between
;
...
...
@@ -193,12 +208,14 @@
border-bottom-color
:
#e7e7e7
;
}
.wrap
{
padding
:
70px
30px
20px
30px
;
padding
:
10px
15px
;
display
:
flex
;
}
</
style
>
<
script
>
import
storejs
from
'storejs'
;
//import { WxcButton, WxcMinibar, WxcCountdown } from 'weex-ui'
// import WxcLoading from '../../components/wxc-loading'
import
PicaRadio
from
'@/components/pica-radio'
...
...
@@ -209,8 +226,7 @@
// const storage = weex.requireModule('storage')
// const dom = weex.requireModule('dom')
import
{
getCoopExamQuest
}
from
'@/api/exam.js'
;
import
{
getCoopExamQuest
,
getAnwserExam
}
from
'@/api/exam.js'
;
export
default
{
components
:
{
PicaRadio
...
...
@@ -241,21 +257,15 @@ export default {
borderRadius
:
0
,
backgroundColor
:
'#58b5a8'
,
},
token
:
"
E47F468E0BB34ED9ABD38DC16A95CAC2
"
token
:
"
FFA8F78823F44BEC86E5BD816BDA73D5
"
}
},
computed
:
{
},
created
()
{
// if(this.isAndroid) {
// this.headBg = '#999999'
// weex.requireModule('eventModule').getStatusBarSize(res => {
// this.headHeight = parseInt(res.height)/1.5
// })
// }
this
.
token
=
storejs
.
get
(
'token'
);
this
.
startNum
=
this
.
$route
.
query
.
startNum
||
-
1
this
.
init
()
this
.
init
();
// weex.requireModule('globalEvent').addEventListener("goPreviousPage", e=> {//监听物理返回上一页
// this.back()
// });
...
...
@@ -304,7 +314,7 @@ export default {
this
.
TIME
=
new
Date
().
getTime
()
+
this
.
examTime
console
.
log
(
this
.
TIME
,
"----000-----"
);
}
else
{
this
.
$toast
(
data
.
respMsg
);
this
.
$toast
(
data
.
respMsg
);
}
})
// this.GET('app/projectExam/questions', para, res => {
...
...
@@ -323,88 +333,135 @@ export default {
// })
},
back
()
{
weex
.
requireModule
(
'eventModule'
).
backPreviousPage
({})
this
.
$router
.
go
(
-
1
);
//weex.requireModule('eventModule').backPreviousPage({})
},
getUnselected
()
{
let
result
=
[]
let
selected
=
this
.
selected
this
.
questions
.
forEach
(
(
question
,
i
)
=>
{
if
(
!
selected
[
i
])
{
result
.
push
({
questionId
:
question
.
id
,
correctId
:
question
.
answerList
[
0
].
correctId
,
answerId
:
0
,
questionType
:
question
.
type
,
seqNo
:
question
.
answerList
[
0
].
seqNo
,
type
:
2
})
}
})
return
result
},
getUnselected
()
{
let
result
=
[]
let
selected
=
this
.
selected
this
.
questions
.
forEach
(
(
question
,
i
)
=>
{
if
(
!
selected
[
i
])
{
result
.
push
({
questionId
:
question
.
id
,
correctId
:
question
.
answerList
[
0
].
correctId
,
answerId
:
0
,
questionType
:
question
.
type
,
seqNo
:
question
.
answerList
[
0
].
seqNo
,
type
:
2
})
}
})
return
result
},
getAnswerTime
()
{
let
surplusTime
=
this
.
TIME
-
new
Date
().
getTime
()
return
surplusTime
>
0
?
Math
.
floor
((
this
.
examTime
-
surplusTime
)
/
1000
)
:
this
.
examTime
/
1000
},
submit
()
{
let
para
=
{
answerTime
:
this
.
getAnswerTime
(),
examId
:
this
.
$route
.
query
.
examId
,
type
:
5
//examId: this.getUrlSearch(weex.config.bundleUrl, 'examId') || 1
}
let
resultList
=
[]
Object
.
keys
(
this
.
selected
).
forEach
(
attr
=>
{
resultList
.
push
(
this
.
selected
[
attr
])
})
if
(
this
.
selected
.
length
!=
this
.
questions
.
length
)
{
resultList
=
resultList
.
concat
(
this
.
getUnselected
())
}
para
.
resultList
=
resultList
this
.
showLoading
=
true
this
.
isSubmitting
=
true
this
.
POST
(
'app/projectExam/apply'
,
para
,
res
=>
{
this
.
showLoading
=
false
this
.
isSubmitting
=
false
let
data
=
res
.
data
if
(
data
.
respCode
==
200
)
{
let
para
=
{
answerTime
:
this
.
getAnswerTime
(),
examId
:
this
.
$route
.
query
.
examId
,
type
:
5
}
let
resultList
=
[]
Object
.
keys
(
this
.
selected
).
forEach
(
attr
=>
{
resultList
.
push
(
this
.
selected
[
attr
])
});
if
(
this
.
selected
.
length
!=
this
.
questions
.
length
)
{
resultList
=
resultList
.
concat
(
this
.
getUnselected
())
}
para
.
resultList
=
resultList
this
.
showLoading
=
true
this
.
isSubmitting
=
true
getAnwserExam
(
para
).
catch
(
res
=>
{
this
.
showLoading
=
false
;
this
.
isSubmitting
=
false
;
let
data
=
res
.
data
;
if
(
data
.
respCode
==
200
)
{
let
query
=
{
examId
:
this
.
$route
.
query
.
examId
,
answerResultId
:
data
.
answerResultId
,
// origin: 'end',
from
:
'exam'
}
}
if
(
this
.
startNum
>
0
){
Vue
.
set
(
query
,
"endNum"
,
this
.
startNum
-
1
)
}
this
.
$router
.
push
({
path
:
'/exam
_
result'
,
path
:
'/exam
-
result'
,
query
:
query
})
}
else
{
modal
.
alert
({
message
:
data
.
respMsg
})
this
.
$toast
(
data
.
respMsg
)
}
})
},
submitQuery
()
{
if
(
this
.
isSubmitting
)
{
return
}
if
(
this
.
isAllSelected
())
{
this
.
showSubmitConfirm
=
true
}
else
{
this
.
showUnFinishedTip
=
true
this
.
firstUnselectedIndex
=
this
.
getFirstUnselected
()
}
},
getFirstUnselected
()
{
})
// this.POST('app/projectExam/apply', para, res => {
// this.showLoading = false
// this.isSubmitting = false
// let data = res.data
// if(data.respCode == 200) {
// let query = {
// examId: this.$route.query.examId,
// answerResultId: data.answerResultId,
// // origin: 'end',
// from: 'exam'
// }
// if (this.startNum >0){
// Vue.set(query, "endNum", this.startNum - 1)
// }
// this.$router.push({
// path:'/exam_result',
// query: query
// })
// } else {
// this.$toast(data.respMsg)
// }
// })
},
submitQuery
()
{
if
(
this
.
isSubmitting
)
{
return
}
if
(
this
.
isAllSelected
())
{
this
.
showSubmitConfirm
=
true
this
.
submitDialog
();
}
else
{
this
.
showUnFinishedTip
=
true
;
this
.
firstUnselectedIndex
=
this
.
getFirstUnselected
();
this
.
submitDialogFinish
();
}
},
submitDialogFinish
(){
let
msg
=
`第
${
this
.
firstUnselectedIndex
}
题尚未做答,请回答所有题目后再提交`
this
.
$dialog
.
alert
({
title
:
'提醒'
,
message
:
msg
,
confirmButtonColor
:
'#94dcd2'
,
})
.
then
(()
=>
{
this
.
unFinishedConfirm
();
})
},
submitDialog
(){
this
.
$dialog
.
confirm
({
title
:
'确定提交考卷'
,
message
:
'一旦提交后,将无法修改答题内容'
,
cancelButtonText
:
'在想一下'
,
confirmButtonText
:
'提交考卷'
,
confirmButtonColor
:
'#94dcd2'
,
cancelButtonColor
:
'#666'
,
})
.
then
(()
=>
{
this
.
submitConfirm
();
})
.
catch
(()
=>
{
this
.
hideSubmitConfirm
();
});
},
getFirstUnselected
()
{
let
count
=
this
.
questions
.
length
let
selectedIndexs
=
Object
.
keys
(
this
.
selected
)
for
(
var
i
=
0
;
i
<
count
;
i
++
)
{
...
...
@@ -412,25 +469,17 @@ export default {
return
i
+
1
}
}
},
},
unFinishedConfirm
()
{
this
.
showUnFinishedTip
=
false
const
el
=
this
.
$refs
[
'question_'
+
(
this
.
firstUnselectedIndex
-
1
)][
0
]
//dom.scrollToElement(el, { offset: -140, animated: false })
},
submitConfirm
()
{
// this.appBuryingPointEntrust({
// ...click_submit_test,
// createdTime: new Date().getTime()
// })
this
.
showSubmitConfirm
=
false
this
.
showSubmitConfirm
=
false
this
.
submit
()
},
},
hideSubmitConfirm
()
{
// this.appBuryingPointEntrust({
// ...click_cancel_test,
// createdTime: new Date().getTime()
// })
this
.
showSubmitConfirm
=
false
},
select
(
obj
)
{
...
...
@@ -441,27 +490,49 @@ export default {
timeout
()
{
if
(
!
this
.
showSubmitConfirm
)
{
this
.
showTimeoutConfirm
=
true
}
},
this
.
$dialog
.
alert
({
title
:
'提醒'
,
message
:
'您已超过限定答题时间,已帮您自动交卷'
,
confirmButtonText
:
'确定'
,
confirmButtonColor
:
'#94dcd2'
,
})
.
then
(()
=>
{
this
.
timeoutConfirm
();
});
}
},
timeoutConfirm
()
{
this
.
showTimeoutConfirm
=
false
this
.
submit
()
},
},
giveUp
()
{
if
(
this
.
isSubmitting
)
{
return
}
if
(
this
.
isSubmitting
)
{
return
}
this
.
showGiveUpConfirm
=
true
},
this
.
$dialog
.
confirm
({
title
:
'提醒'
,
message
:
'确认要放弃本次考试吗?'
,
cancelButtonText
:
'放弃'
,
confirmButtonText
:
'继续考试'
,
confirmButtonColor
:
'#94dcd2'
,
cancelButtonColor
:
'#666'
,
})
.
then
(()
=>
{
this
.
giveUpConfirm
();
})
.
catch
(()
=>
{
this
.
hideGiveUpConfirm
();
});
},
hideGiveUpConfirm
()
{
this
.
showGiveUpConfirm
=
false
this
.
back
()
},
this
.
showGiveUpConfirm
=
false
this
.
back
()
},
giveUpConfirm
()
{
this
.
showGiveUpConfirm
=
false
}
},
destoryed
:
function
()
{
}
}
}
}
</
script
>
\ No newline at end of file
src/views/exam/local_exam_history.vue
0 → 100644
浏览文件 @
ff59bca6
<
template
>
<div
class=
"contenter"
>
<lives-exam-history
:showHeaderH=
"false"
:localHistoryList=
"historyList"
@
goExamStart=
"goExamStart"
@
watchResult=
"watchResult"
></lives-exam-history>
<div
class=
"history-nomore"
v-if=
"historyList.length > 0"
>
<div
class=
"nomore-text"
>
没有更多记录了
</div>
</div>
<pica-header
title=
"考试记录"
@
goBack=
"goBack"
showHeader=
"true"
></pica-header>
</div>
</
template
>
<
style
scoped
>
.back-fff
{
background-color
:
#ffffff
;
}
.contenter
{
padding-top
:
75px
;
background-color
:
#ffffff
;
}
</
style
>
<
script
>
import
storejs
from
'storejs'
;
import
picaHeader
from
'@/components/stroke/picaHeader'
import
livesExamHistory
from
"@/components/stroke/livesExamHistory"
;
import
{
getCoopLiveExam
}
from
'@/api/storke.js'
;
export
default
{
data
:
()
=>
({
id
:
''
,
isPassExam
:
false
,
showHeaderH
:
false
,
historyList
:[],
livesList
:{
examId
:
''
,
examResultId
:
''
,
endDate
:
''
},
token
:
""
}),
computed
:
{
},
components
:{
livesExamHistory
,
picaHeader
},
created
()
{
this
.
token
=
storejs
.
get
(
"token"
);
// this.historyList = this.$route.query.historyList
this
.
id
=
this
.
$route
.
query
.
projectId
this
.
init
()
},
methods
:
{
init
(){
/*this.GET('app/exam/lives/results',{examId:id,pageNo:1,pageSize:15},res=>{
console.log("所有现场考试记录",res)
this.historyList = res.data.examRecordList
this.historyList.map(res=>{
// res.createdTime = res.createdTime.substring(0,10)
})
})*/
let
_self
=
this
getCoopLiveExam
({
id
:
id
,
token
:
this
.
token
}).
catch
(
res
=>
{
if
(
res
&&
res
.
data
){
if
(
res
.
data
.
pLiveExamList
&&
res
.
data
.
pLiveExamList
.
length
){
_self
.
historyList
=
res
.
data
.
pLiveExamList
_self
.
historyList
=
_self
.
historyList
.
concat
([])
}
else
{
_self
.
historyList
=
[]
}
}
else
{
this
.
$toast
(
'网络异常,请稍后再试'
);
}
});
},
//重考
goExamStart
(
obj
){
this
.
$router
.
push
({
path
:
'/exam-result'
,
query
:{
examId
:
obj
.
id
,
origin
:
'start'
,
examType
:
'local'
,
endDate
:
obj
.
endDate
,
answerResultId
:
obj
.
examResultId
}
})
},
//查看
watchResult
(
obj
){
this
.
$router
.
push
({
path
:
'/exam-result'
,
query
:{
examId
:
obj
.
id
,
origin
:
''
,
examType
:
'local'
,
endDate
:
obj
.
endDate
,
answerResultId
:
obj
.
examResultId
}
})
}
}
}
</
script
>
<
style
scoped
>
.history-nomore
{
align-items
:
center
;
margin-top
:
15px
;
padding-bottom
:
15px
;
}
.nomore-text
{
color
:
rgba
(
153
,
153
,
153
,
1
);
font-size
:
15px
;
}
</
style
>
src/views/examResult/index.vue
浏览文件 @
ff59bca6
<
template
>
<!--
<scroller
show-scrollbar=
"false"
style=
"background-color: white;"
>
-->
<div>
<div
class=
"body_background"
>
...
...
@@ -15,10 +14,11 @@
<
style
scoped
>
.body_background
{
background-color
:
#f5f5f5
;
padding-top
:
120
px
;
padding-top
:
55
px
;
}
</
style
>
<
script
>
import
storejs
from
'storejs'
;
import
examInfo
from
'@/components/stroke/examInfo'
import
examHistory
from
'@/components/stroke/examHistory'
import
picaHeader
from
'@/components/stroke/picaHeader'
...
...
@@ -46,7 +46,7 @@ import { getCoopExam ,getCoopExamResultNew,getCoopExamResultNews} from '@/api/ex
testMsg
:
''
,
examType
:
'common'
,
hasWrong
:
false
,
token
:
"
E47F468E0BB34ED9ABD38DC16A95CAC2
"
token
:
""
}),
computed
:
{},
components
:{
...
...
@@ -55,6 +55,7 @@ import { getCoopExam ,getCoopExamResultNew,getCoopExamResultNews} from '@/api/ex
//WxcLoading
},
created
()
{
this
.
token
=
storejs
.
get
(
'token'
);
this
.
examId
=
this
.
$route
.
query
.
examId
this
.
from
=
this
.
$route
.
query
.
from
this
.
showHeader
=
this
.
from
!=
'exam'
...
...
@@ -117,10 +118,11 @@ import { getCoopExam ,getCoopExamResultNew,getCoopExamResultNews} from '@/api/ex
})
}
else
{
this
.
hasWrong
=
true
;
modal
.
toast
({
message
:
res
.
data
.
respMsg
,
duration
:
1.0
})
this
.
$toast
(
res
.
data
.
respMsg
)
// modal.toast({
// message: res.data.respMsg,
// duration: 1.0
// })
}
})
// this.GET('app/projectExam/results',{examId:this.examId,pageNo:1,pageSize:3, type: 5},res=>{
...
...
src/views/stroke/index.js
浏览文件 @
ff59bca6
...
...
@@ -16,7 +16,7 @@
//import WxcDialog from '../components/wxc-dialog'
import
storejs
from
'storejs'
;
import
componentMain
from
'@/components/stroke/componentMain'
;
import
CommonHeader
from
'@/components/common/header'
;
import
livesExamHistory
from
"@/components/stroke/livesExamHistory"
;
...
...
@@ -90,7 +90,7 @@ import { getCoopExamResult } from '@/api/exam.js';
needMarginBottom
:
false
,
marginBottom
:
'0px'
,
parms
:{
id
:
4
,
token
:
"
5CAB7524887647E983660A0F61EE219D
"
id
:
4
,
token
:
"
F693C3AF6D344B7B825D8CC39D495D8E
"
},
flagLoading
:
0
,
title
:
""
,
...
...
@@ -103,6 +103,11 @@ import { getCoopExamResult } from '@/api/exam.js';
keyIndex
(
newval
)
{
this
.
keyIndex
=
newval
;
},
flagLoading
(
newv
)
{
if
(
newv
==
4
)
{
this
.
getOrder
();
}
}
},
created
()
{
// modal.alert({message: 22})
...
...
@@ -110,6 +115,10 @@ import { getCoopExamResult } from '@/api/exam.js';
this
.
allowFlag
=
this
.
$route
.
query
.
allowFlag
||
1
;
this
.
projectId
=
this
.
$route
.
query
.
projectId
||
2
;
this
.
parms
.
id
=
this
.
projectId
;
//this.parms.token = this.$route.query.token || '';
storejs
.
set
(
'token'
,
this
.
parms
.
token
);
this
.
init
();
},
mounted
()
{
...
...
@@ -182,13 +191,12 @@ import { getCoopExamResult } from '@/api/exam.js';
}
else
if
(
res
.
data
.
respCode
==
401
||
res
.
data
.
respCode
==
404
)
{
return
this
.
$rocNative
.
gotoLogin
();
}
this
.
isShow
=
false
;
var
result
=
res
.
data
.
checkResult
;
let
flag
=
result
.
resultFlag
;
if
(
flag
==
1
)
{
this
.
$router
.
push
({
path
:
'/exam
_
result'
,
query
:{
'examId'
:
result
.
examId
,
'origin'
:
'start'
,
'examType'
:
'local'
,
'endDate'
:
result
.
endDate
}
path
:
'/exam
-
result'
,
query
:{
'examId'
:
result
.
examId
,
'origin'
:
'start'
,
'examType'
:
'local'
,
'endDate'
:
result
.
endDate
}
});
}
else
if
(
flag
==
5
)
{
this
.
showExamNotStartTip
=
true
;
...
...
@@ -260,7 +268,7 @@ import { getCoopExamResult } from '@/api/exam.js';
},
seeMoreHistory
()
{
this
.
$router
.
push
({
path
:
'/local
_exam_
history'
,
query
:{
projectId
:
this
.
projectId
}
path
:
'/local
-exam-
history'
,
query
:{
projectId
:
this
.
projectId
}
});
},
codeBtnClicked
()
{
...
...
@@ -407,34 +415,13 @@ import { getCoopExamResult } from '@/api/exam.js';
this
.
pLiveMapping
=
res
.
data
.
pLiveMapping
;
if
(
res
.
data
.
pLiveExamList
&&
res
.
data
.
pLiveExamList
.
length
)
{
this
.
localHistoryList
=
res
.
data
.
pLiveExamList
;
//_self.localHistoryList = _self
.localHistoryList.concat([]);
this
.
localHistoryList
=
this
.
localHistoryList
.
concat
([]);
}
}
else
{
this
.
$toast
(
"网络异常,请稍后再试"
);
}
this
.
getOrder
();
//
this.getOrder();
});
// this.GET('contents/projects/live/' + this.projectId, {}, function (res) {
// // _self.isShow = false
// if (res && res.data) {
// _self.pLiveMapping = res.data.pLiveMapping;
// if (res.data.pLiveExamList && res.data.pLiveExamList.length) {
// _self.localHistoryList = res.data.pLiveExamList;
// _self.localHistoryList.forEach(function (item) {
// });
// _self.localHistoryList = _self.localHistoryList.concat([]);
// }else {
// _self.localHistoryList = [];
// }
// }else{
// modal.toast({
// message: '网络异常,请稍后再试',
// duration: 1.0
// });
// }
// _self.getOrder();
// });
},
getOrder
()
{
...
...
@@ -444,7 +431,7 @@ import { getCoopExamResult } from '@/api/exam.js';
// 组件type
// module_type:1、轮播图组件 5、文案组件 10、考试组件 15、关联课程组件 20、链接组件 25、现场考试组件
if
(
this
.
flagLoading
!=
5
)
{
this
.
flagLoading
=
this
.
flagLoading
+
1
this
.
flagLoading
=
this
.
flagLoading
+
1
;
}
this
.
orderList
=
res
.
data
.
projectList
;
this
.
orderListFlag
=
this
.
orderList
.
some
(
item
=>
{
...
...
@@ -500,73 +487,6 @@ import { getCoopExamResult } from '@/api/exam.js';
this
.
$toast
(
"网络异常,请稍后再试"
);
}
});
// this.GET('contents/projects/' + this.projectId, {}, function (res) {
// if (res && res.data) {
// // 组件type
// // module_type:1、轮播图组件 5、文案组件 10、考试组件 15、关联课程组件 20、链接组件 25、现场考试组件
// _self.orderList = res.data.projectList;
// if (res.data.respCode != 200) {
// modal.toast({
// message: res.data.respMsg,
// duration: 1.0
// });
// return;
// }
// const arr = [{slot:'type_1'}, {slot:'type_2'}, {slot:'type_3'}, {slot:'type_4'}, {slot:'type_5'}];
// _self.slots.length = _self.orderList.length;
// for(let i = 0; i < _self.orderList.length; i++) {
// const number = _self.orderList[i].module_type;
// switch (number) {
// case 1:
// _self.slots[i] = arr[0];
// break;
// case 5:
// _self.slots[i] = arr[1];
// break;
// case 10:
// _self.slots[i] = arr[2];
// break;
// case 15:
// _self.slots[i] = arr[3];
// break;
// case 25:
// _self.slots[i] = arr[4];
// break;
// }
// }
// _self.slots = _self.slots.concat([]);
// _self.allComponentLists = [];
// console.log('===>', _self.slots);
// _self.sliderLists.forEach(function (item) {
// _self.allComponentLists.push(item);
// });
// _self.infoLists.forEach(function (item) {
// _self.allComponentLists.push(item);
// });
// _self.courseLists.forEach(function (item) {
// _self.allComponentLists.push(item);
// });
// _self.examLists.forEach(function (item) {
// _self.allComponentLists.push(item);
// });
// _self.livesExamLists.forEach(function (item) {
// _self.allComponentLists.push(item);
// });
// _self.allComponentLists.sort(function (a, b) {
// return a.seq_no - b.seq_no;
// });
// _self.allComponentLists = _self.allComponentLists.concat([]);// Object.assign([],)
// console.log('allComponentLists', _self.allComponentLists);
// if(_self.orderList.length == 5) {
// }
// }else{
// modal.toast({
// message: '网络异常,请稍后再试',
// duration: 1.0
// });
// }
// });
},
taggleSlot
()
{
if
(
this
.
slot
==
'title'
)
{
...
...
@@ -587,13 +507,20 @@ import { getCoopExamResult } from '@/api/exam.js';
this
.
show
=
true
;
},
goBack
()
{
storejs
.
set
(
'needFlash'
,
'true'
);
try
{
this
.
$rocNative
.
goBack
();
}
catch
(
err
)
{
console
.
log
(
err
);
this
.
$router
.
go
(
-
1
);
}
// storage.setItem('needFlash', 'true');
//configurationModule.goBack(); 11
},
// 重考
goExamStart
(
obj
)
{
this
.
$router
.
push
({
path
:
'/exam
_
result'
,
path
:
'/exam
-
result'
,
query
:{
examId
:
obj
.
id
,
origin
:
'start'
,
...
...
@@ -606,7 +533,7 @@ import { getCoopExamResult } from '@/api/exam.js';
// 查看
watchResult
(
obj
)
{
this
.
$router
.
push
({
path
:
'/exam
_
result'
,
path
:
'/exam
-
result'
,
query
:{
examId
:
obj
.
id
,
origin
:
''
,
...
...
src/views/stroke/index.vue
浏览文件 @
ff59bca6
...
...
@@ -156,7 +156,6 @@
</div>
</div>
</div>
</van-overlay>
</div>
</template>
...
...
@@ -165,9 +164,12 @@
import
stokeJs
from
'./index'
;
export
default
stokeJs
;
</
script
>
<
style
>
.top-error-message
{
display
:
none
;
}
</
style
>
<
style
scoped
lang=
"scss"
>
.project_advice_new
{
justify-content
:center
;
align-items
:center
;
...
...
yarn.lock
浏览文件 @
ff59bca6
...
...
@@ -12217,6 +12217,11 @@
dependencies:
"graceful-fs" "^4.1.3"
"storejs@^2.0.1":
"integrity" "sha1-NCT0yI/5eeOWJBPOYOpD/WYKllc="
"resolved" "http://192.168.110.93:4873/storejs/-/storejs-2.0.1.tgz"
"version" "2.0.1"
"stream-browserify@^2.0.1":
"integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg=="
"resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz"
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录