Compare commits
96 Commits
release_20
...
zcwy_0716_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fa044187bc | ||
|
|
5119aadf66 | ||
|
|
59571d216e | ||
|
|
f6244aa462 | ||
|
|
f854a9c5e9 | ||
|
|
cb708079ba | ||
|
|
8a933a6330 | ||
|
|
18adb406a2 | ||
|
|
b40dd4fb96 | ||
|
|
e82b7eb3cf | ||
|
|
c054026259 | ||
|
|
482cd48571 | ||
|
|
2dc9bcdbd3 | ||
|
|
3e57c4bedb | ||
|
|
d9bc4603af | ||
|
|
158c836cd1 | ||
|
|
972f2cb097 | ||
|
|
c98e079684 | ||
|
|
a07f38d33c | ||
|
|
21cf02d873 | ||
|
|
275e59987f | ||
|
|
cb43195803 | ||
|
|
ddbb6c7a2e | ||
|
|
0e18d143d9 | ||
|
|
99ea8d35c9 | ||
|
|
dfda1936c7 | ||
|
|
b120e0f53b | ||
|
|
a143a8ecaa | ||
|
|
458e20e4c2 | ||
|
|
8883cce52f | ||
|
|
2aa861c2a1 | ||
|
|
bc408c039e | ||
|
|
4269bff0b5 | ||
|
|
c0575661c0 | ||
|
|
2030879c1f | ||
|
|
233f21e310 | ||
|
|
ef0bcbf542 | ||
|
|
3d018a4221 | ||
|
|
8db79d599b | ||
|
|
4d96ad1b22 | ||
|
|
bee4253448 | ||
|
|
99cd7cea6b | ||
|
|
6ebafa6ed7 | ||
|
|
9c198f52a3 | ||
|
|
94de112f49 | ||
|
|
2f9c3827ee | ||
|
|
245ce904ac | ||
|
|
7a413ff1c7 | ||
|
|
cd9bf1261a | ||
|
|
95ba2f107b | ||
|
|
0a6548ba57 | ||
|
|
eee49b3742 | ||
|
|
f133294879 | ||
|
|
94595f256d | ||
|
|
17528eb465 | ||
|
|
10f955a58f | ||
|
|
b691688775 | ||
|
|
d8a69328f1 | ||
|
|
10e82a1608 | ||
|
|
a535b6ee85 | ||
|
|
3264dcaa43 | ||
|
|
c37442103a | ||
|
|
549b74d47d | ||
|
|
0afaea52ba | ||
|
|
dd52845b19 | ||
|
|
dc118c19ee | ||
|
|
3f2db4136c | ||
|
|
e82ea0709d | ||
|
|
fd704f91d2 | ||
|
|
1eb82c3871 | ||
|
|
9d57cab7d3 | ||
|
|
83257c5fba | ||
|
|
8167d9f430 | ||
|
|
e08ec8484f | ||
|
|
29d5ae0100 | ||
|
|
128f21e454 | ||
|
|
a74a3dc225 | ||
|
|
2c29bb5b03 | ||
|
|
9da8b65739 | ||
|
|
aec5834061 | ||
|
|
8619646405 | ||
|
|
e1eef650ee | ||
|
|
52412849fe | ||
|
|
cf4a114eb6 | ||
|
|
dd96b610bd | ||
|
|
c7ce891634 | ||
|
|
b2177abe20 | ||
|
|
660d834c30 | ||
|
|
ebdd865e71 | ||
|
|
302c3fac3b | ||
|
|
d8e8efdba3 | ||
|
|
2b617297f9 | ||
|
|
d06e4b40dd | ||
|
|
9b7b073011 | ||
|
|
e6581ffbbe | ||
|
|
fcfc575a4c |
11
src/api/growth/index.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import ajax from "@/api/ajax"
|
||||
//获取详情
|
||||
export const getList = (params) => ajax.get('/manageApi',`/stu/grow/getStuLearnInfo?userId=${params}`);
|
||||
//获取路径图详情
|
||||
export const taskList = (params) => ajax.get('/manageApi',`/stu/grow/taskList?growId=${params}`);
|
||||
//全岗位路径
|
||||
export const getFullJobPath = (params) => ajax.get('/manageApi',`/stu/grow/getFullJobPath`);
|
||||
//外部考试
|
||||
export const queryExternalExam = (params) => ajax.get('/manageApi',`/external/exam/queryExternalExam?externalId=${params.externalId}&type=14`);
|
||||
//外部考试点击调用
|
||||
export const submitExternalExam = (params) => ajax.postJson('/manageApi',`/stu/externalExam/submitExternalExam`,params);
|
||||
@@ -20,7 +20,25 @@ const getTaskNum = function(){
|
||||
const userTaskList = function(data){
|
||||
return ajax.postJson(baseURL,'/todoTask/queryTodoTaskDetail',data);
|
||||
}
|
||||
|
||||
//已读
|
||||
const userRead = function(data){
|
||||
return ajax.postJson(baseURL,'/todoTask/read',data);
|
||||
}
|
||||
//查询未读数量
|
||||
const queryTaskCounts = function(obj){
|
||||
return ajax.postJson(baseURL,'/todoTask/queryTaskCounts',obj);
|
||||
}
|
||||
//领导力必修
|
||||
const leadership = function(data){
|
||||
return ajax.postJson(baseURL,'/todoTask/leadership',data);
|
||||
}
|
||||
//定制化学习 1.学习项目 2.学习路径
|
||||
const customized = function(data){
|
||||
return ajax.postJson(baseURL,'/todoTask/customized',data);
|
||||
}
|
||||
const compulsoryList = function(data){
|
||||
return ajax.postJson(baseURL,'/todoTask/compulsoryList',data);
|
||||
}
|
||||
/**删除学习,取消报名*/
|
||||
const userDeleteStudy = function(data){
|
||||
return ajax.postJson(baseURL,'/stu/project/stuCancelEnrollment',data);
|
||||
@@ -37,6 +55,11 @@ const userRsSginupCourse = function(data){
|
||||
export default {
|
||||
getTaskNum,
|
||||
userTaskList,
|
||||
leadership,
|
||||
customized,
|
||||
compulsoryList,
|
||||
userDeleteStudy,
|
||||
userRsSginupCourse
|
||||
userRsSginupCourse,
|
||||
queryTaskCounts,
|
||||
userRead
|
||||
}
|
||||
|
||||
BIN
src/assets/images/growth/CurrentPath.png
Executable file
|
After Width: | Height: | Size: 470 B |
BIN
src/assets/images/growth/NoPermissionPath.png
Executable file
|
After Width: | Height: | Size: 442 B |
BIN
src/assets/images/growth/OtherPath.png
Executable file
|
After Width: | Height: | Size: 422 B |
BIN
src/assets/images/growth/begin.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
src/assets/images/growth/close.png
Normal file
|
After Width: | Height: | Size: 649 B |
BIN
src/assets/images/growth/explain.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/images/growth/fileBack.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
src/assets/images/growth/firstRoadmap.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
src/assets/images/growth/growthLeft.png
Normal file
|
After Width: | Height: | Size: 360 B |
BIN
src/assets/images/growth/growthRight.png
Normal file
|
After Width: | Height: | Size: 280 B |
BIN
src/assets/images/growth/growthTime.png
Normal file
|
After Width: | Height: | Size: 503 B |
BIN
src/assets/images/growth/mark.png
Normal file
|
After Width: | Height: | Size: 625 B |
BIN
src/assets/images/growth/plane.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/images/growth/ppt.png
Normal file
|
After Width: | Height: | Size: 586 B |
BIN
src/assets/images/growth/return.png
Normal file
|
After Width: | Height: | Size: 818 B |
BIN
src/assets/images/growth/roadmap.png
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
src/assets/images/growth/yuan.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
@@ -147,6 +147,9 @@ import yearMedal from '@/components/Popup/China2023.vue';
|
||||
import apiBoeCourse from '@/api/boe/course.js';
|
||||
import {userAvatarText} from "@/utils/tools.js";
|
||||
import apiCase from "@/api/modules/cases.js";
|
||||
import apiManage from '@/api/manage/manage.js'
|
||||
import {getList} from '@/api/growth'
|
||||
import apiCourseStudy from '@/api/modules/courseStudy.js';
|
||||
export default {
|
||||
props: {
|
||||
current: {
|
||||
@@ -211,7 +214,6 @@ export default {
|
||||
//this.loadPopupConfig();
|
||||
},
|
||||
methods: {
|
||||
|
||||
setCurIdentity(iden){
|
||||
this.$store.dispatch('SetCurIdentity',iden);
|
||||
},
|
||||
|
||||
@@ -9,12 +9,13 @@
|
||||
> -->
|
||||
<!-- <i class="el-icon-collection-tag"></i> 我的导航 -->
|
||||
<!-- </div> -->
|
||||
<!-- :default-openeds="['manageTodo','manageFinish','teacherTodo','teacherFinish','lecturer','myqa','notice','mystudy', 'course', 'exam', 'u001', 'u002', 'u003', 'u004','mylecnotes','mycaseRecord']" -->
|
||||
<div class="uc-menu" style="background-color: #ffffff;padding-bottom:20px">
|
||||
<el-menu
|
||||
:default-active="activeMenu"
|
||||
router
|
||||
active-text-color="#3379FB"
|
||||
:default-openeds="['manageTodo','manageFinish','teacherTodo','teacherFinish','lecturer','myqa','notice','mystudy', 'course', 'exam', 'u001', 'u002', 'u003', 'u004','mylecnotes','mycaseRecord']"
|
||||
:default-openeds="openedsList"
|
||||
class="el-menu-vertical"
|
||||
@open="handleOpen"
|
||||
@close="handleClose"
|
||||
@@ -173,7 +174,7 @@
|
||||
<template slot="title">
|
||||
<svg-icon icon-class="course" style="font-size:16px"></svg-icon>
|
||||
<!-- <i class="el-icon-s-grid"></i> -->
|
||||
<span>我的课程</span>
|
||||
<span>专业贡献</span>
|
||||
</template>
|
||||
<el-menu-item index="/need/course">
|
||||
<!-- <i class="el-icon-menu"></i> -->
|
||||
@@ -242,27 +243,30 @@
|
||||
<svg-icon :icon-class="activeMenu == '/user/medal'?'myxunzhang-active':'myxunzhang'"></svg-icon>
|
||||
<span slot="title">我的勋章</span>
|
||||
</el-menu-item>
|
||||
<el-submenu index="mystudy" v-show="curIdentity == 1">
|
||||
<template slot="title">
|
||||
<!-- <el-submenu index="mystudy" v-show="curIdentity == 1">
|
||||
<template slot="title"> -->
|
||||
<!-- <i class="el-icon-s-grid"></i> -->
|
||||
<svg-icon icon-class="mystudy"></svg-icon>
|
||||
<!-- <svg-icon icon-class="mystudy"></svg-icon>
|
||||
<span>我的学习</span>
|
||||
</template>
|
||||
<el-menu-item index="/uc/study/task">
|
||||
</template> -->
|
||||
<!-- <el-menu-item index="/uc/study/task"> -->
|
||||
<!-- <i class="el-icon-menu"></i> -->
|
||||
<span slot="title" class="study textl"><el-badge :value="studyTaskCount||''" class="item">学习任务</el-badge></span>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="/uc/study/courses">
|
||||
<!-- <span slot="title" class="study textl"><el-badge :value="studyTaskCount||''" class="item">学习任务</el-badge></span>
|
||||
</el-menu-item> -->
|
||||
<!-- <el-menu-item index="/uc/study/courses"> -->
|
||||
<!-- <i class="el-icon-menu"></i> -->
|
||||
<!-- <span slot="title" class="textl">自主学习</span> -->
|
||||
<span slot="title" class="textl">我报名的</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="/exam/mytask">
|
||||
<!-- <i class="el-icon-menu"></i> -->
|
||||
<!-- <span slot="title" class="textl">我报名的</span>
|
||||
</el-menu-item> -->
|
||||
<!-- <el-menu-item index="/exam/mytask">
|
||||
<i class="el-icon-menu"></i>
|
||||
<span slot="title" class="textl">我的考试</span>
|
||||
</el-menu-item>
|
||||
<!---去掉->
|
||||
<!-- <el-menu-item index="/uc/study/path" v-show="isTest">
|
||||
</el-menu-item> -->
|
||||
<!-- <el-menu-item index="/uc/study/growth">
|
||||
<span slot="title" class="textl">成长路径</span>
|
||||
</el-menu-item> -->
|
||||
<!-- 去掉
|
||||
<el-menu-item index="/uc/study/path" v-show="isTest">
|
||||
<span slot="title" class="textl">学习路径图</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="/uc/study/project" v-show="isTest">
|
||||
@@ -272,7 +276,47 @@
|
||||
<!-- <i class="el-icon-menu"></i> -->
|
||||
<!-- <span slot="title" class="textl">历史记录</span>
|
||||
</el-menu-item> -->
|
||||
<!-- </el-submenu> -->
|
||||
<el-submenu v-if="fistTotals+pathTotals+growTotal" index="mystudy" v-show="curIdentity == 1">
|
||||
<template slot="title">
|
||||
<!-- <svg-icon icon-class="mystudy"></svg-icon> -->
|
||||
<i style="margin-right: 8px;width: 19px;color:#303133;" class="el-icon-collection"></i>
|
||||
<span><el-badge :value="fistTotal + pathTotal||''" class="item">我的必修</el-badge></span>
|
||||
</template>
|
||||
<el-menu-item v-if="fistTotals" index="/uc/study/task?type=1">
|
||||
<span slot="title" class="study textl"><el-badge :value="fistTotal||''" class="item">领导力必修</el-badge></span>
|
||||
</el-menu-item>
|
||||
<el-menu-item v-if="growTotal" index="/uc/study/growth">
|
||||
<span slot="title" class="textl">专业力必修</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item v-if="pathTotals" index="/uc/study/task?type=2">
|
||||
<span slot="title" class="textl"><el-badge :value="pathTotal||''" class="item">定制化学习</el-badge></span>
|
||||
</el-menu-item>
|
||||
</el-submenu>
|
||||
<el-menu-item v-else index="/uc/study/task?type=9" v-show="curIdentity == 1">
|
||||
<!-- <svg-icon :icon-class="activeMenu == '/uc/study/task'?'mystudy':'mystudy'"></svg-icon> -->
|
||||
<i style="margin-right: 8px;width: 19px;" :style="{color:activeMenu == '/uc/study/task?type=9'?'rgb(51, 121, 251)':'#303133'}" class="el-icon-collection"></i>
|
||||
<span slot="title">我的必修</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item v-if="courseNum == 0" index="/uc/study/courses" v-show="curIdentity == 1">
|
||||
<!-- <svg-icon :icon-class="activeMenu == '/exam/mytask'?'mybiji-active':'mybiji'"></svg-icon> -->
|
||||
<svg-icon icon-class="mystudy"></svg-icon>
|
||||
<span slot="title">我的选修</span>
|
||||
</el-menu-item>
|
||||
<el-submenu v-else index="myelective" v-show="curIdentity == 1">
|
||||
<template slot="title">
|
||||
<svg-icon icon-class="mystudy"></svg-icon>
|
||||
<span>我的选修</span>
|
||||
</template>
|
||||
<el-menu-item index="/uc/study/courses">
|
||||
<span slot="title" class="study textl">自选学习</span>
|
||||
</el-menu-item>
|
||||
</el-submenu>
|
||||
<el-menu-item index="/exam/mytask" v-show="curIdentity == 1">
|
||||
<!-- <svg-icon :icon-class="activeMenu == '/exam/mytask'?'mybiji-active':'mybiji'"></svg-icon> -->
|
||||
<i style="margin-right: 8px;width: 19px;" :style="{color:activeMenu == '/exam/mytask'?'rgb(51, 121, 251)':'#303133'}" class="el-icon-reading"></i>
|
||||
<span slot="title">我的考试</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="/user/Mynotes" v-show="curIdentity == 1">
|
||||
<svg-icon :icon-class="activeMenu == '/user/Mynotes'?'mybiji-active':'mybiji'"></svg-icon>
|
||||
<span slot="title">我的笔记</span>
|
||||
@@ -382,10 +426,12 @@
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import apicourseStudy from "../../api/modules/courseStudy.js"
|
||||
import apiCourseStudy from '@/api/modules/courseStudy.js'
|
||||
import {pageList} from "@/api/modules/lecturer"
|
||||
import courseImage from "@/components/Course/courseImage.vue"
|
||||
import testUser from '@/utils/testUsers.js'
|
||||
import apiManage from '@/api/manage/manage.js'
|
||||
import {getList} from '@/api/growth'
|
||||
export default {
|
||||
name: 'UcMenu',
|
||||
components: {
|
||||
@@ -396,6 +442,25 @@ export default {
|
||||
activeMenu() {
|
||||
const route = this.$route;
|
||||
const { meta, path } = route;
|
||||
console.log(path,meta,'path')
|
||||
console.log(this.fistTotals,this.growTotal,this.pathTotals,'geshu')
|
||||
if(path == '/uc/study/task' || path == '/uc/study/growth'){
|
||||
this.openedsList = ['mystudy']
|
||||
// window.location.href = `${this.webBaseUrl}/uc/study/task?type=${this.fistTotals || this.growTotal || this.pathTotals}`
|
||||
}
|
||||
console.log('1')
|
||||
if(path == '/uc/study/courses'){
|
||||
'/uc/study/courses'
|
||||
}
|
||||
if(sessionStorage.getItem('totalNums') == 0&&path == '/uc/study/task'){
|
||||
return '/uc/study/task?type=9'
|
||||
}
|
||||
console.log('2')
|
||||
if(path == '/uc/study/task'){
|
||||
console.log('/uc/study/task?type=' + (route.query.type || (this.fistTotals && 1) || 2),'type')
|
||||
return '/uc/study/task?type=' + (route.query.type || (this.fistTotals && 1) || 2)
|
||||
}
|
||||
console.log('3')
|
||||
if(meta.title == '添加受众' || meta.title == '查看受众'){
|
||||
meta.activeMenu = '/manage/ugroups'
|
||||
}
|
||||
@@ -413,10 +478,21 @@ export default {
|
||||
isCollapse: false,
|
||||
lastStudy:{},
|
||||
overlayShow: false,
|
||||
instructor:0
|
||||
instructor:0,
|
||||
fistTotal:0,
|
||||
fistTotals:1,
|
||||
proTotal: 0,
|
||||
proTotals: 1,
|
||||
pathTotal:0,
|
||||
pathTotals:1,
|
||||
growTotal: 1,
|
||||
openedsList:[],
|
||||
courseNum: 0,
|
||||
};
|
||||
},
|
||||
created() {
|
||||
this.learnTotal()
|
||||
this.courseNumsData()
|
||||
this.$store.dispatch('refrashReviewed');
|
||||
this.$store.dispatch('refrashStudyTaskCount');
|
||||
this.getLastStudy();
|
||||
@@ -424,6 +500,7 @@ export default {
|
||||
this.instructorCertification()
|
||||
},
|
||||
mounted() {
|
||||
// this.courseNum = sessionStorage.getItem('courseNums')
|
||||
//console.log(this.userInfo.loginName,'this.userInfo.loginName');
|
||||
let flag=testUser.isTest(this.userInfo.loginName);
|
||||
//console.log(flag,'this.isTest22');
|
||||
@@ -434,6 +511,77 @@ export default {
|
||||
// }
|
||||
},
|
||||
methods: {
|
||||
courseNumsData(){
|
||||
let reqData={
|
||||
courseName:'',
|
||||
courseType:'',
|
||||
status:'',
|
||||
progress:'',
|
||||
pageIndex:1,
|
||||
pageSize:10
|
||||
}
|
||||
if(sessionStorage.getItem('courseNums') === null || sessionStorage.getItem('courseNums') === ''){
|
||||
apiCourseStudy.myStudysFromES(reqData).then(res=>{
|
||||
this.courseNum = res.result.count;
|
||||
sessionStorage.setItem('courseNums',this.courseNum)
|
||||
console.log(this.courseNum,'this.courseNum')
|
||||
})
|
||||
}else{
|
||||
this.courseNum = sessionStorage.getItem('courseNums')
|
||||
console.log(this.courseNum,'this.courseNum')
|
||||
}
|
||||
},
|
||||
learnTotal(){
|
||||
const route = this.$route;
|
||||
const { meta, path } = route;
|
||||
let params = {
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
cmtask_user_status: "",
|
||||
cmtask_name: ""
|
||||
}
|
||||
const promises = [
|
||||
//领导力
|
||||
apiManage.leadership(params).then(res=>{
|
||||
this.fistTotals =parseInt(res.data.total);
|
||||
}),
|
||||
//项目
|
||||
// apiManage.customized(params).then(res=>{
|
||||
// this.proTotals =parseInt(res.data.total);
|
||||
// })
|
||||
//学习路径
|
||||
apiManage.compulsoryList(params).then(res=>{
|
||||
this.pathTotals =parseInt(res.data.total);
|
||||
}),
|
||||
getList(this.userInfo.aid).then(res=>{
|
||||
if(res.code == 200 && Object.keys(res.data).length){
|
||||
this.growTotal = 1
|
||||
}else{
|
||||
this.growTotal = 0
|
||||
}
|
||||
})
|
||||
]
|
||||
Promise.all(promises).then(() => {
|
||||
sessionStorage.setItem('totalNums', this.fistTotals + this.pathTotals + this.growTotal);
|
||||
if(path == '/uc/study/task' && (route.query.type === undefined|| route.query.type === null)){
|
||||
if(this.fistTotals != 0){
|
||||
this.$router.push('/uc/study/task?type=1')
|
||||
}else if (this.growTotal != 0){
|
||||
this.$router.push('/uc/study/growth')
|
||||
}else if (this.pathTotals != 0){
|
||||
this.$router.push('/uc/study/task?type=2')
|
||||
}else{
|
||||
this.$router.push('/uc/study/task?type=9')
|
||||
}
|
||||
}
|
||||
});
|
||||
apiManage.queryTaskCounts({}).then(res=>{
|
||||
// this.proTotal =parseInt(res.data.count); //学习项目
|
||||
this.fistTotal =parseInt(res.data.count1); // 领导力必修
|
||||
this.pathTotal =parseInt(res.data.count2); // 学习路径
|
||||
// this.growTotal = parseInt(res.data.count3); //成长路径
|
||||
})
|
||||
},
|
||||
//讲师认证条数
|
||||
instructorCertification(){
|
||||
pageList({ teacherNo:this.userInfo.userNo,courseName:'', pageNo: 1, pageSize: 10}).then(res=>{
|
||||
@@ -454,7 +602,7 @@ export default {
|
||||
return '';
|
||||
},
|
||||
getLastStudy() {
|
||||
apicourseStudy.lastStudy().then(res => {
|
||||
apiCourseStudy.lastStudy().then(res => {
|
||||
if (res.status === 200) {
|
||||
this.lastStudy = res.result;
|
||||
if (res.result != '' && res.result.courseId) {
|
||||
@@ -467,6 +615,7 @@ export default {
|
||||
},
|
||||
handleOpen(key, keyPath) {
|
||||
console.log(key, keyPath);
|
||||
this.openedsList = [key]
|
||||
},
|
||||
handleClose(key, keyPath) {
|
||||
console.log(key, keyPath);
|
||||
@@ -485,6 +634,9 @@ export default {
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-badge__content.is-fixed {
|
||||
top: 6px !important;
|
||||
}
|
||||
.couerscard{
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@ export const pages=[
|
||||
{title:'正在学习',path:'courses',component:'study/Courses',hidden:false},
|
||||
{title:'历史记录',path:'history',component:'study/FinishCourses',hidden:false},
|
||||
{title:'学习路径图',path:'path',component:'study/StudyPath',hidden:false},
|
||||
{title:'成长路径',path:'growth',component:'study/Growth',hidden:false},
|
||||
{title:'学习项目',path:'project',component:'study/StudyProject',hidden:false}
|
||||
]},
|
||||
{title:'个人中心',path:'/uc',hidden:false,children:[
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import top from './components/TopNav/Index.vue'
|
||||
import top from '@/components/PortalHeader.vue'
|
||||
import UcHeader from '@/components/UcHeader/Index.vue'
|
||||
import Hamburger from '@/components/Hamburger'
|
||||
import { AppMain, Navbar, Settings} from './components'
|
||||
|
||||
@@ -47,70 +47,91 @@ export const constantRoutes = [{
|
||||
// name: 'gratefulIndex',
|
||||
// meta: { title: '感恩教师首页', icon: 'dashboard', noCache: true, affix: false },
|
||||
// },
|
||||
{
|
||||
path: '/grateful',
|
||||
component: Grateful,
|
||||
redirect: '/grateful/index',
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulHomePage'], resolve),
|
||||
name: 'GratefulHomePage',
|
||||
meta: {title: '感恩教师首页', icon: 'dashboard', noCache: true, affix: true, hidden: false}
|
||||
},
|
||||
{
|
||||
path: 'teacherEmpowerment',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherEmpowerment'], resolve),
|
||||
name: 'TeacherEmpowerment',
|
||||
meta: {title: '教师赋能', icon: 'dashboard', noCache: true, affix: true, hidden: true}
|
||||
},
|
||||
{
|
||||
path: 'toolDown',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/ToolDown'], resolve),
|
||||
name: 'ToolDown',
|
||||
meta: {title: '工具下载', icon: 'dashboard', noCache: true, affix: true, hidden: true}
|
||||
},
|
||||
{
|
||||
path: 'gratefulNotice',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulNotice'], resolve),
|
||||
name: 'GratefulNotice',
|
||||
meta: {title: '通知列表', icon: 'dashboard', noCache: true, affix: true, hidden: true}
|
||||
},
|
||||
{
|
||||
path: 'noticeDetail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/NoticeDetail'], resolve),
|
||||
name: 'NoticeDetail',
|
||||
meta: {title: '通知详情', icon: 'dashboard', noCache: true, affix: true, hidden: true}
|
||||
},
|
||||
{
|
||||
path: 'teacherOpinion',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherOpinion'], resolve),
|
||||
name: 'TeacherOpinion',
|
||||
meta: {title: '师资大全', icon: 'dashboard', noCache: true, affix: true, hidden: true}
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/forward',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Forward'], resolve),
|
||||
name: 'forward',
|
||||
meta: {title: '详细信息', icon: 'dashboard', noCache: true, affix: false},
|
||||
},
|
||||
{
|
||||
path: '/course',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Index'], resolve),
|
||||
name: 'course',
|
||||
meta: {title: '课程', keepAlive: true, icon: 'dashboard', noCache: true, affix: false},
|
||||
},
|
||||
{
|
||||
{
|
||||
path: '/grateful',
|
||||
component: Grateful,
|
||||
redirect: '/grateful/index',
|
||||
children: [
|
||||
{
|
||||
path: 'index',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulHomePage'], resolve),
|
||||
name: 'GratefulHomePage',
|
||||
meta: { title: '感恩教师首页', icon: 'dashboard', noCache: true, affix: true, hidden:false }
|
||||
},
|
||||
{
|
||||
path: 'teacherEmpowerment',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherEmpowerment'], resolve),
|
||||
name: 'TeacherEmpowerment',
|
||||
meta: { title: '教师赋能', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'toolDown',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/ToolDown'], resolve),
|
||||
name: 'ToolDown',
|
||||
meta: { title: '工具下载', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'gratefulNotice',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/GratefulNotice'], resolve),
|
||||
name: 'GratefulNotice',
|
||||
meta: { title: '通知列表', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'noticeDetail',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/NoticeDetail'], resolve),
|
||||
name: 'NoticeDetail',
|
||||
meta: { title: '通知详情', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
{
|
||||
path: 'teacherOpinion',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/grateful/TeacherOpinion'], resolve),
|
||||
name: 'TeacherOpinion',
|
||||
meta: { title: '师资大全', icon: 'dashboard', noCache: true, affix: true, hidden:true }
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/forward',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/Forward'], resolve),
|
||||
name: 'forward',
|
||||
meta: { title: '详细信息', icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/course',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/Index'], resolve),
|
||||
name: 'course',
|
||||
meta: { title: '课程', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
// {
|
||||
// path: '/growth',
|
||||
// hidden: true,
|
||||
// component: (resolve) => require(['@/views/study/Growth'], resolve),
|
||||
// name: 'growth',
|
||||
// meta: { title: '成长路径', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
// },
|
||||
{
|
||||
path: '/growthpath',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/study/GrowthPath'], resolve),
|
||||
name: 'growthpath',
|
||||
meta: { title: '成长路径图', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/ExamScore',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/study/ExamScore'], resolve),
|
||||
name: 'ExamScore',
|
||||
meta: { title: '成长路径图', keepAlive: true, icon: 'dashboard', noCache: true, affix: false },
|
||||
},
|
||||
{
|
||||
path: '/courseRecommended',
|
||||
hidden: true,
|
||||
component: (resolve) => require(['@/views/portal/course/CourseRecommended'], resolve),
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<p class="personal-info">
|
||||
{{ cutOrgNamePath(userInfo.departFullName) }}
|
||||
</p>
|
||||
<a href="uc/study/task">
|
||||
<span @click="goStudy">
|
||||
<div class="personal-box" style="margin-bottom: 10px">
|
||||
<span>学习任务</span>
|
||||
<span v-if="studyTaskCount == 0" style="display: flex">
|
||||
@@ -106,7 +106,7 @@
|
||||
</span>
|
||||
<!-- <img class="personal-box-img" :src="`${webBaseUrl}/images/homeWu/agency.png`" alt="" srcset=""> -->
|
||||
</div>
|
||||
</a>
|
||||
</span>
|
||||
<div class="last-study-info">
|
||||
<div
|
||||
class="one-line-ellipsis"
|
||||
@@ -1078,6 +1078,10 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
fistTotals: 0,
|
||||
pathTotals: 0,
|
||||
growTotal: 0,
|
||||
courseNums: 0,
|
||||
Positive:[],
|
||||
showUClass: false,
|
||||
showLoginMedal: false, //是否显示登录勋章
|
||||
@@ -1176,7 +1180,7 @@ export default {
|
||||
this.getLevel();
|
||||
this.getQaAnswers();
|
||||
this.getLastStudy();
|
||||
|
||||
this.setNumData()
|
||||
//检查兴趣爱好是否已填报,
|
||||
//先检查本地session和 local 15天, 这两个值是在组件中设置的
|
||||
let sessionHobby = sessionStorage.getItem(
|
||||
@@ -1229,6 +1233,32 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
setNumData(){
|
||||
this.fistTotals = sessionStorage.getItem('fistTotals')
|
||||
this.pathTotals = sessionStorage.getItem('pathTotals')
|
||||
this.growTotal = sessionStorage.getItem('growTotal')
|
||||
this.courseNums = sessionStorage.getItem('courseNums')
|
||||
},
|
||||
goStudy(){
|
||||
const nums = this.fistTotals + this.pathTotals + this.growTotal;
|
||||
if(nums == 0 && this.courseNums>0){
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/courses`;
|
||||
}else{
|
||||
if(this.nums == 0){
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/task?type=9`;
|
||||
return
|
||||
}
|
||||
if(this.fistTotals != 0){
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/task?type=1`;
|
||||
}else if (this.growTotal != 0){
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/growth`;
|
||||
}else if (this.pathTotals != 0){
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/task?type=2`;
|
||||
}else{
|
||||
window.location.href = `${this.webBaseUrl}/uc/study/task?type=9`;
|
||||
}
|
||||
}
|
||||
},
|
||||
getPositive() {
|
||||
// 这个是案例的好评
|
||||
// apiCase.queryComments(10).then(res => {
|
||||
|
||||
@@ -73,10 +73,11 @@
|
||||
|
||||
<!-- // 成绩控制需要结束状态 -->
|
||||
<el-button type="text" v-if="scope.row.published" @click="viewResults(scope.row)">成绩</el-button>
|
||||
<el-button type="text" v-if="scope.row.published" @click="pushResults(scope.row)">推送</el-button>
|
||||
<el-button type="text" v-if="scope.row.refType == 14" @click="deleteData(scope.row)">删除</el-button>
|
||||
<el-button type="text" v-if="scope.row.published&&scope.row.refType !== 14" @click="pushResults(scope.row)">推送</el-button>
|
||||
<!-- <el-button type="text" v-if="scope.row.published" @click="creatQrCode(scope.row)">二维码</el-button> -->
|
||||
<el-button type="text" v-if="scope.row.published" @click="releaseData(scope.row,false)">取消发布</el-button>
|
||||
<el-dropdown type="text" style="margin-left:10px">
|
||||
<el-button type="text" v-if="scope.row.published&&scope.row.refType !== 14" @click="releaseData(scope.row,false)">取消发布</el-button>
|
||||
<el-dropdown v-if="scope.row.refType !== 14" type="text" style="margin-left:10px">
|
||||
<el-button type="text" > 更多 <i class="el-icon-arrow-down el-icon--right"></i> </el-button>
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<!-- <el-dropdown-item command="a">查看</el-dropdown-item> -->
|
||||
@@ -499,7 +500,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="状态">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.status == 9 ? '已完成' : '未开始' }}
|
||||
{{ scope.row.status == 9 ? '已完成' : scope.row.status == 1?'进行中':'未开始' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="完成时间" prop="lastTime">
|
||||
@@ -1077,6 +1078,10 @@ export default {
|
||||
})
|
||||
},
|
||||
deleteData(row) {
|
||||
if(row.refType == 14 && row.refStatus == 1){
|
||||
this.$message.error('该考试已被专业力必修引用,不能删除!')
|
||||
return
|
||||
}
|
||||
this.$confirm('此操作将永久删除该考试, 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
|
||||
@@ -11,12 +11,12 @@
|
||||
<ul>
|
||||
<li>考试时长: {{ testPaper.testDuration }}分钟</li>
|
||||
<li>及格线: {{ testPaper.passLine }}</li>
|
||||
<li v-if="testPaper.entranceTime">开始时间:{{ testPaper.entranceTime }}</li>
|
||||
<li v-if="testPaper.entranceTime">开始时间: {{ testPaper.entranceTime }}</li>
|
||||
<li v-if="testPaper.times">尝试次数: {{ testPaper.times }}</li>
|
||||
<li v-if="testPaper.deadlineTime">结束时间: {{ testPaper.deadlineTime }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div v-if="testPaper.testFront" style="padding: 20px;text-align: center;" v-html="testPaper.testFront">
|
||||
<div v-if="testPaper.testFront && testPaper.testFront != 'null'" style="padding: 20px;text-align: center;" v-html="testPaper.testFront">
|
||||
<!--考前说明-->
|
||||
</div>
|
||||
<div v-if="canExam" class="test-time" style="margin-top:20px" >
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
</div>
|
||||
<el-table :data="tableData" style="width: 100%" v-if="loading == 2">
|
||||
<el-table-column prop="startTime" label="完成时间" width="180"></el-table-column>
|
||||
<el-table-column prop="endTime" label="完成时间" width="200"></el-table-column>
|
||||
<el-table-column prop="score" align="center" label="成绩">
|
||||
<template slot-scope="scope">
|
||||
<span>{{toScoreTow(scope.row.score)}}分</span>
|
||||
@@ -500,6 +500,7 @@ export default {
|
||||
// $this.saveUserTest();
|
||||
// },10000);
|
||||
}
|
||||
this.saveUserTest()
|
||||
}else{
|
||||
this.startButton = false;
|
||||
this.$message.error('加载试卷内容失败:'+rs.message);
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import top from '../../layout/components/TopNav/Index.vue'
|
||||
import top from '@/components/PortalHeader.vue'
|
||||
import UcHeader from '@/components/HomePage/homePage.vue'
|
||||
import MedalImg from '@/components/Portal/medalImg.vue';
|
||||
import apiStat from '@/api/phase2/stat.js';
|
||||
|
||||
@@ -1,135 +1,140 @@
|
||||
<template>
|
||||
<div>
|
||||
<div style="display: flex;justify-content:space-between; padding: 12px 32px 10px 18px;">
|
||||
<div style="display: flex;justify-content: flex-start;">
|
||||
<span class="title-myqalist">我报名的</span>
|
||||
<div style="margin-left:5px">
|
||||
<el-select v-model="courseType" class="uc-select" clearable placeholder="类型">
|
||||
<el-option label="全部类型" value=""></el-option>
|
||||
<!-- <el-option label="微课" :value="10"></el-option> -->
|
||||
<el-option label="录播课" :value="20"></el-option>
|
||||
<!-- <el-option label="在线课" value="online-course"></el-option> -->
|
||||
<!-- <el-option label="面授课" value="face-course"></el-option>
|
||||
<el-option label="学习项目" value="project"></el-option> -->
|
||||
<el-option label="线下课" :value="30"></el-option>
|
||||
<el-option label="学习项目" :value="40"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-select style="margin-left:12px" class="uc-select" v-model="status" clearable placeholder="学习进度">
|
||||
<el-option label="所有进度" value="0"></el-option>
|
||||
<el-option label="未开始" :value="1"></el-option>
|
||||
<el-option label="进行中" :value="2"></el-option>
|
||||
<el-option label="已完成" :value="9"></el-option>
|
||||
<!-- <el-option label="已停用" :value="3"></el-option> -->
|
||||
</el-select>
|
||||
<div style="padding-left: 12px;"><el-input class="uc-input" v-model="params.courseName" clearable placeholder="搜索名称"></el-input></div>
|
||||
<div style="padding-left: 12px;"><el-button type="primary" class="search-btn" icon="el-icon-search" @click="findStudys(true)">搜索</el-button></div>
|
||||
<div style="padding-left: 12px"><el-button type="primary" class="search-btn" icon="el-icon-refresh-right" @click="reset()">重置</el-button></div>
|
||||
</div>
|
||||
<div style="margin-top: 50px;" v-if="page.count==0">
|
||||
<el-empty description="您当前暂无学习数据~"></el-empty>
|
||||
</div>
|
||||
<div class="uc-list" v-loading="loading">
|
||||
<div class="uc-course" v-for="(item,idx) in couresList" :key="idx">
|
||||
<div class="uc-course-img" style="width: 260px;height:144px" @click="jumpRouter(item)">
|
||||
<course-image :course="item"></course-image>
|
||||
<div class="uc-type">
|
||||
<span v-if="item.courseType==10">录播</span>
|
||||
<span v-if="item.courseType==20">录播</span>
|
||||
<span v-if="item.courseType==30">线下课</span>
|
||||
<span v-if="item.courseType==40">学习项目</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uc-course-info" @click="jumpRouter(item)">
|
||||
<div class="uc-course-name" style="cursor: pointer;">
|
||||
|
||||
<div style="flex:1;">
|
||||
<a v-html="$keywordActiveShow(item.courseName,params.courseName)" class="uc-title two-line-ellipsis"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top:6px" class="uc-course-text"><i class="el-icon-time" style="margin-right:4px"></i>报名时间:{{ formatsec(Number(item.startTime) * 1000 )}}</div>
|
||||
<div v-if="item.courseType==30">
|
||||
<div class="uc-course-text" style="margin-top: 8px;"><i class="el-icon-location-outline" style="margin-right:4px"></i>面授地点:{{ item.courseAddress }}</div>
|
||||
<div class="uc-course-text" style="margin-top: 8px;"><i class="el-icon-timer" style="margin-right:4px"></i>上课时间:{{ formatsec(Number(item.attendCourseTime) * 1000 ) }}</div>
|
||||
</div>
|
||||
<div v-else style="width: 80%;margin-top: 20px;display: flex;">
|
||||
<div style="color: #333333;font-size: 14px;"><i class="el-icon-s-operation" style="margin-right:4px"></i>当前进度:</div>
|
||||
<div style="width:170px;padding-top: 5px;">
|
||||
<el-progress :percentage="item.progress" color="#FFA050"></el-progress>
|
||||
<div v-else>
|
||||
<div style="display: flex;justify-content:space-between; padding: 12px 32px 10px 18px;">
|
||||
<div style="display: flex;justify-content: flex-start;">
|
||||
<span class="title-myqalist">我报名的</span>
|
||||
<div style="margin-left:5px">
|
||||
<el-select v-model="courseType" class="uc-select" clearable placeholder="类型">
|
||||
<el-option label="全部类型" value=""></el-option>
|
||||
<!-- <el-option label="微课" :value="10"></el-option> -->
|
||||
<el-option label="录播课" :value="20"></el-option>
|
||||
<!-- <el-option label="在线课" value="online-course"></el-option> -->
|
||||
<!-- <el-option label="面授课" value="face-course"></el-option>
|
||||
<el-option label="学习项目" value="project"></el-option> -->
|
||||
<el-option label="线下课" :value="30"></el-option>
|
||||
<el-option label="学习项目" :value="40"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<el-select style="margin-left:12px" class="uc-select" v-model="status" clearable placeholder="学习进度">
|
||||
<el-option label="所有进度" value="0"></el-option>
|
||||
<el-option label="未开始" :value="1"></el-option>
|
||||
<el-option label="进行中" :value="2"></el-option>
|
||||
<el-option label="已完成" :value="9"></el-option>
|
||||
<!-- <el-option label="已停用" :value="3"></el-option> -->
|
||||
</el-select>
|
||||
<div style="padding-left: 12px;"><el-input class="uc-input" v-model="params.courseName" clearable placeholder="搜索名称"></el-input></div>
|
||||
<div style="padding-left: 12px;"><el-button type="primary" class="search-btn" icon="el-icon-search" @click="findStudys(true)">搜索</el-button></div>
|
||||
<div style="padding-left: 12px"><el-button type="primary" class="search-btn" icon="el-icon-refresh-right" @click="reset()">重置</el-button></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uc-course-btns">
|
||||
<!-- <div style="text-align: right;">
|
||||
<el-button class="del" @click.stop="delItem(item,idx)" type="text" icon="el-icon-delete" size="mini" title="删除"></el-button>
|
||||
<el-dropdown trigger="click" style="display: none;">
|
||||
<span class="el-dropdown-link">
|
||||
<svg-icon style="margin-right: 0;font-size:26px;" icon-class="spot"></svg-icon>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown" class="dropdown-box">
|
||||
<el-dropdown-item command="a">
|
||||
<el-button class="del" @click.stop="delItem(item,idx)" type="text" icon="el-icon-delete" size="mini" title="删除"></el-button>
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div> -->
|
||||
<div class="uc-list" v-loading="loading">
|
||||
<div class="uc-course" v-for="(item,idx) in couresList" :key="idx">
|
||||
<div class="uc-course-img" style="width: 260px;height:144px" @click="jumpRouter(item)">
|
||||
<course-image :course="item"></course-image>
|
||||
<div class="uc-type">
|
||||
<span v-if="item.courseType==10">录播</span>
|
||||
<span v-if="item.courseType==20">录播</span>
|
||||
<span v-if="item.courseType==30">线下课</span>
|
||||
<span v-if="item.courseType==40">学习项目</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uc-course-info" @click="jumpRouter(item)">
|
||||
<div class="uc-course-name" style="cursor: pointer;">
|
||||
|
||||
<div style="flex:1;">
|
||||
<a v-html="$keywordActiveShow(item.courseName,params.courseName)" class="uc-title two-line-ellipsis"></a>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top:6px" class="uc-course-text"><i class="el-icon-time" style="margin-right:4px"></i>报名时间:{{ formatsec(Number(item.startTime) * 1000 )}}</div>
|
||||
<div v-if="item.courseType==30">
|
||||
<div v-if="item.applyStatus==10"><!--「报名待审核」展示为「等待审核」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">等待审核</el-button></div>
|
||||
<!-- <div><el-button style="margin-top:30px;text-align: right;" type="text" size="small">取消报名</el-button></div> -->
|
||||
</div>
|
||||
<div v-if="item.applyStatus==20"><!--「报名取消」」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">已取消</el-button></div>
|
||||
<div><el-button @click.stop="reSignupCourse(item)" style="margin-top:30px;text-align: right;" type="text" size="small">重新报名</el-button></div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==30"><!--「报名审核通过」展示为「报名成功」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名成功</el-button></div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==40"><!--「审核拒绝」展示为「报名失败」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名失败</el-button></div>
|
||||
<div style="margin-top:30px;text-align: right;">
|
||||
<el-button @click.stop="reSignupCourse(item)" type="text" size="small">重新报名</el-button>
|
||||
<el-button @click.stop="delItem(item,idx)" type="text" size="small">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==50"><!--「报名已删除」展示为「报名已删除」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名已删除</el-button></div>
|
||||
<div><el-button @click.stop="delItem(item,idx)" style="margin-top:30px;text-align: right;" type="text" size="small">删除</el-button></div>
|
||||
<div class="uc-course-text" style="margin-top: 8px;"><i class="el-icon-location-outline" style="margin-right:4px"></i>面授地点:{{ item.courseAddress }}</div>
|
||||
<div class="uc-course-text" style="margin-top: 8px;"><i class="el-icon-timer" style="margin-right:4px"></i>上课时间:{{ formatsec(Number(item.attendCourseTime) * 1000 ) }}</div>
|
||||
</div>
|
||||
<div v-else style="width: 80%;margin-top: 20px;display: flex;">
|
||||
<div style="color: #333333;font-size: 14px;"><i class="el-icon-s-operation" style="margin-right:4px"></i>当前进度:</div>
|
||||
<div style="width:170px;padding-top: 5px;">
|
||||
<el-progress :percentage="item.progress" color="#FFA050"></el-progress>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else >
|
||||
<span @click.stop="jumpRouter(item)">
|
||||
<!-- <el-button style="margin-top:30px" v-if="item.progress==0" type="primary" size="small">开始学习</el-button> -->
|
||||
<el-button style="margin-top:30px" v-if="item.progress<100" type="primary" size="small">继续学习</el-button>
|
||||
<el-button style="margin-top:30px" v-if="item.progress==100" type="primary" size="small">回顾</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="couresList.length > 0 " style="text-align: center;margin-top:57px;">
|
||||
<el-pagination background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page.pageIndex"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:page-size="page.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="page.count">
|
||||
</el-pagination>
|
||||
</div>
|
||||
<div class="list-wu">
|
||||
<div v-if="loading"> <span>加载中...</span> </div>
|
||||
<div v-else class="home-no-list">
|
||||
<div v-if="page.count==0 && !loading">
|
||||
<div v-if="isSearch">
|
||||
<p class="text" style="color: #333333;margin-top:50px;font-size: 14px">未找到您要搜索的内容</p>
|
||||
</div>
|
||||
<div class="uc-course-btns">
|
||||
<!-- <div style="text-align: right;">
|
||||
<el-button class="del" @click.stop="delItem(item,idx)" type="text" icon="el-icon-delete" size="mini" title="删除"></el-button>
|
||||
<el-dropdown trigger="click" style="display: none;">
|
||||
<span class="el-dropdown-link">
|
||||
<svg-icon style="margin-right: 0;font-size:26px;" icon-class="spot"></svg-icon>
|
||||
</span>
|
||||
<el-dropdown-menu slot="dropdown" class="dropdown-box">
|
||||
<el-dropdown-item command="a">
|
||||
<el-button class="del" @click.stop="delItem(item,idx)" type="text" icon="el-icon-delete" size="mini" title="删除"></el-button>
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</div> -->
|
||||
<div v-if="item.courseType==30">
|
||||
<div v-if="item.applyStatus==10"><!--「报名待审核」展示为「等待审核」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">等待审核</el-button></div>
|
||||
<!-- <div><el-button style="margin-top:30px;text-align: right;" type="text" size="small">取消报名</el-button></div> -->
|
||||
</div>
|
||||
<div v-else >
|
||||
<img class="img" style="width:360px;height:226px" :src="`${webBaseUrl}/images/homeWu/no-madel.png`" alt="" srcset="">
|
||||
<p class="text" style="color: #333333;margin-top:50px;font-size: 14px">您还没有报名课程哦~</p>
|
||||
<div v-if="item.applyStatus==20"><!--「报名取消」」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">已取消</el-button></div>
|
||||
<div><el-button @click.stop="reSignupCourse(item)" style="margin-top:30px;text-align: right;" type="text" size="small">重新报名</el-button></div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==30"><!--「报名审核通过」展示为「报名成功」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名成功</el-button></div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==40"><!--「审核拒绝」展示为「报名失败」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名失败</el-button></div>
|
||||
<div style="margin-top:30px;text-align: right;">
|
||||
<el-button @click.stop="reSignupCourse(item)" type="text" size="small">重新报名</el-button>
|
||||
<el-button @click.stop="delItem(item,idx)" type="text" size="small">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="item.applyStatus==50"><!--「报名已删除」展示为「报名已删除」-->
|
||||
<div><el-button style="margin-top:30px" type="primary" disabled size="small">报名已删除</el-button></div>
|
||||
<div><el-button @click.stop="delItem(item,idx)" style="margin-top:30px;text-align: right;" type="text" size="small">删除</el-button></div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else >
|
||||
<span @click.stop="jumpRouter(item)">
|
||||
<!-- <el-button style="margin-top:30px" v-if="item.progress==0" type="primary" size="small">开始学习</el-button> -->
|
||||
<el-button style="margin-top:30px" v-if="item.progress<100" type="primary" size="small">继续学习</el-button>
|
||||
<el-button style="margin-top:30px" v-if="item.progress==100" type="primary" size="small">回顾</el-button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="couresList.length > 0 " style="text-align: center;margin-top:57px;">
|
||||
<el-pagination background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="page.pageIndex"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:page-size="page.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="page.count">
|
||||
</el-pagination>
|
||||
</div>
|
||||
<div class="list-wu">
|
||||
<div v-if="loading"> <span>加载中...</span> </div>
|
||||
<div v-else class="home-no-list">
|
||||
<div v-if="page.count==0 && !loading">
|
||||
<div v-if="isSearch">
|
||||
<p class="text" style="color: #333333;margin-top:50px;font-size: 14px">未找到您要搜索的内容</p>
|
||||
</div>
|
||||
<div v-else >
|
||||
<img class="img" style="width:360px;height:226px" :src="`${webBaseUrl}/images/homeWu/no-madel.png`" alt="" srcset="">
|
||||
<p class="text" style="color: #333333;margin-top:50px;font-size: 14px">您还没有报名课程哦~</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
567
src/views/study/ExamScore.vue
Normal file
@@ -0,0 +1,567 @@
|
||||
<template>
|
||||
<div>
|
||||
<div style="background-color: #0078fc;">
|
||||
<portalHeader textColor="#fff" class="qa-nav" @emitInput="emitInput" @showClass="showClass"></portalHeader>
|
||||
</div>
|
||||
<div style=" background: #0078fc;height: 150px;width: 100%;position: absolute;top: 0;z-index:-9999;"></div>
|
||||
<div class="moreactive" style="padding: 30px">
|
||||
<!-- 面包屑导航 -->
|
||||
<div class="crumb">
|
||||
<div>学习任务</div>
|
||||
<div style="margin-left: 6px; margin-right: 6px">/</div>
|
||||
<div>外部考试</div>
|
||||
<div style="margin-left: 6px; margin-right: 6px">/</div>
|
||||
<div style="font-weight: 700; font-size: 16px">考试详情</div>
|
||||
<div class="return">
|
||||
<div style="background: #fff;display: flex;color:#0073FB;align-items: center;justify-content: center;border-radius: 6px;width: 92px;height: 32px;" @click="returnclick">
|
||||
<!-- <div style="color:#0073FB;display: flex;align-items: center;"> -->
|
||||
<img class="img2" style="margin-right:11px;cursor: pointer;" src="../../assets/images/growth/return.png" />
|
||||
<span>返回</span>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 面包屑导航 -->
|
||||
<!-- 详细信息 -->
|
||||
<div class="detailinfo">
|
||||
<div class="detail">
|
||||
<div class="detailT">
|
||||
<div class="left">
|
||||
<div class="debateTitle" style="color:rgba(51, 51, 51, 1);font-size:20px;margin-top:46px;">【考试】{{ this.$route.query.pName }}</div>
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/images/growth/yuan.png"
|
||||
/>
|
||||
<div class="text">数据来源</div>
|
||||
<div class="box"></div>
|
||||
</div>
|
||||
<div class="all" style="font-size:14px;color:rgba(51, 51, 48, 1);">
|
||||
{{ datainfo.source ? datainfo.source : "-" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="detailT" style="margin-top:20px;height:671px;">
|
||||
<div class="left">
|
||||
<div class="title">
|
||||
<img
|
||||
style="width: 20px; height: 20px"
|
||||
src="../../assets/images/growth/yuan.png"
|
||||
/>
|
||||
<div class="text">考试说明</div>
|
||||
<div class="box"></div>
|
||||
</div>
|
||||
<!-- <div style="display: flex; align-items: center"></div> -->
|
||||
<div class="all" style="font-size:14px;color:rgba(51, 51, 48, 1);">
|
||||
<div>
|
||||
{{ datainfo.examinationExplain ? datainfo.examinationExplain : "暂无考试说明" }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 详细信息 -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import portalHeader from '@/components/PortalHeader.vue';
|
||||
import {queryExternalExam,submitExternalExam} from '@/api/growth/index'
|
||||
export default {
|
||||
name: "ExamScore",
|
||||
components: { portalHeader },
|
||||
data() {
|
||||
return {
|
||||
hasPrev: false,
|
||||
hasNext: false,
|
||||
exname: "",
|
||||
datainfo: {},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
queryExternalExam({
|
||||
externalId: this.$route.query.courseId
|
||||
}).then(res=>{
|
||||
console.log(res,'res')
|
||||
this.datainfo = res.data
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
returnclick () {
|
||||
this.$router.back();
|
||||
},
|
||||
emitInput(val) {
|
||||
this.queryKeyWord = val;
|
||||
this.isSeach = true;
|
||||
this.search();
|
||||
},
|
||||
showClass(flag) {
|
||||
if (flag) {
|
||||
this.showUClass = flag;
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: "";
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.moreactive {
|
||||
.crumb {
|
||||
color: #fff;
|
||||
display: flex;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
position: relative;
|
||||
}
|
||||
.return{
|
||||
position: absolute;
|
||||
right: 1%;
|
||||
.text{
|
||||
text-align: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.preNext {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
|
||||
.content {
|
||||
font-size: 14px;
|
||||
color: #fff;
|
||||
width: 43px;
|
||||
height: 14px;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
top: -6px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
border-radius: 50%;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.debateTitle {
|
||||
margin-top: 15px;
|
||||
font-size: 20px;
|
||||
line-height: 24px;
|
||||
height: 24px;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
margin-left: -10px;
|
||||
}
|
||||
|
||||
.detailinfo {
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
display: flex;
|
||||
|
||||
.detail {
|
||||
flex: 1;
|
||||
// margin-right: 20px;
|
||||
.detailT {
|
||||
min-height: 95px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
display: flex;
|
||||
padding-bottom: 20px;
|
||||
|
||||
.left {
|
||||
margin-left: 48px;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.right {
|
||||
width: 417px;
|
||||
margin-right: 48px;
|
||||
|
||||
.righttitle {
|
||||
display: flex;
|
||||
padding-top: 39px;
|
||||
position: relative;
|
||||
|
||||
.text {
|
||||
margin-left: 8px;
|
||||
font-size: 16px;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 75px;
|
||||
height: 10px;
|
||||
background-color: rgba(36, 120, 255, 0.15);
|
||||
position: absolute;
|
||||
left: 23px;
|
||||
top: 53px;
|
||||
}
|
||||
}
|
||||
|
||||
.timebox {
|
||||
width: 417px;
|
||||
height: 149px;
|
||||
background: linear-gradient(90deg, #b6c6e1 0%, #89aed6 100%);
|
||||
border-radius: 4px;
|
||||
margin-top: 42px;
|
||||
}
|
||||
|
||||
.innertime {
|
||||
margin-top: 17px;
|
||||
margin-left: 55px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.endtime {
|
||||
margin-left: 10px;
|
||||
margin-top: 16px;
|
||||
width: 397px;
|
||||
height: 81px;
|
||||
background: #f2f5f7;
|
||||
border-radius: 0px 8px 0px 8px;
|
||||
|
||||
.endtimetext {
|
||||
margin-top: 25px;
|
||||
margin-left: 46px;
|
||||
|
||||
.te {
|
||||
font-size: 28px;
|
||||
font-weight: 800;
|
||||
color: #4a9cf8;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.explain {
|
||||
margin-top: 30px;
|
||||
width: 416px;
|
||||
padding-bottom: 50px;
|
||||
background: #f2f5f7;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.explaincontent {
|
||||
width: 368px;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #333330;
|
||||
line-height: 24px;
|
||||
margin-left: 24px;
|
||||
margin-top: 47px;
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-top: 39px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.title .text {
|
||||
margin-left: 8px;
|
||||
font-size: 16px;
|
||||
color: rgba(51, 51, 51, 1);
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
.title .box {
|
||||
width: 75px;
|
||||
height: 10px;
|
||||
background-color: rgba(36, 120, 255, 0.15);
|
||||
position: absolute;
|
||||
left: 23px;
|
||||
top: 53px;
|
||||
}
|
||||
|
||||
.all {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
// width: 1280px;
|
||||
margin-right: 48px;
|
||||
margin-top: 43px;
|
||||
|
||||
.allbox1 {
|
||||
margin-right: 22px;
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(160, 193, 230, 0) 0%,
|
||||
rgba(161, 195, 231, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.allbox2 {
|
||||
margin-right: 22px;
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(177, 219, 229, 0) 0%,
|
||||
rgba(172, 216, 227, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.allbox3 {
|
||||
background: linear-gradient(
|
||||
0deg,
|
||||
rgba(195, 209, 234, 0) 0%,
|
||||
rgba(191, 206, 231, 0.2) 100%
|
||||
);
|
||||
}
|
||||
|
||||
.item {
|
||||
// width: 410px;
|
||||
width: calc(100% - 44px);
|
||||
height: 149px;
|
||||
text-align: center;
|
||||
border-radius: 4px;
|
||||
|
||||
.item1 {
|
||||
color: #089dff;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-top: 36px;
|
||||
}
|
||||
|
||||
.item2 {
|
||||
color: #333330;
|
||||
font-size: 14px;
|
||||
margin-top: 29px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.join {
|
||||
// width: 1280px;
|
||||
margin-right: 48px;
|
||||
// min-height: 408px;
|
||||
// background: #f5f6f7;
|
||||
// border-radius: 8px;
|
||||
margin-top: 32px;
|
||||
margin-left: 21px;
|
||||
flex: 1;
|
||||
|
||||
.stem {
|
||||
display: flex;
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #333330;
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
.options {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.radio {
|
||||
margin-top: 14px;
|
||||
margin-left: -16px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.radio label {
|
||||
line-height: 20px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-weight: normal;
|
||||
|
||||
.opt-text {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: #333330;
|
||||
line-height: 18px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.radio .option {
|
||||
width: 19px;
|
||||
height: 18px;
|
||||
// position: absolute;
|
||||
// top: 1px;
|
||||
// // top: 32px;
|
||||
// left: 0px;
|
||||
background-size: cover;
|
||||
// background: url(../../assets/image/noselect.png) no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.radio input[type="radio"] {
|
||||
display: inline-block;
|
||||
margin-right: -3px;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.radio input[type="radio"]:checked + div {
|
||||
// background: url(../../assets/image/select.png) no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.imgcontent {
|
||||
display: flex;
|
||||
|
||||
.imgone {
|
||||
width: 140px;
|
||||
height: 140px;
|
||||
border-radius: 8px;
|
||||
// background-image: url(../../assets/image/px.png);
|
||||
background-size: 100% 100%;
|
||||
background-position: center;
|
||||
}
|
||||
}
|
||||
|
||||
.ontitle {
|
||||
margin-top: 27px;
|
||||
font-size: 14px;
|
||||
color: #333330;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.detailB {
|
||||
min-height: 363px;
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
margin-top: 20px;
|
||||
|
||||
.el-tabs__item {
|
||||
height: 69px;
|
||||
padding: 25px 7px 0px 52px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.el-tabs__nav-wrap::after {
|
||||
background-color: rgba(56, 125, 247, 0.2);
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
height: 89px;
|
||||
margin-left: 51px;
|
||||
margin-right: 40px;
|
||||
// border-bottom: 1px solid rgba(56, 125, 247, 0.2);
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.enclosureL {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #677d86;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
.download {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
color: #2478ff;
|
||||
line-height: 24px;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.work {
|
||||
margin-left: 51px;
|
||||
margin-right: 40px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 37px;
|
||||
}
|
||||
|
||||
.work .question {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #333330;
|
||||
line-height: 18px;
|
||||
}
|
||||
|
||||
.work .active {
|
||||
width: 82px;
|
||||
height: 28px;
|
||||
background: linear-gradient(90deg, #a5d4e0 0%, #b4dce6 100%);
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #ffffff;
|
||||
line-height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
margin-right: 11px;
|
||||
}
|
||||
|
||||
.work .unactive {
|
||||
width: 80px;
|
||||
height: 26px;
|
||||
border: 1px solid #a5d4e0;
|
||||
border-radius: 4px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #a5d4e0;
|
||||
line-height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 11px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.work .btncolor {
|
||||
background: linear-gradient(90deg, #84aad2 0%, #a4c5e9 100%);
|
||||
}
|
||||
|
||||
.work .bordercolor {
|
||||
border: 1px solid #85aad2;
|
||||
}
|
||||
|
||||
.work .fontcolor {
|
||||
color: rgba(133, 170, 210, 1);
|
||||
}
|
||||
|
||||
.work .submit {
|
||||
width: 126px;
|
||||
height: 46px;
|
||||
background: #2478ff;
|
||||
box-shadow: 0px 1px 8px 0px rgba(56, 125, 247, 0.7);
|
||||
border-radius: 4px;
|
||||
font-size: 16px;
|
||||
font-weight: 800;
|
||||
color: #ffffff;
|
||||
line-height: 24px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
653
src/views/study/Growth.vue
Normal file
@@ -0,0 +1,653 @@
|
||||
<template>
|
||||
<div>
|
||||
<div v-if="Object.keys(detailData).length" class="growth">
|
||||
<div class="growth_heads">
|
||||
<div class="growth_left">
|
||||
<div class="left_text">我的专业力必修</div>
|
||||
<el-popover
|
||||
placement="right"
|
||||
width="437"
|
||||
trigger="hover"
|
||||
:visible-arrow="false"
|
||||
v-model="explainBody"
|
||||
popper-class="growth_explain"
|
||||
>
|
||||
<div slot="reference" class="growth_i">
|
||||
<div class="growth_mark">?</div>
|
||||
</div>
|
||||
<div class="growth_explain1">
|
||||
<div class="growth_explain_text">
|
||||
<div class="text">根据您的归属组织、您所在岗位、职级,已为您自动匹配“{{detailData.growName || ''}}”,抓紧时间学习吧~</div>
|
||||
<div class="explain_close" @click="explainBody = false"></div>
|
||||
</div>
|
||||
</div>
|
||||
</el-popover>
|
||||
</div>
|
||||
<div class="growth_right">
|
||||
<div class="right_text">什么是专业力必修</div>
|
||||
<div class="growth_img" @click="checkedTrue">
|
||||
<img class="img" src="../../assets/images/growth/mark.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="growth_body">
|
||||
<div class="body_head">
|
||||
<div class="head_left">{{detailData.growName || ''}}</div>
|
||||
<div class="head_right">
|
||||
<div class="head_right_one">{{detailData.organizationName || ''}}</div>
|
||||
<div class="head_right_two">
|
||||
<span class="head_right_sta">学习状态:</span>
|
||||
<span class="head_right_status" :style="{color: ['#FF8336','#31AF0D','#409EFF '][detailData.studyStatus]}"> {{detailData.studyStatus==0?'未开始':detailData.studyStatus==1?'已完成':'进行中'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <el-popover
|
||||
placement="bottom-end"
|
||||
width="300"
|
||||
trigger="click"
|
||||
:visible-arrow="false"
|
||||
v-model="downBody"
|
||||
offset="0"
|
||||
popper-class="growth_body_down"
|
||||
>
|
||||
<div slot="reference" class="growth_body_shared">
|
||||
<img class="shared_img" src="../../assets/images/growth/growthRight.png" alt="">
|
||||
<span class="shared_text">共享文档</span>
|
||||
</div>
|
||||
<div class="growth_body_down">
|
||||
<div class="down_head">
|
||||
<span class="down_head_text">共享文档</span>
|
||||
<div class="down_close" @click="downBody = false">
|
||||
<img class="down_close_img" src="../../assets/images/growth/close.png" alt="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="down_over">
|
||||
<div class="down_body" v-for="itme in 10">
|
||||
<div class="down_body_left">
|
||||
<img class="left_img" src="../../assets/images/growth/ppt.png" alt="">
|
||||
<span title="人工智能启蒙讲解讲义.pptx" class="left_text">人工智能启蒙讲解讲义.pptx</span>
|
||||
</div>
|
||||
<div class="down_btn">
|
||||
<span class="down_btn_text">下载</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-popover> -->
|
||||
|
||||
<div v-if="detailData.remark" class="body_explain">
|
||||
<div class="body_explain_icon">
|
||||
<img class="body_explain_img" src="../../assets/images/growth/growthLeft.png" alt="">
|
||||
<div class="body_explain_text">说明</div>
|
||||
</div>
|
||||
<div class="body_explain_item">
|
||||
<div class="body_explain_text">
|
||||
{{detailData.remark || ''}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body_schedule" v-if="detailData.taskNum > 0">
|
||||
<div class="body_schedule_icon">
|
||||
<img class="body_schedule_img" src="../../assets/images/growth/growthTime.png" alt="">
|
||||
<div class="body_schedule_text">学习进度</div>
|
||||
</div>
|
||||
<div class="body_schedule_item">
|
||||
<div class="body_schedule_one">
|
||||
<div class="body_schedule_left">
|
||||
<div style="margin-bottom: 9px;">总任务</div>
|
||||
<div>当前任务</div>
|
||||
</div>
|
||||
<div class="body_schedule_right">
|
||||
<div style="margin-bottom: 9px;">{{detailData.taskNum}}门</div>
|
||||
<div :title="detailData.currentTaskName">{{detailData.currentTaskName.length>30?detailData.currentTaskName.slice(0,30)+'...':detailData.currentTaskName}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body_schedule_two">
|
||||
<div class="body_schedule_pro">
|
||||
<div class="pro_text">总进度</div>
|
||||
<div style="display: flex;align-items: center;">
|
||||
<el-progress style="width: 213px;" :show-text="false" :stroke-width="10" :percentage="Number(((detailData.overallCompletionRate || 0)*100).toFixed(2))"></el-progress>
|
||||
<div class="text">{{ Number(((detailData.overallCompletionRate || 0)*100).toFixed(2)) || 0 }}%</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body_schedule_btn" @click="startLearn">
|
||||
<span class="body_schedule_text">{{detailData.overallCompletionRate==0?'开始学习':detailData.overallCompletionRate==1?'回顾':'继续学习'}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<el-empty :image-size="200"></el-empty>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-dialog
|
||||
title="专业力必修说明"
|
||||
:visible.sync="centerDialogVisible"
|
||||
width="476px"
|
||||
style="margin-top: 30vh;"
|
||||
center>
|
||||
<div class="dialog_body">
|
||||
<div class="dialog_body_text">
|
||||
本功能针对学员所在组织、岗位、职级自动匹配专业力必修任务,完成专业力必修任务方可晋升
|
||||
</div>
|
||||
<div @click="centerDialogVisible = false" class="dialog_body_btn">
|
||||
<span>我已阅读</span>
|
||||
</div>
|
||||
<div class="dialog_body_foot">
|
||||
<el-checkbox v-model="checked">下次进入不再弹窗</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</div>
|
||||
<el-empty v-else :image-size="200"></el-empty>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getList} from '@/api/growth'
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
name: 'Growth',
|
||||
data() {
|
||||
return {
|
||||
downBody: false,
|
||||
explainBody: false,
|
||||
centerDialogVisible: false,
|
||||
checked: false,
|
||||
detailData: {},
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
getList(this.userInfo.aid).then(res=>{
|
||||
if(res.code == 200 ){
|
||||
this.detailData = res.data
|
||||
}
|
||||
if(res.code == 4){
|
||||
// this.$message({
|
||||
// type: 'error',
|
||||
// message: res.msg
|
||||
// })
|
||||
}
|
||||
})
|
||||
if(localStorage.getItem("checkedGrowth") != null){
|
||||
this.centerDialogVisible = localStorage.getItem("checkedGrowth") === "true"
|
||||
}else{
|
||||
this.centerDialogVisible = true
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
checked(){
|
||||
this.checkedVisible()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
startLearn(){
|
||||
this.$router.push({
|
||||
path: '/growthpath',
|
||||
query: {growId:this.detailData.growId,name: this.detailData.growName,isTrue: true,status:this.detailData.overallCompletionRate}
|
||||
})
|
||||
},
|
||||
checkedTrue(){
|
||||
this.centerDialogVisible = true
|
||||
this.checked = localStorage.getItem("checkedGrowth") === "false"
|
||||
},
|
||||
checkedVisible(){
|
||||
// this.centerDialogVisible = false
|
||||
localStorage.setItem("checkedGrowth",!this.checked)
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo'])
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
::v-deep .el-dialog__header{
|
||||
height: 68px;
|
||||
background: linear-gradient( 180deg, #E1DAFF 0%, #FFFFFF 100%);
|
||||
padding-top: 23px;
|
||||
margin-bottom: 36px;
|
||||
}
|
||||
::v-deep .el-dialog__body{
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.growth_body_down{
|
||||
background-image: url(../../assets/images/growth/fileBack.png);
|
||||
background-repeat: no-repeat;
|
||||
background-size:100%;
|
||||
width: 487px;
|
||||
max-height: 452px;
|
||||
position: absolute;
|
||||
right: -120px;
|
||||
top: -22px;
|
||||
padding-right: 32px;
|
||||
.down_head{
|
||||
margin-top: 57px;
|
||||
margin-bottom: 34px;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
.down_head_text{
|
||||
width: 96px;
|
||||
height: 28px;
|
||||
font-weight: 600;
|
||||
font-size: 24px;
|
||||
color: #387DF7;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
}
|
||||
.down_close{
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
right: 37px;
|
||||
top: -18px;
|
||||
.down_close_img{
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.down_over{
|
||||
padding: 0px 40px 0px 63px;
|
||||
overflow-y: auto;
|
||||
max-height: 309px;
|
||||
.down_body{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 22px;
|
||||
.down_body_left{
|
||||
display: flex;
|
||||
.left_img{
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
.left_text{
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
margin-left: 18px;
|
||||
width: 210px;
|
||||
height: 20px;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
color: #677D86;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
.down_btn{
|
||||
cursor: pointer;
|
||||
width: 70px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #387DF7;
|
||||
text-align: center;
|
||||
.down_btn_text{
|
||||
width: 28px;
|
||||
height: 20px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #387DF7;
|
||||
line-height: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.growth_explain{
|
||||
top: 347xp !important;
|
||||
.growth_explain1{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 487px;
|
||||
height: 170px;
|
||||
margin: -37px;
|
||||
background: url("../../assets/images/growth/explain.png") no-repeat;
|
||||
background-size: 100%;
|
||||
.growth_explain_text{
|
||||
width: 376px;
|
||||
height: 56px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
position: relative;
|
||||
.text{
|
||||
display: -webkit-box;
|
||||
word-wrap: break-word;
|
||||
word-break:break-all;
|
||||
overflow: hidden;
|
||||
text-overflow:ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp:2;
|
||||
}
|
||||
.explain_close{
|
||||
cursor: pointer;
|
||||
background-image: url(../../assets/images/growth/close.png);
|
||||
z-index: 99999;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
position: absolute;
|
||||
right: -21px;
|
||||
top: -26px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
.growth{
|
||||
.dialog_body{
|
||||
height: 238px;
|
||||
margin-bottom: 32px;
|
||||
.dialog_body_text{
|
||||
width: 372px;
|
||||
height: 52px;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
line-height: 26px;
|
||||
text-align: left;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 56px;
|
||||
}
|
||||
.dialog_body_btn{
|
||||
cursor: pointer;
|
||||
width: 152px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 31px;
|
||||
height: 40px;
|
||||
background: #387DF7;
|
||||
box-shadow: 1px 2px 8px 1px rgba(56,125,247,0.38);
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
line-height: 40px;
|
||||
color: #ffffff;
|
||||
font-size: 14px;
|
||||
}
|
||||
.dialog_body_foot{
|
||||
margin: 0 0 40px 61px;
|
||||
}
|
||||
}
|
||||
.growth_heads{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin: 10px 43px 29px 40px;
|
||||
position: relative;
|
||||
.growth_left{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
line-height: 40px;
|
||||
.left_text{
|
||||
// width: 108px;
|
||||
height: 25px;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
text-align: left;
|
||||
}
|
||||
.growth_i{
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-left: 6px;
|
||||
border: 1px solid #999999;
|
||||
border-radius: 100%;
|
||||
margin-top: 13px;
|
||||
.growth_mark{
|
||||
color: #999999;
|
||||
line-height: 15px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.growth_right{
|
||||
width: 158px;
|
||||
height: 32px;
|
||||
line-height: 32px;
|
||||
background: #387DF7;
|
||||
box-shadow: 1px 2 12px 1px rgba(56,125,247,0.34);
|
||||
border-radius: 16px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
.right_text{
|
||||
// width: 112px;
|
||||
height: 22px;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
}
|
||||
.growth_img{
|
||||
cursor: pointer;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-left: 10px;
|
||||
.img{
|
||||
width: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.growth_body{
|
||||
// max-width: 1340px;
|
||||
height: 574px;
|
||||
background: #FFFFFF;
|
||||
border-radius: 10px;
|
||||
border: 1px solid #E4EDFE;
|
||||
margin: 0 41px 0px 38px;
|
||||
position: relative;
|
||||
.growth_body_shared{
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
right: 46px;
|
||||
top: 107px;
|
||||
.shared_img{
|
||||
width: 21px;
|
||||
height: 18px;
|
||||
}
|
||||
.shared_text{
|
||||
width: 64px;
|
||||
height: 22px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
color: #409EFF;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
margin-left: 9px;
|
||||
}
|
||||
}
|
||||
.body_head{
|
||||
// max-width: 1066px;
|
||||
height: 70px;
|
||||
background: linear-gradient( 180deg, #DEEBFF 0%, #FFFFFF 100%);
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
border: 1px solid #E4EDFE;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 23px;
|
||||
.head_left{
|
||||
// width: 272px;
|
||||
// height: 28px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
color: #387DF7;
|
||||
// line-height: 28px;
|
||||
text-align: left;
|
||||
margin: 23px 0 0 26px;
|
||||
}
|
||||
.head_right{
|
||||
// width: 326px;
|
||||
height: 22px;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
color: #666660;
|
||||
line-height: 22px;
|
||||
margin: 25px 36px 0 0;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
line-height: 22px;
|
||||
.head_right_one{
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.head_right_two{
|
||||
margin-left: 14px;
|
||||
.head_right_sta{
|
||||
|
||||
}
|
||||
.head_right_status{
|
||||
color: #409EFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.body_explain{
|
||||
margin-bottom: 20px;
|
||||
.body_explain_icon{
|
||||
display: flex;
|
||||
margin-left: 28px;
|
||||
margin-bottom: 20px;
|
||||
.body_explain_img{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
.body_explain_text{
|
||||
width: 32px;
|
||||
height: 22px;
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
color: #333333;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
.body_explain_item{
|
||||
margin-left: 28px;
|
||||
margin-right: 36px;
|
||||
// max-width: 1003px;
|
||||
max-height: 80px;
|
||||
background: #F5F6F7;
|
||||
border-radius: 8px;
|
||||
padding: 18px 20px 18px 13px;
|
||||
.body_explain_text{
|
||||
// max-width: 970px;
|
||||
max-height: 45px;
|
||||
font-weight: 400;
|
||||
font-size: 11px;
|
||||
color: #333333;
|
||||
line-height: 22px;
|
||||
display: -webkit-box;
|
||||
word-wrap: break-word;
|
||||
word-break:break-all;
|
||||
overflow: hidden;
|
||||
text-overflow:ellipsis;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp:2;
|
||||
}
|
||||
}
|
||||
}
|
||||
.body_schedule{
|
||||
.body_schedule_icon{
|
||||
display: flex;
|
||||
margin-bottom: 27px;
|
||||
.body_schedule_img{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-left: 28px;
|
||||
margin-top: 3px;
|
||||
}
|
||||
.body_schedule_text{
|
||||
width: 64px;
|
||||
height: 22px;
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
color: #333333;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
margin-left: 8px;
|
||||
}
|
||||
}
|
||||
.body_schedule_item{
|
||||
margin-left: 58px;
|
||||
.body_schedule_one{
|
||||
display: flex;
|
||||
margin-bottom: 41px;
|
||||
.body_schedule_left{
|
||||
min-width: 52px;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
color: #3B3C4A;
|
||||
line-height: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
.body_schedule_right{
|
||||
margin-left: 13px;
|
||||
min-width: 65px;
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
color: #2E72F2;
|
||||
line-height: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
.body_schedule_two{
|
||||
display: flex;
|
||||
.body_schedule_pro{
|
||||
width: 250px;
|
||||
height: 30px;
|
||||
.pro_text{
|
||||
width: 42px;
|
||||
height: 18px;
|
||||
font-weight: 400;
|
||||
font-size: 11px;
|
||||
color: #666660;
|
||||
line-height: 18px;
|
||||
text-align: left;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.text{
|
||||
font-weight: 400;
|
||||
font-size: 10px;
|
||||
color: #333333;
|
||||
margin-left: 15px;
|
||||
line-height: 14px;
|
||||
}
|
||||
}
|
||||
.body_schedule_btn{
|
||||
width: 112px;
|
||||
cursor: pointer;
|
||||
height: 32px;
|
||||
margin-left: 35px;
|
||||
margin-top: 6px;
|
||||
background: #409EFF;
|
||||
box-shadow: 1px 2 12px 1px rgba(56,125,247,0.34);
|
||||
border-radius: 3px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
.body_schedule_text{
|
||||
width: 52px;
|
||||
height: 18px;
|
||||
font-weight: 400;
|
||||
font-size: 13px;
|
||||
color: #FFFFFF;
|
||||
line-height: 18px;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
1434
src/views/study/GrowthPath.vue
Normal file
@@ -1,80 +1,89 @@
|
||||
<template>
|
||||
<div>
|
||||
<!-- <div style="display:flex; padding-left:20px; width:100%">
|
||||
<div style="width:100px">完成情况</div>
|
||||
<div class="progress"><div class="msg">课程完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.course" status="warning" class="progressItem"> </el-progress> </div>
|
||||
<div class="progress" ><div class="msg">项目完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.project" status="success" class="progressItem"> </el-progress> </div>
|
||||
<div class="progress"><div class="msg">路径图完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.router" class="progressItem"> </el-progress> </div>
|
||||
|
||||
</div> -->
|
||||
<div style="display: flex; justify-content: space-between; padding: 12px 32px 10px 22px;">
|
||||
<div style="display: flex; justify-content: flex-start">
|
||||
<div>
|
||||
<el-select class="search-input" v-model="status" clearable placeholder="学习进度">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option label="未开始" value="0"></el-option>
|
||||
<el-option label="进行中" value="1"></el-option>
|
||||
<el-option label="已完成" value="2"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<div style="padding-left: 10px"><el-input v-model="params.cmtask_name" clearable placeholder="搜索名称"></el-input></div>
|
||||
<div class="button-class" style="padding-left: 10px"><el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button></div>
|
||||
<div class="button-class" style="padding-left: 10px"><el-button type="primary" icon="el-icon-refresh-right" @click="reset()">重置</el-button></div>
|
||||
</div>
|
||||
<div style="margin-top: 50px;" v-if="isType == 9||couresList.length == 0">
|
||||
<el-empty description="您当前暂无学习数据~"></el-empty>
|
||||
</div>
|
||||
<!--课程列表内容-->
|
||||
<div class="uc-list" v-if="couresList.length > 0">
|
||||
<div class="uc-course" v-for="(item, idx) in couresList" @click="jumpRouter(item)" :key="idx">
|
||||
<div class="uc-course-img">
|
||||
<img :src="item.cmtask_imgurl" />
|
||||
<span class="spanname" v-if="item.cmtask_type==1">学习路径图</span>
|
||||
<span class="spanname" v-if="item.cmtask_type==2">学习项目</span>
|
||||
<!-- 类型3不显示,20230307 东吴说已确认的修改 -->
|
||||
<!-- <span class="spanname" v-if="item.cmtask_type==3">老系统必修任务</span> -->
|
||||
</div>
|
||||
<div class="uc-course-info">
|
||||
<!-- 任务名称 -->
|
||||
<div class="uc-course-name one-line-ellipsis" style="cursor: pointer">
|
||||
<span v-if="item.type==10" class="uc-course-type2">录播</span>
|
||||
<span v-if="item.type==20" class="uc-course-type2">录播</span>
|
||||
<!-- <a href="/course/detail?id=" target="_blank"> {{item.name}}</a> -->
|
||||
<span v-html="item.cmtask_name"></span>
|
||||
<div v-else>
|
||||
<!-- <div style="display:flex; padding-left:20px; width:100%">
|
||||
<div style="width:100px">完成情况</div>
|
||||
<div class="progress"><div class="msg">课程完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.course" status="warning" class="progressItem"> </el-progress> </div>
|
||||
<div class="progress" ><div class="msg">项目完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.project" status="success" class="progressItem"> </el-progress> </div>
|
||||
<div class="progress"><div class="msg">路径图完成情况</div> <el-progress :text-inside="true" :stroke-width="16" :percentage="porcessData.router" class="progressItem"> </el-progress> </div>
|
||||
|
||||
</div> -->
|
||||
<!-- <div v-if="isType == 2" class="title">
|
||||
<div class="item" style="margin-right: 19px;" :class="typeClass == 1?'item1':'item'" @click="learnType(1)">学习项目</div>
|
||||
<div class="item" :class="typeClass == 2?'item1':'item'" @click="learnType(2)">学习路径</div>
|
||||
</div> -->
|
||||
<div style="display: flex; justify-content: space-between; padding: 12px 32px 10px 22px;">
|
||||
<div style="display: flex; justify-content: flex-start">
|
||||
<div>
|
||||
<el-select class="search-input" v-model="status" clearable placeholder="学习进度">
|
||||
<el-option label="全部" value=""></el-option>
|
||||
<el-option label="未开始" value="0"></el-option>
|
||||
<el-option label="进行中" value="1"></el-option>
|
||||
<el-option label="已完成" value="2"></el-option>
|
||||
</el-select>
|
||||
</div>
|
||||
<!-- <div class="uc-course-source" @click="jumpRouter(item)">来源:{{ item.cmtask_name }}</div> -->
|
||||
<div style="padding-top: 18px; " class="uc-course-text">学习进度:
|
||||
<span v-if="item.cmtask_user_status==0">未开始</span>
|
||||
<span v-if="item.cmtask_user_status==1">进行中</span>
|
||||
<span v-if="item.cmtask_user_status==2">已完成</span>
|
||||
</div>
|
||||
<!-- <div class="uc-course-time">推送时间:{{ formatsec(Number(item.updated_at) * 1000 )}}</div> -->
|
||||
<div class="uc-course-time">推送时间:{{ item.created_at}}</div>
|
||||
</div>
|
||||
<div class="uc-course-btns">
|
||||
<el-button @click="jumpRouter(item)" type="primary" size="small">开始学习</el-button>
|
||||
<div style="padding-left: 10px"><el-input v-model="params.cmtask_name" clearable placeholder="搜索名称"></el-input></div>
|
||||
<div class="button-class" style="padding-left: 10px"><el-button type="primary" icon="el-icon-search" @click="search()">搜索</el-button></div>
|
||||
<div class="button-class" style="padding-left: 10px"><el-button type="primary" icon="el-icon-refresh-right" @click="reset()">重置</el-button></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height:150px; text-align: center; margin-top:57px;" >
|
||||
<el-pagination background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:current-page="page"
|
||||
:page-size="size"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total">
|
||||
</el-pagination>
|
||||
<!--课程列表内容-->
|
||||
<div class="uc-list" v-if="couresList.length > 0">
|
||||
<div class="uc-course" v-for="(item, idx) in couresList" @click="jumpRouter(item)" :key="idx">
|
||||
<div class="uc-course-img">
|
||||
<img :src="item.cmtask_imgurl" />
|
||||
<span class="spanname" v-if="item.cmtask_type==1">学习路径图</span>
|
||||
<span class="spanname" v-if="item.cmtask_type==2">学习项目</span>
|
||||
<!-- 类型3不显示,20230307 东吴说已确认的修改 -->
|
||||
<!-- <span class="spanname" v-if="item.cmtask_type==3">老系统必修任务</span> -->
|
||||
</div>
|
||||
<div class="uc-course-info">
|
||||
<!-- 任务名称 -->
|
||||
<div class="uc-course-name one-line-ellipsis" style="cursor: pointer">
|
||||
<span v-if="item.type==10" class="uc-course-type2">录播</span>
|
||||
<span v-if="item.type==20" class="uc-course-type2">录播</span>
|
||||
<!-- <a href="/course/detail?id=" target="_blank"> {{item.name}}</a> -->
|
||||
<span v-html="item.cmtask_name"></span>
|
||||
</div>
|
||||
<!-- <div class="uc-course-source" @click="jumpRouter(item)">来源:{{ item.cmtask_name }}</div> -->
|
||||
<div style="padding-top: 18px; " class="uc-course-text">学习进度:
|
||||
<span v-if="item.cmtask_user_status==0">未开始</span>
|
||||
<span v-if="item.cmtask_user_status==1">进行中</span>
|
||||
<span v-if="item.cmtask_user_status==2">已完成</span>
|
||||
</div>
|
||||
<!-- <div class="uc-course-time">推送时间:{{ formatsec(Number(item.updated_at) * 1000 )}}</div> -->
|
||||
<div class="uc-course-time">推送时间:{{ item.created_at}}</div>
|
||||
</div>
|
||||
<div class="uc-course-btns">
|
||||
<el-button @click="jumpRouter(item)" type="primary" size="small">开始学习</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div style="height:150px; text-align: center; margin-top:57px;" >
|
||||
<el-pagination background
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:page-sizes="[10, 20, 30, 40]"
|
||||
:current-page="page"
|
||||
:page-size="size"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total">
|
||||
</el-pagination>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
<div v-else class="zan-wu">
|
||||
<div v-if="loading">
|
||||
<span v-if="couresList.length==0">正在加载数据...</span>
|
||||
<span v-else>查询中...</span>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span v-if="couresList.length==0">没有查询到相关内容</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
<div v-else class="zan-wu">
|
||||
<div v-if="loading">
|
||||
<span v-if="couresList.length==0">正在加载数据...</span>
|
||||
<span v-else>查询中...</span>
|
||||
</div>
|
||||
<div v-else>
|
||||
<span v-if="couresList.length==0">没有查询到相关内容</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -107,19 +116,48 @@ export default {
|
||||
keyword:'',
|
||||
formatsec,
|
||||
couresList:[],
|
||||
total: 0
|
||||
total: 0,
|
||||
isType: null,
|
||||
typeClass: true,
|
||||
};
|
||||
},
|
||||
watch:{
|
||||
'$route': {
|
||||
handler(to, from) {
|
||||
console.log('type变化了', to.query.type);
|
||||
this.isType = to.query.type;
|
||||
this.totalNums = sessionStorage.getItem('totalNums')
|
||||
if(this.totalNums == 0){
|
||||
this.isType = 9
|
||||
}
|
||||
if(this.isType != 9){
|
||||
this.loadBoeData();
|
||||
}
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.loadBoeData();
|
||||
this.getPossData()
|
||||
this.totalNums = sessionStorage.getItem('totalNums')
|
||||
},
|
||||
methods: {
|
||||
learnType(item){
|
||||
this.typeClass = item
|
||||
this.reset()
|
||||
},
|
||||
jumpRouter(item) {
|
||||
//location.href=`${this.webBaseUrl}/course/boeframe?id=${item.cmtask_id}`;
|
||||
|
||||
//let urlPre=window.location.protocol+'//'+window.location.host;
|
||||
let studentPath=process.env.VUE_APP_STUDENT_PATH;
|
||||
// type: 0 新任管理者,1 学习项目 2 学习路径图 3 成长路径
|
||||
let type = {1:'2',2:'1',3:'0'}[item.cmtask_type]
|
||||
if(this.$route.query.type==1 || !this.$route.query.type){
|
||||
type = '0'
|
||||
}
|
||||
// apiManage.userRead({type,id:item.cmtask_id})
|
||||
if(item.cmtask_type==1){ //学习路径图
|
||||
let params=encodeURIComponent('routerId='+item.cmtask_id);
|
||||
//this.$router.push('/forward?to='+studentPath+'/pathdetails¶ms='+params);
|
||||
@@ -130,6 +168,9 @@ export default {
|
||||
}else if(item.cmtask_type==3){
|
||||
let pushUrl=`/course/boeframe?id=${item.cmtask_id}&type=3`;
|
||||
this.$router.push(pushUrl);
|
||||
}else if(item.cmtask_type==4){
|
||||
let params=encodeURIComponent('projectId='+item.cmtask_id);
|
||||
this.$router.push('/forward?to='+studentPath+'/projectdetails¶ms='+params);
|
||||
}
|
||||
},
|
||||
getPossData(){
|
||||
@@ -157,17 +198,56 @@ export default {
|
||||
cmtask_name:this.params.cmtask_name,
|
||||
}
|
||||
this.loading=true;
|
||||
apiManage.userTaskList(params).then(res=>{
|
||||
if(this.isType == 1){
|
||||
//领导力必修
|
||||
apiManage.leadership(params).then(res=>{
|
||||
if(res.code==200){
|
||||
this.total =parseInt(res.data.total);
|
||||
this.couresList = res.data.records;
|
||||
}else{
|
||||
this.$message.error('查询数据失败:'+res.msg);
|
||||
}
|
||||
this.loading=false;
|
||||
}).catch(()=>{
|
||||
this.loading=false;
|
||||
})
|
||||
}else if (this.isType == 2){
|
||||
//定制化学习
|
||||
apiManage.compulsoryList(params).then(res=>{
|
||||
if(res.code==200){
|
||||
this.total =parseInt(res.data.total);
|
||||
this.couresList = res.data.records;
|
||||
}else{
|
||||
this.$message.error('查询数据失败:'+res.msg);
|
||||
}
|
||||
this.loading=false;
|
||||
this.total =parseInt(res.data.total);
|
||||
this.couresList = res.data.records;
|
||||
}else{
|
||||
this.$message.error('查询数据失败:'+res.msg);
|
||||
}
|
||||
this.loading=false;
|
||||
}).catch(()=>{
|
||||
this.loading=false;
|
||||
this.loading=false;
|
||||
})
|
||||
}else{
|
||||
apiManage.leadership(params).then(res=>{
|
||||
if(res.code==200){
|
||||
this.total =parseInt(res.data.total);
|
||||
this.couresList = res.data.records;
|
||||
}else{
|
||||
this.$message.error('查询数据失败:'+res.msg);
|
||||
}
|
||||
this.loading=false;
|
||||
}).catch(()=>{
|
||||
this.loading=false;
|
||||
})
|
||||
// apiManage.userTaskList(params).then(res=>{
|
||||
// if(res.code==200){
|
||||
// this.total =parseInt(res.data.total);
|
||||
// this.couresList = res.data.records;
|
||||
// }else{
|
||||
// this.$message.error('查询数据失败:'+res.msg);
|
||||
// }
|
||||
// this.loading=false;
|
||||
// }).catch(()=>{
|
||||
// this.loading=false;
|
||||
// })
|
||||
}
|
||||
},
|
||||
search(){
|
||||
this.page=1;
|
||||
@@ -196,6 +276,31 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.title{
|
||||
display: flex;
|
||||
margin-left: 22px;
|
||||
margin-bottom: 6px;
|
||||
.item{
|
||||
width: 100px;
|
||||
height: 46px;
|
||||
line-height: 46px;
|
||||
text-align: center;
|
||||
font-size: 18px;
|
||||
color: #666666;
|
||||
}
|
||||
.item1{
|
||||
// border-bottom: #409EFF 4px solid;
|
||||
position: relative;
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 10px;
|
||||
width: 80px;
|
||||
border-bottom: 4px solid #409EFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
.progress{
|
||||
width:calc((100% - 100px) / 3);
|
||||
display: flex;
|
||||
|
||||
@@ -752,7 +752,7 @@
|
||||
if (this.contentData.status < 2) {
|
||||
// this.contentData.status = 2; //进行中
|
||||
if(r.contentType != 61&&r.contentType != 20 && r.contentType != 10){
|
||||
setTimeout(() => {
|
||||
setTimeout(() => {
|
||||
this.isContentTypeTwo = r.contentType
|
||||
$this.isShowTime()
|
||||
}, 2000);
|
||||
@@ -1500,7 +1500,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
progress(val) {
|
||||
progress(val) {
|
||||
const progressValue = parseFloat(val) * 100;
|
||||
this.sendEventProgress = Number(progressValue.toFixed(2));
|
||||
},
|
||||
|
||||
@@ -70,15 +70,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="experience.data.rankingNo>5" style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div v-if="experience.data.rankingNo>5" class="omit">
|
||||
<!-- v-if="experience.data.rankingNo>5" -->
|
||||
<div style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div class="omit">
|
||||
<div>.</div> <div>.</div> <div>.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-if="experience.data.rankingNo>5" class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<!-- v-if="experience.data.rankingNo>5" -->
|
||||
<div class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<div style="color: #0059FF;line-height: 40px;padding-left:14px;font-size: 16px;" class="tab-rank" >{{experience.data.rankingNo}}</div>
|
||||
<div class="tab-name" v-if="userInfo.aid">
|
||||
<author-img :avatar="userInfo.avatar" :aid="userInfo.aid" :sex="userInfo.sex"></author-img>
|
||||
@@ -161,13 +161,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="learningDuration.data.rankingNo>5" style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div v-if="learningDuration.data.rankingNo>5" class="omit">
|
||||
<div style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div class="omit">
|
||||
<div>.</div> <div>.</div> <div>.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="learningDuration.data.rankingNo>5" class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<div class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<div style="color: #0059FF;line-height: 40px;padding-left:14px;font-size: 16px;" class="tab-rank" >{{learningDuration.data.rankingNo}}</div>
|
||||
<div class="tab-name" v-if="userInfo.aid">
|
||||
<author-img :avatar="userInfo.avatar" :aid="userInfo.aid" :sex="userInfo.sex"></author-img>
|
||||
@@ -250,14 +250,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="learningDays.data.rankingNo>5" style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div v-if="learningDays.data.rankingNo>5" class="omit">
|
||||
<div style="margin-top:20px;border-bottom: 1px solid #ddd;padding-bottom:40px">
|
||||
<div class="omit">
|
||||
<div>.</div> <div>.</div> <div>.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div v-if="learningDays.data.rankingNo>5" class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<div class="table-hear" style="margin-top:40px;border-bottom: 1px solid #ddd;padding-bottom:20px">
|
||||
<div style="color: #0059FF;line-height: 40px;padding-left:14px;font-size: 16px;" class="tab-rank" >{{learningDays.data.rankingNo}}</div>
|
||||
<div class="tab-name" v-if="userInfo.aid">
|
||||
<author-img :avatar="userInfo.avatar" :aid="userInfo.aid" :sex="userInfo.sex"></author-img>
|
||||
|
||||