Compare commits

...

105 Commits

Author SHA1 Message Date
sunhonglai
0989360183 Merge remote-tracking branch 'origin/250321-bugfix-shl' into 250321-bugfix-shl
# Conflicts:
#	src/views/Login.vue
2025-03-24 08:31:59 +08:00
sunhonglai
5e31f7d1a8 注掉废弃的登录页面 2025-03-24 08:31:27 +08:00
sunhonglai
eaa7f04cd6 删除废弃的登录页面 2025-03-21 16:52:47 +08:00
sunhonglai
0d7a2ad353 修改响应结果空指针问题 2025-03-21 15:48:40 +08:00
670788339
9d9d663591 课程详情显示供应商 2025-03-19 13:31:50 +08:00
joshen
90b53a54b2 Merge branch '250220-pre-126-177-gx' into master_1202 2025-03-13 17:38:58 +08:00
gengxin
b89a8266e5 考试完成判断3 2025-03-13 17:37:33 +08:00
joshen
49137387f6 Merge branch '250220-pre-126-177-gx' into master_1202 2025-03-13 17:16:32 +08:00
gengxin
812c09d65c 考试完成判断 2025-03-13 16:38:33 +08:00
gengxin
57a87db016 考试状态修改 2025-03-13 16:32:02 +08:00
gengxin
2536fca503 考试及格线 2025-03-13 16:22:07 +08:00
joshen
047b1f9bae Merge branch '250220-pre-126-177-gx' into master_1202 2025-03-12 17:33:00 +08:00
gengxin
7162d329ee 考试及格线 2025-03-12 17:00:25 +08:00
gengxin
d7d80e8244 考试及格线获取 2025-03-12 16:27:44 +08:00
joshen
af208d0a6d 部署生产1 2025-03-11 17:15:07 +08:00
joshen
713f258c14 Merge branch '250220-pre-126-177-gx' into master_1202
# Conflicts:
#	src/views/portal/case/Index.vue
#	src/views/study/Courses.vue
2025-03-11 17:12:30 +08:00
gengxin
def3892edc 退出全屏 ,需要水印12 2025-03-11 11:51:51 +08:00
gengxin
51a8da4bdb 退出全屏 ,需要水印11 2025-03-11 11:45:34 +08:00
gengxin
6536e36857 退出全屏 ,需要水印10 2025-03-11 11:29:14 +08:00
gengxin
1bf9398177 退出全屏 ,需要水印9 2025-03-11 11:26:11 +08:00
gengxin
a5333952c9 退出全屏 ,需要水印8 2025-03-11 11:15:18 +08:00
gengxin
127f191776 退出全屏 ,需要水印7 2025-03-11 11:09:19 +08:00
gengxin
e9b9a14b69 退出全屏 ,需要水印6 2025-03-11 11:04:53 +08:00
gengxin
11a1065df9 退出全屏 ,需要水印5 2025-03-11 11:00:45 +08:00
gengxin
001452fa2e 退出全屏 ,需要水印4 2025-03-11 10:52:46 +08:00
gengxin
988a7a1e17 退出全屏 ,需要水印3 2025-03-11 10:43:00 +08:00
gengxin
7fed1a3991 退出全屏 ,需要水印3 2025-03-11 10:41:44 +08:00
gengxin
5448a9724d 退出全屏 ,需要水印2 2025-03-11 10:24:53 +08:00
gengxin
23928a0865 退出全屏 ,需要水印1 2025-03-11 10:01:54 +08:00
gengxin
797c08d8fc 退出全屏 ,需要水印 2025-03-10 14:54:46 +08:00
gengxin
a8d44d0169 播放加上水印 2025-03-10 14:46:03 +08:00
joshen
567bed812b 退出全屏 esc 触发监听4 2025-03-10 14:21:58 +08:00
joshen
2e0fe475f2 退出全屏 esc 触发监听3 2025-03-10 14:17:17 +08:00
joshen
04ecf6a971 退出全屏 esc 触发监听2 2025-03-10 14:08:08 +08:00
joshen
5381416a05 退出全屏 esc 触发监听 2025-03-10 11:46:02 +08:00
joshen
216141dbd3 退出全屏 esc 触发监听 2025-03-10 11:30:53 +08:00
joshen
1dad88c59b 退出全屏 2025-03-10 11:18:16 +08:00
joshen
0f3c53cb31 点击 exit 退出 执行效果 2025-03-10 11:11:58 +08:00
joshen
1f4416e9b1 水印的生效 2025-03-10 10:39:01 +08:00
joshen
2ffe9c1872 去除水印 2025-03-08 11:06:12 +08:00
gengxin
e74f14baa0 弹出框处理 2 2025-03-05 08:03:00 +08:00
gengxin
aa0fcf6ff0 弹出框处理 2025-03-05 07:55:39 +08:00
gengxin
9fba452d2d 弹出框处理 2025-03-05 07:46:22 +08:00
joshen
d33e27b3d0 Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into master_1202 2025-02-27 21:07:42 +08:00
Pengxiansen
3d3f2ebc6e 提交 2025-02-27 21:02:06 +08:00
joshen
b679502553 Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into master_1202 2025-02-27 14:21:43 +08:00
Pengxiansen
d027a4c56a 提交 2025-02-27 13:45:29 +08:00
Pengxiansen
c6b2c46311 提交 2025-02-27 09:20:42 +08:00
joshen
181892de67 Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into master_1202 2025-02-27 00:59:20 +08:00
Pengxiansen
a2809f5347 提交 2025-02-27 00:51:33 +08:00
joshen
609902aeb8 Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-26 21:45:32 +08:00
Pengxiansen
6399aa3352 提交 2025-02-26 21:42:14 +08:00
joshen
23ffd002a7 Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-26 21:08:27 +08:00
Pengxiansen
96e0c0fb70 提交 2025-02-26 20:57:48 +08:00
Pengxiansen
6382f6b04d 提交 2025-02-26 19:49:51 +08:00
joshen
4d783ce94d Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-26 18:21:49 +08:00
Pengxiansen
b686a9e2a2 提交 2025-02-26 18:16:03 +08:00
joshen
b52ad264da Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-26 13:06:13 +08:00
Pengxiansen
511b3179f6 提交 2025-02-26 13:04:45 +08:00
joshen
cc48f52fea Merge remote-tracking branch 'yx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-26 10:49:42 +08:00
Pengxiansen
5f230a6543 提交 2025-02-26 10:34:28 +08:00
joshen
a78f6a0152 Merge remote-tracking branch 'zshyx/250207-growth-prod-master_1202-zp' into test20250220 2025-02-20 19:17:59 +08:00
Pengxiansen
7c20a11687 提交 2025-02-20 19:15:55 +08:00
gengxin
5b5d73c905 云效地址更爱 2025-02-20 13:42:44 +08:00
Pengxiansen
09f06b1679 提交 2025-02-19 16:11:07 +08:00
Pengxiansen
c0562c41c0 提交 2025-02-19 15:45:58 +08:00
Pengxiansen
24a34fa779 提交 2025-02-19 14:06:25 +08:00
emcchui
1843c9e6aa 去除姚吟添加的默认排序条件 2025-02-13 14:26:10 +08:00
joshen
ca25bd9d76 調試 2025-01-20 17:45:42 +08:00
joshen
091c09204f 案例查询 2025-01-20 17:33:09 +08:00
joshen
31be7b053e 調試 2025-01-18 18:39:03 +08:00
joshen
178431e7df 調試 2025-01-18 01:55:22 +08:00
joshen
efbf778d80 調試 2025-01-18 01:24:39 +08:00
joshen
14fdadcec3 調試 2025-01-18 01:24:10 +08:00
joshen
33feddbe3a 調試 2025-01-18 01:15:07 +08:00
joshen
7756c28679 調試 2025-01-18 01:13:55 +08:00
joshen
bb45487264 調試 2025-01-18 01:10:53 +08:00
joshen
df77e5c7dc 調試 2025-01-18 00:56:50 +08:00
joshen
b22dc4539a 調試 2025-01-18 00:47:29 +08:00
joshen
db024ebc2a 調試 2025-01-18 00:46:41 +08:00
joshen
5e7580a936 判空 2025-01-18 00:23:45 +08:00
zhangsir
00d272c3d0 数据导致的报错 2025-01-10 14:29:54 +08:00
zhangsir
398bbc675b 数据导致的报错 2025-01-10 09:49:25 +08:00
zhangsir
d0a6807d2c 数据导致的报错 2025-01-09 17:30:40 +08:00
joshen
f01283f530 10.251.132.75 2025-01-09 11:49:44 +08:00
joshen
b9ec8ed534 Merge branch 'master_1202' into master-video-0930
# Conflicts:
#	src/components/VideoPlayer/index.vue
#	src/components/VideoPlayer/progress-bar.vue
#	src/views/study/coursenew.vue
2025-01-08 18:38:07 +08:00
joshen
5f9da5cf03 Merge branch 'zcwy_0822_case' into master_1202
# Conflicts:
#	src/views/hotforum/Index.vue
2024-12-27 16:15:16 +08:00
zhangsir
1b3064f2ab 替换图片 2024-12-27 16:11:01 +08:00
joshen
24be910b83 回退图片 2024-12-25 14:20:11 +08:00
joshen
6153daa98a Merge branch 'zcwy_0822_case' into master_1202
# Conflicts:
#	src/views/hotforum/Index.vue
2024-12-24 16:40:18 +08:00
zhangsir
c5f6f5c83e 替换图片 2024-12-24 16:22:37 +08:00
joshen
4d0cae9346 Merge branch 'zcwy_1127_teacher' into master_1202 2024-12-12 16:46:44 +08:00
zhangsir
5be181df8c 回退授课记录页面 2024-12-12 16:45:08 +08:00
joshen
67f2ff3e86 重新提交 2024-12-12 11:56:35 +08:00
joshen
3588ef3e67 回退 2024-12-12 11:42:11 +08:00
joshen
7fab8bb062 huancun 2024-12-12 11:12:54 +08:00
joshen
977af999a3 huancun 2024-12-12 11:10:03 +08:00
joshen
cc0362380e Merge branch 'zcwy_0822_case' into master_1202 2024-12-12 10:56:07 +08:00
zhangsir
45027ca77e 2024 2024-12-10 19:53:38 +08:00
joshen
83838b2c1a Merge branch 'zcwy_1127_teacher' into master_1202 2024-12-10 18:15:33 +08:00
zhangsir
acbacac737 讲师管理授课记录讲师端 2024-12-10 14:32:51 +08:00
joshen
f98fda4f78 Merge remote-tracking branch 'yx/zcwy_1127_teacher' into master_1202 2024-12-02 19:21:14 +08:00
zhangsir
1ad2c80c9b 添加教师修改接口 2024-12-02 17:43:50 +08:00
zhangsir
21afc82036 添加教师修改接口 2024-11-27 18:11:49 +08:00
joshen
6b6e8a4096 pc视频播放器禁止拖动 2024-10-10 23:07:46 +08:00
23 changed files with 429 additions and 297 deletions

