|
|
|
@ -7,6 +7,7 @@
|
|
|
|
|
</div> |
|
|
|
|
</el-dialog> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<div v-show="AllLevel" class="clearance flex-5"> |
|
|
|
|
<div class="pic_fs"></div> |
|
|
|
|
<div class="txt f18"> |
|
|
|
@ -37,6 +38,7 @@
|
|
|
|
|
@click="gotoLevel(index)"> |
|
|
|
|
<div v-show="jiayou" class="gps" v-if="index === curGps"></div> |
|
|
|
|
<div class="gps" v-if="index === curGps_jiangli"></div> |
|
|
|
|
<i class="iwancheng" v-if="nodeFullArr.includes(index)"></i> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<!-- 路线 --> |
|
|
|
@ -86,7 +88,7 @@
|
|
|
|
|
</ul> |
|
|
|
|
</div> |
|
|
|
|
<div class="cen" :class="styTsam" style="height: 330px; padding: 0; overflow: hidden;" v-loading="loading"> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 认证板块 --> |
|
|
|
|
<div v-show="showCert" class="cen" style="height: 330px; padding: 0;"> |
|
|
|
|
<div class="lessinfo"> |
|
|
|
@ -94,7 +96,7 @@
|
|
|
|
|
<div class="f12" style="padding-top: 6px;">获得如下奖励:</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div v-show="showCertYes"> |
|
|
|
|
<div class=" txt-c"> |
|
|
|
|
<div class="f16 col849" style="padding:20px 0 10px 0; letter-spacing:2px;">观看完所有视频可抽取红包</div> |
|
|
|
@ -127,7 +129,8 @@
|
|
|
|
|
<div class="f16 col849" style="padding:20px 0 10px 0; letter-spacing:2px;">观看完所有视频可抽取红包</div> |
|
|
|
|
<div><img src="@/assets/guide/finereport/hongbao_suo.png" width="288"></div> |
|
|
|
|
<div class="txt-c f14" style="margin-top: 8px;"> |
|
|
|
|
完成 <a class="col008" target="_blank" href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
完成 <a class="col008" target="_blank" |
|
|
|
|
href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
即可领取价值200元的学习资料 |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -148,7 +151,8 @@
|
|
|
|
|
class="col333">适用于</span><span class="col008">《报表工程师从 入门到精通·实战班》</span></a> |
|
|
|
|
</div> |
|
|
|
|
<div class="txt-c f14" style="margin-top: 8px;"> |
|
|
|
|
完成 <a class="col008" target="_blank" href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
完成 <a class="col008" target="_blank" |
|
|
|
|
href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
即可领取价值200元的学习资料 |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
@ -184,9 +188,10 @@
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="txt-c f14" style="margin-top: 8px;"> |
|
|
|
|
完成 <a class="col008" target="_blank" href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
完成 <a class="col008" target="_blank" |
|
|
|
|
href="https://t6ixa9nyl6.jiandaoyun.com/f/63b3d37b9c8c9200080dcf9a">入门能力自测</a> |
|
|
|
|
即可领取价值200元的学习资料 |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
@ -426,14 +431,23 @@
|
|
|
|
|
isStudentList: false, |
|
|
|
|
curGps_jiangli: false, |
|
|
|
|
autoNextch: true, |
|
|
|
|
localStorageNode: 0 |
|
|
|
|
localStorageNode: 0, |
|
|
|
|
nodeFullArr: [], |
|
|
|
|
nodeFullArrCount: [{count:0},{count:0},{count:0},{count:0},{count:0},{count:0},{count:0},{count:0}] |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
// 未登录跳转 |
|
|
|
|
// if (!store.getters.get_uid) { |
|
|
|
|
// window.location.href = proxy.$root.com_id_url + '/signin/?referrer=' + proxy.$root.com_edu_url + route.path; |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 数组去重 |
|
|
|
|
// function noRepeat(arr) { |
|
|
|
|
// var newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点 |
|
|
|
|
// return newArr |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取当前本地存储的学习节点 |
|
|
|
|
state.localStorageNode = parseInt(localStorage.getItem('fr_guide_node')) || 0; |
|
|
|
@ -610,6 +624,7 @@
|
|
|
|
|
|
|
|
|
|
if (res.status === 1) { |
|
|
|
|
state.nodeData = res.data; |
|
|
|
|
state.nodeFullArr = res.data.nodes; |
|
|
|
|
// 更换为cookie记录访问节点 |
|
|
|
|
state.curLevel = state.localStorageNode; |
|
|
|
|
state.curGps = state.localStorageNode; |
|
|
|
@ -677,6 +692,8 @@
|
|
|
|
|
state.msg = res.message; |
|
|
|
|
state.looplist = res.data.list; |
|
|
|
|
state.firstID = res.data.list[0].video[0].id; |
|
|
|
|
// 计算节点完成度 2013 |
|
|
|
|
// nodeFullArr(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 默认显示的课程 |
|
|
|
@ -692,6 +709,7 @@
|
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 只读取有视频章节的关卡 |
|
|
|
|
if (state.curLevel < state.renzheng) { |
|
|
|
|
state.newplaytil = state.newplaytilArr[state.curLevel].name; |
|
|
|
@ -704,7 +722,7 @@
|
|
|
|
|
if (state.mkProgress == state.newplayNum && state.curLevel < state.renzheng) { |
|
|
|
|
state.isAllChapter = true; |
|
|
|
|
} |
|
|
|
|
//console.log(state.mkProgress,state.newplayNum); |
|
|
|
|
// console.log(state.mkProgress,state.newplayNum); |
|
|
|
|
|
|
|
|
|
// 首次进度条动画效果 |
|
|
|
|
state.looplist.forEach((item, index) => { |
|
|
|
@ -823,31 +841,75 @@
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 计算节点完成度 2013 |
|
|
|
|
// const nodeFullArr = () => { |
|
|
|
|
// state.looplist.forEach((item, index) => { |
|
|
|
|
// state.looplist[index].video.forEach((item) => { |
|
|
|
|
|
|
|
|
|
// state.arrNewId.forEach((itemIdArr, indexId) => { |
|
|
|
|
// if (in_array(item.id, itemIdArr)) { |
|
|
|
|
// //总小节进度 |
|
|
|
|
// if (item.play_progress > 0) { |
|
|
|
|
// state.nodeFullArrCount[indexId].count = state.nodeFullArrCount[indexId].count + 1; |
|
|
|
|
// if (state.nodeFullArrCount[indexId].count == state.arrNewId[indexId].length) { |
|
|
|
|
// state.nodeFullArr.push(indexId); |
|
|
|
|
// } |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
// } |
|
|
|
|
// }); |
|
|
|
|
|
|
|
|
|
// }); |
|
|
|
|
// }); |
|
|
|
|
// state.nodeFullArr = noRepeat(state.nodeFullArr); |
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 埋点请求 |
|
|
|
|
const postlogData = async (needUpdateNode='') => { |
|
|
|
|
const postlogData = async (needUpdateNode = '') => { |
|
|
|
|
let logData = { |
|
|
|
|
logid: state.logid, |
|
|
|
|
pytime: localStorage.getItem(state.videoid + '_playTime_video'), |
|
|
|
|
} |
|
|
|
|
let isPtime = localStorage.getItem(state.videoid + '_playTime_video'); |
|
|
|
|
console.log(state.videoid); |
|
|
|
|
// console.log('videoId',state.videoid); |
|
|
|
|
|
|
|
|
|
if (isPtime > 2) { |
|
|
|
|
//观看记录 |
|
|
|
|
await classlog(logData); |
|
|
|
|
|
|
|
|
|
// 更新进度节点 2023.01 |
|
|
|
|
if(needUpdateNode=='updateNode'){ |
|
|
|
|
let nodeData = { |
|
|
|
|
node: state.localStorageNode |
|
|
|
|
} |
|
|
|
|
const res = await updateNodes(nodeData); |
|
|
|
|
if (res.code === 200 && res.status>=0) { |
|
|
|
|
// 每次看完视频校验是否通关 且没领奖励 |
|
|
|
|
if (res.data.node === state.jiangli && res.data.gift<1) { |
|
|
|
|
// 通关动画 |
|
|
|
|
levelFs(); |
|
|
|
|
// 关闭视频后 更新进度节点 2023.01 |
|
|
|
|
if (needUpdateNode == 'updateNode') { |
|
|
|
|
state.mkProgress = 0; |
|
|
|
|
// 统计当前节点视频是否看完 |
|
|
|
|
state.looplist.forEach((item, index) => { |
|
|
|
|
state.looplist[index].video.forEach((item) => { |
|
|
|
|
if (in_array(item.id, state.arrNewId[state.localStorageNode])) { |
|
|
|
|
//总小节进度 |
|
|
|
|
if (item.play_progress > 0) { |
|
|
|
|
// console.log('id',item.id); |
|
|
|
|
state.mkProgress = state.mkProgress + 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
state.newplayNum = state.arrNewId[state.localStorageNode].length; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 判断当前章节是否全部完成 如果看完这发送节点埋点 |
|
|
|
|
console.log('当前节点' + state.localStorageNode, '视频数' + state.newplayNum, '已看' + state.mkProgress); |
|
|
|
|
if (state.mkProgress == state.newplayNum) { |
|
|
|
|
let nodeData = { |
|
|
|
|
node: state.localStorageNode |
|
|
|
|
} |
|
|
|
|
const res = await updateNodes(nodeData); |
|
|
|
|
state.nodeFullArr = res.data.nodes; |
|
|
|
|
if (res.code === 200 && res.status >= 0) { |
|
|
|
|
// 每次看完视频校验是否通关 且没领奖励 |
|
|
|
|
if (res.data.node === state.jiangli && res.data.gift < 1) { |
|
|
|
|
// 通关动画 |
|
|
|
|
levelFs(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -1350,7 +1412,7 @@
|
|
|
|
|
|
|
|
|
|
.ch_two { |
|
|
|
|
width: 170px; |
|
|
|
|
height: 178px; |
|
|
|
|
height: 158px; |
|
|
|
|
left: 288px; |
|
|
|
|
top: -6px; |
|
|
|
|
|
|
|
|
@ -1364,7 +1426,7 @@
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
width: 180px; |
|
|
|
|
height: 188px; |
|
|
|
|
height: 168px; |
|
|
|
|
margin-top: -10px; |
|
|
|
|
margin-left: -6px; |
|
|
|
|
opacity: 1; |
|
|
|
@ -1373,7 +1435,7 @@
|
|
|
|
|
|
|
|
|
|
.ch_three { |
|
|
|
|
width: 162px; |
|
|
|
|
height: 182px; |
|
|
|
|
height: 165px; |
|
|
|
|
left: 460px; |
|
|
|
|
top: 86px; |
|
|
|
|
|
|
|
|
@ -1387,7 +1449,7 @@
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
width: 172px; |
|
|
|
|
height: 192px; |
|
|
|
|
height: 175px; |
|
|
|
|
margin-top: -10px; |
|
|
|
|
margin-left: -3px; |
|
|
|
|
opacity: 1; |
|
|
|
@ -1396,7 +1458,7 @@
|
|
|
|
|
|
|
|
|
|
.ch_four { |
|
|
|
|
width: 165px; |
|
|
|
|
height: 184px; |
|
|
|
|
height: 170px; |
|
|
|
|
left: 295px; |
|
|
|
|
top: 178px; |
|
|
|
|
|
|
|
|
@ -1410,7 +1472,7 @@
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
width: 175px; |
|
|
|
|
height: 194px; |
|
|
|
|
height: 180px; |
|
|
|
|
margin-top: -10px; |
|
|
|
|
margin-left: -5px; |
|
|
|
|
opacity: 1; |
|
|
|
@ -1442,10 +1504,10 @@
|
|
|
|
|
|
|
|
|
|
.ch_six { |
|
|
|
|
width: 177px; |
|
|
|
|
height: 183px; |
|
|
|
|
height: 163px; |
|
|
|
|
left: 630px; |
|
|
|
|
top: 200px; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
&.yes { |
|
|
|
|
background-image: url("~@/assets/guide/finereport/six.png"); |
|
|
|
@ -1457,7 +1519,7 @@
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
width: 187px; |
|
|
|
|
height: 193px; |
|
|
|
|
height: 173px; |
|
|
|
|
margin-top: -10px; |
|
|
|
|
margin-left: -5px; |
|
|
|
|
opacity: 1; |
|
|
|
@ -1466,7 +1528,7 @@
|
|
|
|
|
|
|
|
|
|
.ch_seven { |
|
|
|
|
width: 165px; |
|
|
|
|
height: 170px; |
|
|
|
|
height: 165px; |
|
|
|
|
left: 800px; |
|
|
|
|
top: 310px; |
|
|
|
|
|
|
|
|
@ -1480,7 +1542,7 @@
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
|
width: 175px; |
|
|
|
|
height: 180px; |
|
|
|
|
height: 175px; |
|
|
|
|
margin-top: -8px; |
|
|
|
|
margin-left: -5px; |
|
|
|
|
opacity: 1; |
|
|
|
|