View File

@@ -16,9 +16,9 @@
<meta name="referrer" content="strict-origin-when-cross-origin"/> <meta name="referrer" content="strict-origin-when-cross-origin"/>
<link rel="icon" href="<%= BASE_URL %>logo/favicon.ico"> <link rel="icon" href="<%= BASE_URL %>logo/favicon.ico">
<title>京东方大学堂</title> <title>京东方大学堂</title>
<script> <script>
// if(window.top != window.self){ // if(window.top != window.self){
// window.top.location=window.self.location; // window.top.location=window.self.location;
// } // }

View File

@@ -1,5 +1,6 @@
/**我的授课记录*/ /**我的授课记录*/
import ajax from '@/api/boe/boeApiAjax.js' import ajax from '@/api/boe/boeApiAjax.js'
import ajax2 from '@/api/unionAjax.js'
import axios from 'axios' import axios from 'axios'
import { getToken } from '@/utils/token' import { getToken } from '@/utils/token'
const baseURL = process.env.VUE_APP_BOE_BASE_API; const baseURL = process.env.VUE_APP_BOE_BASE_API;
@@ -60,12 +61,15 @@ const exportStudentOfTearcher = function(userId) {
const courseRecordList = function(data) { const courseRecordList = function(data) {
return ajax.postJson('/b1/system/teacher/teacher-course-list',data); return ajax.postJson('/b1/system/teacher/teacher-course-list',data);
} }
const getListByToken = function(data) {
return ajax2.get('/manageApi',`/admin/teacherRecord/getListByToken?courseName=${data.courseName}&page=${data.page}&pageSize=${data.pageSize}`);
}
export default { export default {
courseRecordExport, courseRecordExport,
courseRecordList, courseRecordList,
getListByToken,
exportStudentOfCourse, exportStudentOfCourse,
exportStudentOfTearcher exportStudentOfTearcher

View File

@@ -1,5 +1,5 @@
import ajax from '@/utils/xajax.js' import ajax from '@/utils/xajax.js'
import ajax2 from '../unionAjax.js';
/** /**
* 按名称查询 * 按名称查询
@@ -9,7 +9,9 @@ const findByName = function(name) {
return ajax.get('/xboe/teacher/name?name=' + name); return ajax.get('/xboe/teacher/name?name=' + name);
} }
const findByNameNew = function(name) {
return ajax2.get('/manageApi/admin/teacher/selectTeacher?name=' + name);
}
const updateTeacher=function(data){ const updateTeacher=function(data){
return ajax.postJson('/xboe/teacher/update-teacher',data); return ajax.postJson('/xboe/teacher/update-teacher',data);
} }
@@ -217,7 +219,7 @@ export default {
update, update,
del, del,
detail, detail,
findByName, findByNameNew,
updateSysId, updateSysId,
has, has,
start, start,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

View File

@@ -13,7 +13,7 @@
</el-input> </el-input>
<div class="choice-box" v-if="teacherDownList.length>0"> <div class="choice-box" v-if="teacherDownList.length>0">
<ul> <ul>
<li v-for="te in teacherDownList" :key="te.key" @click="changeTeachers(te)">{{te.teacherName + te.teacherCode}}</li> <li v-for="te in teacherDownList" :key="te.key" @click="changeTeachers(te)">{{te.teacherName + '(' + te.teacherCode + ')'}}</li>
</ul> </ul>
</div> </div>
<!-- <el-select <!-- <el-select
@@ -88,15 +88,15 @@
if (this.teacherValues !== '') { if (this.teacherValues !== '') {
this.loading = true; this.loading = true;
try { try {
const { result, message, status } = await apiTeacher.findByName(this.teacherValues); const { data, message, code } = await apiTeacher.findByNameNew(this.teacherValues);
this.loading = false; this.loading = false;
if (status === 200) { if (code === 200) {
let list = []; let list = [];
result.forEach(item => { data.forEach(item => {
list.push({ list.push({
teacherId: item.id, teacherId: item.id,
teacherName: item.name, teacherName: item.name,
teacherCode: item.code teacherCode: item.mobile
}); });
}); });
this.teacherDownList = list; this.teacherDownList = list;

View File

@@ -327,8 +327,10 @@ export default {
}, },
startTest(){ startTest(){
apiExamPaper.newPaperContent(this.info.id).then(res=>{ apiExamPaper.newPaperContent(this.info.id).then(res=>{
if(res.error == ''&&res.result != ''){ if(!res.error&&res.result != ''){
if(this.info.paperType==2){ if(this.info.paperType==2){
//TODO1
console.log("调用开始考试 if paperType == 2")
this.examPaper.json=res.result; this.examPaper.json=res.result;
let qitems=this.convertToItems(this.examPaper.json); let qitems=this.convertToItems(this.examPaper.json);
this.paper ={items:qitems}; this.paper ={items:qitems};
@@ -336,9 +338,11 @@ export default {
this.curItem=qitems[this.curIndex]; this.curItem=qitems[this.curIndex];
this.startTime=new Date();//记录开始时间 this.startTime=new Date();//记录开始时间
this.timerValue=this.info.testDuration; this.timerValue=this.info.testDuration;
this.content.status=1;
this.timer=setInterval(this.changeTimer,60000); this.timer=setInterval(this.changeTimer,60000);
this.testStart=true; this.testStart=true;
}else{ }else{
console.log("调用开始考试 else paperType != 2")
let paper= {items:res.result}; let paper= {items:res.result};
paper.items.forEach(item=>{ paper.items.forEach(item=>{
if(item.type==101){ if(item.type==101){
@@ -582,8 +586,15 @@ export default {
apiStudy.saveExam(postData).then(res=>{ apiStudy.saveExam(postData).then(res=>{
this.thisTrue = true this.thisTrue = true
if(res.status == 200) { if(res.status == 200) {
console.log("获取数据结果 考试 res ==>",res)
this.records.push(res.result); this.records.push(res.result);
this.content.status=9;//表已学习完,判断上级的章是否已完成 //TODO 评分更改 最终完成
if(res.result.score > res.result.passLine){
this.content.status=9;//表已学习完,判断上级的章是否已完成
}else{
this.content.status=1;
}
this.studyItemId=res.result.studyItemId;//第一次保存时是没有的,所以这里要赋值 this.studyItemId=res.result.studyItemId;//第一次保存时是没有的,所以这里要赋值
this.$alert('您本次考试得分:'+this.lastScore, '考试成绩', { this.$alert('您本次考试得分:'+this.lastScore, '考试成绩', {
confirmButtonText: '确定', confirmButtonText: '确定',

View File

@@ -51,7 +51,8 @@
<el-dropdown placement="bottom" @command="handleContributor"> <el-dropdown placement="bottom" @command="handleContributor">
<span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">贡献者大会</span> <span class="el-dropdown-link" style="font-size:16px;cursor: pointer;" :style="{color:textColor}">贡献者大会</span>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="one">2023</el-dropdown-item> <el-dropdown-item command="three">2024</el-dropdown-item>
<el-dropdown-item command="one" divided>2023</el-dropdown-item>
<el-dropdown-item command="two" divided>2022</el-dropdown-item> <el-dropdown-item command="two" divided>2022</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
@@ -246,6 +247,7 @@ export default {
let obj = { let obj = {
one: urlPre + "/web/contributornew/index", one: urlPre + "/web/contributornew/index",
two: urlPre + "/web/contributor/index", two: urlPre + "/web/contributor/index",
three: urlPre + "/web/contributor_2024/index"
}; };
window.open(obj[val]); window.open(obj[val]);
}, },

View File

@@ -13,7 +13,7 @@
</div> </div>
<!-- <div style="color: red;">下面的表格标题及内容需要调整完善</div> --> <!-- <div style="color: red;">下面的表格标题及内容需要调整完善</div> -->
<div> <div>
<el-tabs v-model="tabName" @tab-click="handleTabClick"> <el-tabs style="width: 100%;" v-model="tabName" @tab-click="handleTabClick">
<el-tab-pane label="报名管理" name="second"> <el-tab-pane label="报名管理" name="second">
<!-- <div>已报名{{study.list.length}}共有0人报名未成功共有{{study.list.length}}人通过审核</div> --> <!-- <div>已报名{{study.list.length}}共有0人报名未成功共有{{study.list.length}}人通过审核</div> -->
<el-row style="margin: 20px 0;" :gutter="20"> <el-row style="margin: 20px 0;" :gutter="20">
@@ -863,4 +863,19 @@ export default {
height: 400px; height: 400px;
overflow: auto; overflow: auto;
} }
.el-tabs__nav-wrap::after {
display: none; /* 隐藏滚动条轨道 */
}
.el-tabs__nav-scroll {
overflow: hidden; /* 隐藏滚动条滑块 */
}
/* 隐藏垂直滚动条 */
.el-table .el-table__body-wrapper::-webkit-scrollbar {
display: none; /* Chrome, Safari, Opera*/
}
</style> </style>

View File

@@ -242,7 +242,7 @@
<svg-icon :icon-class="activeMenu == '/user/medal'?'myxunzhang-active':'myxunzhang'"></svg-icon> <svg-icon :icon-class="activeMenu == '/user/medal'?'myxunzhang-active':'myxunzhang'"></svg-icon>
<span slot="title">我的勋章</span> <span slot="title">我的勋章</span>
</el-menu-item> </el-menu-item>
<el-submenu index="myGrowth" v-show="curIdentity == 1"> <el-submenu index="myGrowth" v-show="curIdentity == 1">
<template slot="title"> <template slot="title">
<!-- <i class="el-icon-s-grid"></i> --> <!-- <i class="el-icon-s-grid"></i> -->
<img src="../../assets/images/myGrowth.jpg" style="width: 1em;height: 1em;margin-right: 8px;"></img> <img src="../../assets/images/myGrowth.jpg" style="width: 1em;height: 1em;margin-right: 8px;"></img>
@@ -433,6 +433,7 @@ export default {
this.getLastStudy(); this.getLastStudy();
//获取讲师认证中条数 //获取讲师认证中条数
this.instructorCertification() this.instructorCertification()
console.log(this.userInfo,'userInfouserInfo')
}, },
mounted() { mounted() {
//console.log(this.userInfo.loginName,'this.userInfo.loginName'); //console.log(this.userInfo.loginName,'this.userInfo.loginName');

View File

@@ -18,7 +18,6 @@
@keydown.right.prevent="forwardCurrentTime" @keydown.right.prevent="forwardCurrentTime"
@keydown.up.prevent="increaseVolume" @keydown.up.prevent="increaseVolume"
@keydown.down.prevent="lowerVolume" @keydown.down.prevent="lowerVolume"
@keydown.esc.prevent="toggleFullScreen"
tabindex="0" tabindex="0"
width="100%" width="100%"
height="100%" height="100%"
@@ -385,9 +384,26 @@ export default {
console.log('\x1b[31m%s\x1b[0m','*****************加载失败**********') console.log('\x1b[31m%s\x1b[0m','*****************加载失败**********')
}) })
// 监听全屏事件的变化,保存数据 // 监听全屏事件的变化,保存数据
window.addEventListener("fullscreenchange", () => { window.addEventListener("F", () => {
this.isFullscreen = this.isFullScreen(); this.isFullscreen = this.isFullScreen();
}); });
document.addEventListener('fullscreenchange',this.handleFullscreenChange);
document.addEventListener('webkitfullscreenchange',this.handleFullscreenChange );
// this.videoDom.addEventListener('keydown', function(e){
// //console.log('\x1b[31m%s\x1b[0m','*****************加载失败**********')
// console.log("video is exit");
// if(e.key === "Escape"){
// console.log("按键 退出全屏 执行")
// }
// })
// this.videoDom.addEventListener("keydown", (e) => {
// console.log("是否监听到");
// if(e.keyCode == 27){
// console.log("是否监听到 esc");
// this.toggleFullScreen();
// }
// });
}, },
methods: { methods: {
//当视频由于需要缓冲下一帧而停止,解决一直计时的问题 //当视频由于需要缓冲下一帧而停止,解决一直计时的问题
@@ -540,6 +556,7 @@ export default {
/* 切换“全屏”和“非全屏”模式 /* 切换“全屏”和“非全屏”模式
*/ */
toggleFullScreen() { toggleFullScreen() {
console.log("toggleFullScreen 执行 ",this.isFullScreen())
let element = this.$refs.area; let element = this.$refs.area;
if (!this.isFullScreen()) { if (!this.isFullScreen()) {
if (element.requestFullscreen) { if (element.requestFullscreen) {
@@ -596,6 +613,24 @@ export default {
const currentTime = this.$refs.video.currentTime; const currentTime = this.$refs.video.currentTime;
this.$emit('onTimeUpdate', currentTime); this.$emit('onTimeUpdate', currentTime);
}, },
/**
* 监听全屏变化
*/
handleFullscreenChange() {
console.log("handleFullscreenChange gx this.isFullScreen()",this.isFullScreen())
console.log("handleFullscreenChange gx this.isFullscreen",this.isFullscreen)
if(this.isFullscreen){
this.isFullscreen = !!document.fullscreenElement;
if (!this.isFullscreen) {
// 退出全屏后的逻辑(如暂停视频、更新 UI 等)
console.log('ESC 已退出全屏 handleFullscreenChange',this.isFullscreen);
this.$emit('onFullscreen',false);//全屏
}
}
}
}, },
watch: { watch: {
currentVolume: function () { currentVolume: function () {

View File

@@ -92,7 +92,7 @@ export default {
this.$emit("updateProgress", current); this.$emit("updateProgress", current);
// } // }
}, },
move(e) { move(e) {
if (this.is_mousedown_progress) { if (this.is_mousedown_progress) {
@@ -124,7 +124,7 @@ export default {
// 禁止拖动 // 禁止拖动
if(!this.isDrag && time && arr[this.blobId] < current) return; if(!this.isDrag && time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current); this.$emit("updateProgress", current);
} }
}, },
}, },
@@ -176,4 +176,4 @@ export default {
.progress-bar:hover .progress-current::after { .progress-bar:hover .progress-current::after {
opacity: 1; opacity: 1;
} }
</style> </style>

View File

@@ -2,7 +2,7 @@
<div class="box" :class="{ incl: url.includes('projectdetails') }"> <div class="box" :class="{ incl: url.includes('projectdetails') }">
<portal-header style="background: #387DF7;" :hideSearch="true" textColor="#ffffff"></portal-header> <portal-header style="background: #387DF7;" :hideSearch="true" textColor="#ffffff"></portal-header>
<iframe :src="url" style="width: 100%;height: 100%;" frameborder="0" ref="iframe"></iframe> <iframe :src="url" style="width: 100%;height: 100%;" frameborder="0" ref="iframe"></iframe>
<portal-footer></portal-footer> <portal-footer v-if="isShowFooter"></portal-footer>
</div> </div>
</template> </template>
<script> <script>
@@ -16,7 +16,8 @@ import portalFooter from "@/components/PortalFooter.vue";
data(){ data(){
return { return {
url: "", url: "",
boeUrl:process.env.VUE_APP_BOE_WEB_URL boeUrl:process.env.VUE_APP_BOE_WEB_URL,
isShowFooter:true
} }
}, },
mounted() { mounted() {
@@ -24,6 +25,10 @@ import portalFooter from "@/components/PortalFooter.vue";
let to = this.$route.query.to;//跳转的地址,以 /开头的地址 let to = this.$route.query.to;//跳转的地址,以 /开头的地址
let urlPre=window.location.protocol+'//'+window.location.host; let urlPre=window.location.protocol+'//'+window.location.host;
this.url=urlPre+to this.url=urlPre+to
if(to.includes('growthList')){
this.isShowFooter = false
}
if(params){ if(params){
this.url=this.url+'?'+params; this.url=this.url+'?'+params;
} }

View File

@@ -1,3 +1,4 @@
<!--
<template> <template>
<div class="login" :style="`background: url(${webBaseUrl}/temp/background.jpg) no-repeat`"> <div class="login" :style="`background: url(${webBaseUrl}/temp/background.jpg) no-repeat`">
<el-form :model="form" ref="form" :rules="rules"> <el-form :model="form" ref="form" :rules="rules">
@@ -24,7 +25,7 @@
<el-form-item> <el-form-item>
<section> <section>
<el-checkbox v-model="rememberMe">记住密码</el-checkbox> <el-checkbox v-model="rememberMe">记住密码</el-checkbox>
<!-- <span>忘记密码</span> --> &lt;!&ndash; <span>忘记密码</span> &ndash;&gt;
</section> </section>
</el-form-item> </el-form-item>
<el-form-item><el-button type="primary" @click="loginSubmit">点击登录</el-button></el-form-item> <el-form-item><el-button type="primary" @click="loginSubmit">点击登录</el-button></el-form-item>
@@ -194,3 +195,4 @@
} }
} }
</style> </style>
-->

View File

@@ -52,7 +52,7 @@
<el-table-column label="操作"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button-group> <el-button-group>
<el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''" @click="suggest(scope.row)" icon="el-icon-medal">榜单推荐</el-button> <el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''||scope.row.recommendRank === null" @click="suggest(scope.row)" icon="el-icon-medal">榜单推荐</el-button>
<!-- <el-button type="text" @click="shareItem(scope.row)" icon="el-icon-share" style="margin:0 5px">推荐</el-button> --> <!-- <el-button type="text" @click="shareItem(scope.row)" icon="el-icon-share" style="margin:0 5px">推荐</el-button> -->
<el-button style="margin:0 5px" v-if="!scope.row.isTop && scope.row.confidentialityLevel == '内部'" type="text" <el-button style="margin:0 5px" v-if="!scope.row.isTop && scope.row.confidentialityLevel == '内部'" type="text"
@click="setTop(scope.row)" icon="el-icon-top">置顶</el-button> @click="setTop(scope.row)" icon="el-icon-top">置顶</el-button>

View File

@@ -195,7 +195,15 @@
</template> </template>
</el-dialog> </el-dialog>
<!--课程管理--> <!--课程管理-->
<el-dialog custom-class="g-dialog" title="课程学习管理" width="900px" :visible.sync="manageStudy.dlgShow" :close-on-click-modal="false"> <el-dialog
custom-class="g-dialog"
title="课程学习管理"
width="900px"
height="900px"
:visible.sync="manageStudy.dlgShow"
:close-on-click-modal="false"
>
<manager :manageStudyData="manageStudyData" :isShowDialog="manageStudy.dlgShow"></manager> <manager :manageStudyData="manageStudyData" :isShowDialog="manageStudy.dlgShow"></manager>
<template #footer> <template #footer>
<el-button @click="manageStudy.dlgShow = false">关闭</el-button> <el-button @click="manageStudy.dlgShow = false">关闭</el-button>
@@ -668,8 +676,10 @@ export default {
} }
apiCourse.pageList(this.params).then(rs=>{ apiCourse.pageList(this.params).then(rs=>{
if(rs.status==200){ if(rs.status==200){
this.pageData = rs.result.list; this.pageData = rs.result.list ? rs.result.list : [];
// this.pageData = rs.result.list;
this.page.count = rs.result.count; this.page.count = rs.result.count;
this.page.pageSize = rs.result.pageSize;
}else{ }else{
return this.$message.error(rs.message); return this.$message.error(rs.message);
} }
@@ -939,4 +949,8 @@ export default {
} }
} }
} }
.el-dialog__body {
overflow: hidden;
}
</style> </style>

View File

@@ -1,206 +1,206 @@
<template> <template>
<div style="padding: 12px 32px 10px 12px;"> <div style="padding: 12px 32px 10px 12px;">
<div style="display: flex;justify-content: flex-start;"> <div style="display: flex;justify-content: flex-start;">
<div><el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input></div> <div><el-input v-model="keyword" placeholder="输入课程名称搜索" clearable></el-input></div>
<div style="padding-left: 10px;"><el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button></div> <div style="padding-left: 10px;"><el-button @click="recordList()" type="primary" icon="el-icon-search">搜索</el-button></div>
<div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary" >重置</el-button></div> <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" @click="keyword = ''" type="primary" >重置</el-button></div>
<div style="padding: 0px 5px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> <div style="padding: 0px 5px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div>
<div style="padding: 0px 5px;"><el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>导出学员信息</el-button></div> <div style="padding: 0px 5px;"><el-button type="primary" @click="exportStudentOfTearcher()" icon="el-icon-search" size="small" round>导出学员信息</el-button></div>
</div> </div>
<div class="Export"> <div class="Export">
<!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> --> <!-- <div style="padding-left: 10px;"><el-button type="primary" @click="exportFile()" icon="el-icon-search" size="small" round>导出</el-button></div> -->
<!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> --> <!-- <div style="padding: 0px 5px;"><el-button icon="el-icon-refresh-right" type="primary" size="small" round>导出学员信息</el-button></div> -->
</div> </div>
<div style="margin-top:20px;"> <div style="margin-top:20px;">
<el-table :data="pageData" border stripe> <el-table :data="pageData" border stripe>
<el-table-column <el-table-column
label="课程时间" label="课程时间"
prop="courseTime" prop="courseTime"
width="200px"> width="200px">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="课程名称" label="课程名称"
prop="courseName" prop="courseName"
width="200px"> width="200px">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="开课场地" label="开课场地"
prop="address" prop="address"
width="240px"> width="240px">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="所属课程" label="所属课程"
prop="parentCourse" prop="parentCourse"
width="120px"> width="120px">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
label="所属项目" label="所属项目"
prop="parentProject" prop="parentProject"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="所属路径" label="所属路径"
prop="parentRoute" prop="parentRoute"
width="200px" width="200px"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="学习总人数" label="学习总人数"
prop="studentNumber" prop="studentNumber"
width="100px" width="100px"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="时长(分钟)" label="时长(分钟)"
width="100px" width="100px"
prop="period" prop="period"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="评分" label="评分"
width="100px" width="100px"
prop="score" prop="score"
></el-table-column> ></el-table-column>
<el-table-column <el-table-column
label="操作" label="操作"
align="center" align="center"
width="150px" width="150px"
prop="cz" prop="cz"
fixed="right" fixed="right"
> >
<template v-slot="scope"> <template v-slot="scope">
<el-button type="text" @click="exportStudentOfCourse(scope.row.courseId)" size="small">导出学员信息</el-button> <el-button type="text" @click="exportStudentOfCourse(scope.row.courseId)" size="small">导出学员信息</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div style="text-align: center; margin-top:57px"> <div style="text-align: center; margin-top:57px">
<el-pagination <el-pagination
background background
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="pageInfo.page" :current-page="pageInfo.page"
:page-sizes="[10, 20, 30, 40]" :page-sizes="[10, 20, 30, 40]"
:page-size="pageInfo.pageSize" :page-size="pageInfo.pageSize"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="pageInfo.total" :total="pageInfo.total"
></el-pagination> ></el-pagination>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import apiCourse from '../../api/boe/courseRecord.js'; import apiCourse from '../../api/boe/courseRecord.js';
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
export default { export default {
data(){ data(){
return { return {
pageData:[], pageData:[],
keyword:'', keyword:'',
pageInfo:{}, pageInfo:{},
} }
}, },
mounted() { mounted() {
this.recordList(1); this.recordList(1);
}, },
computed: { computed: {
...mapGetters(['userInfo']) ...mapGetters(['userInfo'])
}, },
methods: { methods: {
// 导出所有记录 // 导出所有记录
exportFile(){ exportFile(){
let req = { let req = {
userId: this.userInfo.sysId userId: this.userInfo.sysId
// userId:"70F80F4E-34BA-10AB-894A-8FA812B19637" // userId:"70F80F4E-34BA-10AB-894A-8FA812B19637"
} }
apiCourse.courseRecordExport(req).then(res=>{ apiCourse.courseRecordExport(req).then(res=>{
const link = document.createElement('a');// 创建a标签 const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型 let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none"; link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls"); link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link); document.body.appendChild(link);
link.click(); link.click();
document.body.removeChild(link); document.body.removeChild(link);
}) })
}, },
// 导出课程下的学员信息 // 导出课程下的学员信息
exportStudentOfCourse(courseId){ exportStudentOfCourse(courseId){
let userId = this.userInfo.sysId; let userId = this.userInfo.sysId;
apiCourse.exportStudentOfCourse(userId,courseId).then(res=>{ apiCourse.exportStudentOfCourse(userId,courseId).then(res=>{
const link = document.createElement('a');// 创建a标签 const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型 let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none"; link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls"); link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link); document.body.appendChild(link);
link.click(); link.click();
document.body.removeChild(link); document.body.removeChild(link);
}) })
}, },
// 导出教师下的所有授课记录下的学员信息 // 导出教师下的所有授课记录下的学员信息
exportStudentOfTearcher(){ exportStudentOfTearcher(){
let userId = this.userInfo.sysId; let userId = this.userInfo.sysId;
// let userId = '5D36C207-64F4-C512-312D-C9598257695C'; // let userId = '5D36C207-64F4-C512-312D-C9598257695C';
apiCourse.exportStudentOfTearcher(userId).then(res=>{ apiCourse.exportStudentOfTearcher(userId).then(res=>{
const link = document.createElement('a');// 创建a标签 const link = document.createElement('a');// 创建a标签
let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型 let blob = new Blob([res.data],{type: 'application/vnd.ms-excel'}); // 设置文件类型
link.style.display = "none"; link.style.display = "none";
link.href = URL.createObjectURL(blob); // 创建URL link.href = URL.createObjectURL(blob); // 创建URL
link.setAttribute("download", "授课记录.xls"); link.setAttribute("download", "授课记录.xls");
document.body.appendChild(link); document.body.appendChild(link);
link.click(); link.click();
document.body.removeChild(link); document.body.removeChild(link);
}) })
}, },
recordList(pageIndex){ recordList(pageIndex){
let req = { let req = {
//     userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531", //     userId:"6B049FAF-C314-7CCF-0D28-0D23F4C42531",
userId: this.userInfo.sysId, userId: this.userInfo.sysId,
keyword:this.keyword, keyword:this.keyword,
    page:pageIndex,     page:pageIndex,
    pageSize:10     pageSize:10
} }
apiCourse.courseRecordList(req).then(res=>{ apiCourse.courseRecordList(req).then(res=>{
if(res.status == 200) { if(res.status == 200) {
this.pageData = res.result.list; this.pageData = res.result.list;
this.pageInfo = res.result.pageInfo; this.pageInfo = res.result.pageInfo;
} else { } else {
this.$message({ this.$message({
type: 'error', type: 'error',
message: res.message message: res.message
}); });
} }
}) })
}, },
// 每页显示的条数事件 // 每页显示的条数事件
handleSizeChange(val){ handleSizeChange(val){
this.pageInfo.pageSize = val; this.pageInfo.pageSize = val;
this.recordList(1); this.recordList(1);
}, },
// 显示制定页的数据 // 显示制定页的数据
handleCurrentChange(val){ handleCurrentChange(val){
this.pageInfo.pageIndex = val; this.pageInfo.pageIndex = val;
this.recordList(this.pageInfo.pageIndex); this.recordList(this.pageInfo.pageIndex);
}, },
}, },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.Export{ .Export{
display: flex; display: flex;
padding-top: 10px; padding-top: 10px;
} }
</style> </style>

View File

@@ -4,18 +4,6 @@
<div class="navbar"> <div class="navbar">
<div style="display: flex; flex: 1"> <div style="display: flex; flex: 1">
<div class="nav-title">我的专业力必修</div> <div class="nav-title">我的专业力必修</div>
<div class="nav-total">
<div class="total-num">{{ totalData.total }}</div>
<div class="total-text">总任务数</div>
</div>
<div class="nav-total">
<div class="total-num">{{ totalData.completed }}</div>
<div class="total-text">已完成数量</div>
</div>
<div class="nav-total">
<div class="total-num">{{ totalData.unfinished }}</div>
<div class="total-text">未完成数量</div>
</div>
</div> </div>
</div> </div>
@@ -45,92 +33,108 @@
<div class="growth-btn" @click="jumpRouter(item)">去学习</div> <div class="growth-btn" @click="jumpRouter(item)">去学习</div>
</div> </div>
</div> </div>
<div class="tip-title">说明</div> <template v-if="item.description">
<div class="tip-content"> <div class="tip-title">说明</div>
{{ item.description || "暂无说明" }} <div class="tip-content">
</div> {{ item.description || "暂无说明" }}
</div>
</template>
<div class="progress-title">学习进度</div> <div class="progress-title">学习进度</div>
<div class="progress-content"> <div class="progress-content">
<div class="f-j-b" style="margin-bottom: 10px"> <div class="f-j-b" style="margin-bottom: 10px">
<div class="f-a-c"> <div class="f-a-c">
<div style="font-weight: 700; font-size: 16px; color: #333333"> <div style="font-size: 16px; color: #333333">必修进度</div>
必修进度 <div style="font-size: 18px; color: #999999; margin-left: 12px">
</div>
<div style="font-size: 20px; color: #999999; margin-left: 12px">
{{ item.requiredTaskCompletedNum }}/{{ item.requiredTaskNum }} {{ item.requiredTaskCompletedNum }}/{{ item.requiredTaskNum }}
</div> </div>
</div> </div>
<div style="font-weight: bold; font-size: 20px; color: #0077ec"> <div style="font-size: 18px; color: #0077ec">
{{ requiredTaskCompletionRate(item) }}% {{ requiredTaskCompletionRate(item) }}%
</div> </div>
</div> </div>
<el-progress <el-progress
:stroke-width="8" :stroke-width="6"
:show-text="false" :show-text="false"
:percentage="requiredTaskCompletionRate(item)" :percentage="requiredTaskCompletionRate(item)"
color="#0077EC"
></el-progress> ></el-progress>
</div> </div>
<div class="progress-content"> <template v-if="item.electiveTaskNum !== 0">
<div class="f-j-b" style="margin-bottom: 10px"> <div class="progress-content">
<div class="f-a-c"> <div class="f-j-b" style="margin-bottom: 10px">
<div style="font-weight: 700; font-size: 16px; color: #333333"> <div class="f-a-c">
选修进度 <div style="font-size: 16px; color: #333333">选修进度</div>
<div style="font-size: 18px; color: #999999; margin-left: 12px">
{{ item.electiveTaskCompletedNum }}/{{ item.electiveTaskNum }}
</div>
<el-tooltip
class="item"
effect="light"
:content="`还需完成${item.electivePoorNum}个选修任务`"
placement="top-start"
>
<i class="el-icon-question"></i>
</el-tooltip>
</div> </div>
<div style="font-size: 20px; color: #999999; margin-left: 12px"> <div style="font-size: 18px; color: #0077ec">
{{ item.electiveTaskCompletedNum }}/{{ item.electiveTaskNum }} {{ electiveTaskCompletionRate(item) }}%
</div> </div>
</div> </div>
<div style="font-weight: bold; font-size: 20px; color: #0077ec"> <el-progress
{{ electiveTaskCompletionRate(item) }}% :stroke-width="6"
</div> :show-text="false"
color="#0077EC"
:percentage="electiveTaskCompletionRate(item)"
></el-progress>
</div> </div>
<el-progress </template>
:stroke-width="8"
:show-text="false"
:percentage="electiveTaskCompletionRate(item)"
></el-progress>
</div>
<div class="progress-content"> <div class="progress-content">
<div class="f-j-b" style="margin-bottom: 10px"> <div class="f-j-b" style="margin-bottom: 10px">
<div class="f-a-c"> <div class="f-a-c">
<div style="font-weight: 700; font-size: 16px; color: #333333"> <div style="font-size: 16px; color: #333333">总进度</div>
总进度 <div style="font-size: 18px; color: #999999; margin-left: 12px">
</div>
<div style="font-size: 20px; color: #999999; margin-left: 12px">
{{ item.totalTaskCompletedNum }}/{{ item.totalTaskNum }} {{ item.totalTaskCompletedNum }}/{{ item.totalTaskNum }}
</div> </div>
</div> </div>
<div style="font-weight: bold; font-size: 20px; color: #0077ec"> <div style="font-size: 18px; color: #0077ec">
{{ totalTaskCompletionRate(item) }}% {{ totalTaskCompletionRate(item) }}%
</div> </div>
</div> </div>
<el-progress <el-progress
:stroke-width="8" :stroke-width="6"
:show-text="false" :show-text="false"
color="#0077EC"
:percentage="totalTaskCompletionRate(item)" :percentage="totalTaskCompletionRate(item)"
></el-progress> ></el-progress>
</div> </div>
</div> <div class="growth-bg-icon">
</div> <img src="@/assets/images/growth/growth-bg-icon.png" />
<template v-if="!list || list.length < 2"></template>
<div class="growth-right">
<div class="title">专业力必修</div>
<div
:key="item.id"
class="item-growth"
:class="activeItem.id == item.id ? 'active' : ''"
v-for="item of list"
>
<div class="icon"></div>
<div @click="handlerAnchor(item)">
{{ item.growthName }}
</div> </div>
</div> </div>
<template v-if="!list.length">
<div class="empty">
<el-empty :image-size="200"></el-empty>
</div>
</template>
</div> </div>
<template v-if="!list.length"> <!-- <template v-if="!list || list.length < 2">
<el-empty :image-size="200"></el-empty> <div class="growth-right">
</template> <div class="title">专业力必修</div>
<div
:key="item.id"
class="item-growth"
:class="activeItem.id == item.id ? 'active' : ''"
v-for="item of list"
>
<div class="icon"></div>
<div @click="handlerAnchor(item)">
{{ item.growthName }}
</div>
</div>
</div>
</template> -->
</div> </div>
</template> </template>
<script> <script>
@@ -166,6 +170,8 @@ export default {
num = num * 100; num = num * 100;
num = num.toFixed(0); num = num.toFixed(0);
return Number(num); return Number(num);
} else if (item.electiveTaskNum == 0) {
return 100;
} else { } else {
return 0; return 0;
} }
@@ -237,6 +243,18 @@ export default {
justify-content: center; justify-content: center;
} }
.growth { .growth {
.empty {
height: 600px;
display: flex;
justify-content: center;
align-items: center;
background-color: #ffffff;
}
.el-icon-question {
color: #387df7;
font-size: 16px;
margin-left: 5px;
}
.handler-add-padding { .handler-add-padding {
padding: 100px 38px 66px 40px !important; padding: 100px 38px 66px 40px !important;
margin-top: -80px; margin-top: -80px;
@@ -250,8 +268,14 @@ export default {
background: #ffffff; background: #ffffff;
padding: 30px 38px 66px 40px; padding: 30px 38px 66px 40px;
margin-bottom: 35px; margin-bottom: 35px;
position: relative;
.growth-bg-icon {
position: absolute;
right: 92px;
bottom: 0;
}
.progress-title { .progress-title {
font-weight: 700; // font-weight: 700;
font-size: 18px; font-size: 18px;
color: #000000; color: #000000;
margin: 28px 0 20px 0; margin: 28px 0 20px 0;
@@ -260,16 +284,15 @@ export default {
margin-bottom: 28px; margin-bottom: 28px;
} }
.tip-title { .tip-title {
font-weight: 700; // font-weight: 700;
font-size: 18px; font-size: 18px;
color: #000000; color: #000000;
margin: 30px 0 10px 0; margin: 30px 0 10px 0;
} }
.tip-content { .tip-content {
font-weight: 700; font-size: 16px;
font-size: 14px;
color: #333333; color: #333333;
line-height: 40px; line-height: 30px;
} }
.growth-nav { .growth-nav {
display: flex; display: flex;
@@ -279,12 +302,12 @@ export default {
border-bottom: 2px solid #f5f5f5; border-bottom: 2px solid #f5f5f5;
} }
.growth-name { .growth-name {
font-weight: 500; font-weight: bold;
font-size: 18px; font-size: 18px;
color: #0071ed; color: #0071ed;
} }
.growth-state { .growth-state {
font-size: 14px; font-size: 15px;
margin-right: 18px; margin-right: 18px;
} }
.growth-btn { .growth-btn {
@@ -303,14 +326,15 @@ export default {
.navbar { .navbar {
display: flex; display: flex;
align-items: center; align-items: center;
height: 130px; height: 90px;
padding-left: 40px; padding-left: 40px;
margin-bottom: 10px; margin-bottom: 10px;
color: #ffffff; color: #ffffff;
background-image: url(../../assets/images/growth/growth-bg.png); background-image: url(../../assets/images/growth/growth-bg.png);
background-size: 100% 100%;
.nav-title { .nav-title {
font-weight: 700; font-weight: 700;
font-size: 22px; font-size: 18px;
margin-right: 10%; margin-right: 10%;
} }
.nav-total { .nav-total {

View File

@@ -22,7 +22,7 @@
{img:'01',url:'1265897142383042560'}, {img:'01',url:'1265897142383042560'},
{img:'02',url:'1265697724606210048'}, {img:'02',url:'1265697724606210048'},
{img:'003',url:'1280185851054231552'}, {img:'003',url:'1280185851054231552'},
{img:'4',url:''}, {img:'04',url:'1321778585966247936'},
], ],
} }
}, },
@@ -97,7 +97,7 @@
padding: 28px; padding: 28px;
padding-top: 62px; padding-top: 62px;
margin-bottom: 59px; margin-bottom: 59px;
.img { .img {
width: 100%; // 图片宽度占满item宽度 width: 100%; // 图片宽度占满item宽度
height: auto; // 自动调整高度 height: auto; // 自动调整高度
@@ -132,7 +132,7 @@
padding: 14px; padding: 14px;
padding-top: 26px; padding-top: 26px;
margin-bottom: 30px; margin-bottom: 30px;
.img { .img {
width: 100%; // 图片宽度占满item宽度 width: 100%; // 图片宽度占满item宽度
height: auto; // 自动调整高度 height: auto; // 自动调整高度
@@ -176,4 +176,4 @@
} }
} }
} }
</style> </style>

View File

@@ -185,11 +185,11 @@
<div class="back_num" v-if="numIsFalse"> <div class="back_num" v-if="numIsFalse">
<div class="search_div_num"> <div class="search_div_num">
当前已检索 <span style="color:#FF4040 ;"> 当前已检索 <span style="color:#FF4040 ;">
{{ caseList.count }}</span> 条数据 {{ this.caseList.count }}</span> 条数据
</div> </div>
</div> </div>
<div class="data-content"> <div class="data-content">
<div v-for="item in caseList.list" :key="isTimeData?item.browsingHistoryId : item.id" class="case-list"> <div v-for="item in this.caseList.list" :key="isTimeData?item.browsingHistoryId : item.id" class="case-list">
<div class="case-info"> <div class="case-info">
<div class="case-info-cont"> <div class="case-info-cont">
<!-- <router-link :to="'/case/detail?id=' + item.id"> --> <!-- <router-link :to="'/case/detail?id=' + item.id"> -->
@@ -270,7 +270,7 @@
</div> </div>
</div> </div>
</div> </div>
<div v-if="caseList.showPagCount > queryCondition.pageSize"> <div v-if="this.caseList.showPagCount > queryCondition.pageSize">
<pagination :size="queryCondition.pageSize" :total="caseList.count" :page="queryCondition.pageIndex" <pagination :size="queryCondition.pageSize" :total="caseList.count" :page="queryCondition.pageIndex"
layout="total, prev, pager, next, jumper" @change-page="currentChange"></pagination> layout="total, prev, pager, next, jumper" @change-page="currentChange"></pagination>
</div> </div>
@@ -279,7 +279,7 @@
<!-- <span class="pag-text" @click="loadMore()" v-if="moreState == 1">加载更多</span> <!-- <span class="pag-text" @click="loadMore()" v-if="moreState == 1">加载更多</span>
<span class="pag-text-msg" v-else-if="moreState == 2">数据加载中</span> <span class="pag-text-msg" v-else-if="moreState == 2">数据加载中</span>
<span class="pag-text-msg" v-else-if="moreState == 3">没有更多数据了</span> --> <span class="pag-text-msg" v-else-if="moreState == 3">没有更多数据了</span> -->
<span class="notcoures" v-if="caseList.list.length == 0"> <span class="notcoures" v-if="this.caseList.list.length == 0">
<img :src="`${webBaseUrl}/images/nocase.png`" alt=""> <img :src="`${webBaseUrl}/images/nocase.png`" alt="">
<h5>暂无案例请优先学习其它案例吧</h5> <h5>暂无案例请优先学习其它案例吧</h5>
</span> </span>
@@ -555,7 +555,7 @@ export default {
name: '', name: '',
years: [], years: [],
// 随机 // 随机
notInIds: [],//重复的id // notInIds: [],//重复的id
orderField: "id", orderField: "id",
orderAsc: false,//排序 orderAsc: false,//排序
sysType1:'', sysType1:'',
@@ -1507,7 +1507,7 @@ export default {
}; };
}); });
res.result.list.forEach(item=>{ res.result.list.forEach(item=>{
item.viewRankTags = item.viewRankTags.slice(0,2) item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
}) })
this.caseList.list = res.result.list this.caseList.list = res.result.list
this.getCaseUserData(res.result.list); this.getCaseUserData(res.result.list);
@@ -1562,7 +1562,7 @@ export default {
}; };
}); });
res.result.list.forEach(item=>{ res.result.list.forEach(item=>{
item.viewRankTags = item.viewRankTags.slice(0,2) item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
}) })
this.caseList.list = res.result.list this.caseList.list = res.result.list
this.getCaseUserData(res.result.list); this.getCaseUserData(res.result.list);
@@ -1599,12 +1599,17 @@ export default {
} else { } else {
this.moreState = 3; this.moreState = 3;
} }
// console.log(res?.result?.list ,'有没有数据'); if(res.result.list.length ===0){
this.moreState = 3;
this.isSeach = false;
}
console.log(res?.result?.list ,'有没有数据1');
res.result.list.forEach(item=>{ res.result.list.forEach(item=>{
item.viewRankTags = item.viewRankTags.slice(0,2) item.viewRankTags = item.viewRankTags?.slice(0,2)||[]
}) })
console.log(res?.result?.list ,'有没有数据2');
this.caseList.list = res.result.list this.caseList.list = res.result.list
this.getCaseUserData(res.result.list); // this.getCaseUserData(res.result.list);
// 给所有的赋值 // 给所有的赋值
this.caseList.count = res.result.count; this.caseList.count = res.result.count;
this.caseList.showPagCount = res.result.count; this.caseList.showPagCount = res.result.count;

View File

@@ -253,8 +253,8 @@ export default {
if(res.status==200){ if(res.status==200){
let localCourseIds=[];//本地在线课程的id集合 let localCourseIds=[];//本地在线课程的id集合
res.result.list.forEach(item=>{ res.result.list.forEach(item=>{
if(item.courseImage.startsWith('/upload')){ if(item.courseImage?.startsWith('/upload')){
item.courseImage=$this.fileUrl+item.courseImage.substring(7) item.courseImage=$this.fileUrl+item.courseImage?.substring(7)
} }
if(item.source==2){ if(item.source==2){
localCourseIds.push(item.id); localCourseIds.push(item.id);

View File

@@ -167,7 +167,6 @@
</div> </div>
<!-- 课程单元 --> <!-- 课程单元 -->
<div class="course-units" v-if="tab == 1"> <div class="course-units" v-if="tab == 1">
<div :style="`height: ${controlHeight}px;overflow-y: auto;`"> <div :style="`height: ${controlHeight}px;overflow-y: auto;`">
<div class="catalog" v-if="courseInfo.type == 20"> <div class="catalog" v-if="courseInfo.type == 20">
<div v-for="(item, index) in catalogTree" :key="index" :name="index"> <div v-for="(item, index) in catalogTree" :key="index" :name="index">
@@ -292,7 +291,8 @@
<!-- <span style="font-size: 12px; color:#666666 ;">( {{cutOrgNamePath(item.authorInfo.orgInfo)}} )</span> --> <!-- <span style="font-size: 12px; color:#666666 ;">( {{cutOrgNamePath(item.authorInfo.orgInfo)}} )</span> -->
</div> </div>
<!-- <div class="teacher-remark" v-html="item.authorInfo.sign"></div> --> <!-- <div class="teacher-remark" v-html="item.authorInfo.sign"></div> -->
<div class="teacher-remark">{{cutOrgNamePath(item.authorInfo.orgInfo)}}</div> <div v-if="item.teacherType === 1 " class="teacher-remark">{{cutOrgNamePath(item.authorInfo.orgInfo)}}</div>
<div v-else>{{item.supplier}}</div>
</div> </div>
<div style="padding-top:15px;width:70px;"> <div style="padding-top:15px;width:70px;">
<followButton v-if="item.teacherName!=='BOE教师'" :auto="true" size="small" :aid="item.teacherId"></followButton> <followButton v-if="item.teacherName!=='BOE教师'" :auto="true" size="small" :aid="item.teacherId"></followButton>
@@ -755,7 +755,7 @@
if (this.contentData.status < 2) { if (this.contentData.status < 2) {
// this.contentData.status = 2; //进行中 // this.contentData.status = 2; //进行中
if(r.contentType != 61&&r.contentType != 20 && r.contentType != 10){ if(r.contentType != 61&&r.contentType != 20 && r.contentType != 10){
setTimeout(() => { setTimeout(() => {
this.isContentTypeTwo = r.contentType this.isContentTypeTwo = r.contentType
$this.isShowTime() $this.isShowTime()
}, 2000); }, 2000);
@@ -817,7 +817,7 @@
//console.log(h,$this.controlHeight,'$this.controlHeight'); //console.log(h,$this.controlHeight,'$this.controlHeight');
}) })
//console.log('this.contentData11:',this.contentData,this.curriculumData) //console.log('this.contentData11:',this.contentData,this.curriculumData)
// 视频设置禁用处理逻辑,如果用户已全部观看完该视频则设置为能全部拖动的逻辑把isDrag设置为true即可,同时删除本地存储的数据 // 视频设置禁用处理逻辑,如果用户已全部观看完该视频则设置为能全部拖动的逻辑把isDrag设置为true即可,同时删除本地存储的数据
if(this.contentData.progressVideo ===1){ if(this.contentData.progressVideo ===1){
@@ -1140,6 +1140,8 @@
// } // }
// } // }
this.playerBoxShow = false; this.playerBoxShow = false;
// this.onPlayerPlayFullscreen()
// this.$watermark.set(this.userInfo.name + this.userInfo.loginName);
let $this = this; let $this = this;
//这里有些不准备,如果文件未能加载,这个事件就是错误的 //这里有些不准备,如果文件未能加载,这个事件就是错误的
this.isAppendTime=true; this.isAppendTime=true;
@@ -1157,6 +1159,7 @@
// } // }
// } // }
}, },
onFullscreen(full) { onFullscreen(full) {
let divId = 'videowatermark'; let divId = 'videowatermark';
var div = document.getElementById('myVideoPlayer') var div = document.getElementById('myVideoPlayer')
@@ -1176,9 +1179,12 @@
"position:absolute;pointer-events: none; width: 100%;height: 100%;top:0;left:0;bottom: 0;right: 0; display: flex;justify-content: center;flex-wrap: wrap;overflow: hidden; opacity:0.3;padding-top:10px"; "position:absolute;pointer-events: none; width: 100%;height: 100%;top:0;left:0;bottom: 0;right: 0; display: flex;justify-content: center;flex-wrap: wrap;overflow: hidden; opacity:0.3;padding-top:10px";
div.appendChild(div3); div.appendChild(div3);
} else { } else {
console.log("去除水印 ---- gx ----");
var markDiv = div.querySelector("#" + divId); var markDiv = div.querySelector("#" + divId);
console.log("去除水印 ---- gx markDiv ----",markDiv);
if (markDiv) { if (markDiv) {
div.removeChild(markDiv); console.log("执行去除水印 ---- gx markDiv ----",markDiv);
div.removeChild(markDiv);
} }
} }
}, },
@@ -1546,7 +1552,7 @@
} }
} }
}, },
progress(val) { progress(val) {
const progressValue = parseFloat(val) * 100; const progressValue = parseFloat(val) * 100;
this.sendEventProgress = Number(progressValue.toFixed(2)); this.sendEventProgress = Number(progressValue.toFixed(2));
}, },

View File

@@ -124,11 +124,17 @@ module.exports = {
// 114.115.162.187 测试环境 // 114.115.162.187 测试环境
// 192.168.0.107 晋宇 // 192.168.0.107 晋宇
proxy: { proxy: {
// "/professional": {
// // target: 'https://u-pre.boe.com',
// // target: 'http://192.168.86.195:32002',
// target: 'http://192.168.68.211:32002',
// changeOrigin: true,
// },
"/growth": { "/growth": {
target: 'https://u-pre.boe.com', target: 'https://u-pre.boe.com',
// target: 'http://192.168.86.195:32002',
changeOrigin: true, changeOrigin: true,
}, },
'/manageApi': { '/manageApi': {
// 目标代理服务器地址 // 目标代理服务器地址
target: 'https://u-pre.boe.com', target: 'https://u-pre.boe.com',