Merge remote-tracking branch 'origin/20250708_add_wzy' into 20250708_add_wzy

This commit is contained in:
zhengsongbo
2025-07-21 18:32:15 +08:00
7 changed files with 96 additions and 69 deletions

View File

@@ -73,59 +73,51 @@ export default {
},
methods: {
down(e) {
// if(this.isDrag) {
this.$emit("getMouseDownStatus", true);
this.is_mousedown_progress = true;
// 获取完整进度条的clientXdom左上角
let init_clientX = this.dom_full.getBoundingClientRect().left;
// 计算调整后的当前进度条的长度
this.current_width_px = e.clientX - init_clientX;
// 设置当前的播放进度(同时作用于当前进度条的样式)
let current = (e.clientX - init_clientX) / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
//console.log('down arr:',this.isDrag,this.blobId,arr,arr[this.blobId],current)
// 禁止拖动
if(!this.isDrag && time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
// }
if (!this.isDrag) return;
this.$emit("getMouseDownStatus", true);
this.is_mousedown_progress = true;
// 获取完整进度条的clientXdom左上角
let init_clientX = this.dom_full.getBoundingClientRect().left;
// 计算调整后的当前进度条的长度
this.current_width_px = e.clientX - init_clientX;
// 设置当前的播放进度(同时作用于当前进度条的样式)
let current = (e.clientX - init_clientX) / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
// 禁止拖动
if(time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
},
move(e) {
if (this.is_mousedown_progress) {
let init_clientX = this.dom_full.getBoundingClientRect().left;
this.current_width_px = e.clientX - init_clientX;
let current = (e.clientX - init_clientX) / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
//console.log('move arr:',this.isDrag,this.blobId,arr,arr[this.blobId],current)
// 禁止拖动
if(!this.isDrag && time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
}
if (!this.isDrag || !this.is_mousedown_progress) return;
let init_clientX = this.dom_full.getBoundingClientRect().left;
this.current_width_px = e.clientX - init_clientX;
let current = (e.clientX - init_clientX) / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
// 禁止拖动
if(time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
},
up() {
if (this.is_mousedown_progress) {
// 标记鼠标不处于按下的状态了
this.is_mousedown_progress = false;
// 松开鼠标后即调整进度条后此时的进度0-1
let current = this.current_width_px / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
//console.log('up arr:',this.isDrag,this.blobId,arr,arr[this.blobId],current)
this.$emit("getMouseDownStatus", false);
// 禁止拖动
if(!this.isDrag && time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
}
if (!this.isDrag || !this.is_mousedown_progress) return;
// 标记鼠标不处于按下的状态了
this.is_mousedown_progress = false;
// 松开鼠标后即调整进度条后此时的进度0-1
let current = this.current_width_px / this.dom_full.clientWidth;
if(current>1) current = 1;
if(current<0) current = 0;
var time = localStorage.getItem('videoProgressData');
var arr = time&&JSON.parse(time) || {}
this.$emit("getMouseDownStatus", false);
// 禁止拖动
if(time && arr[this.blobId] < current) return;
this.$emit("updateProgress", current);
},
},
};

View File

@@ -196,7 +196,7 @@
<div @click="toCaseDetail(item.id, item.refId)" style="cursor: pointer;">
<div v-if="isTime" class="case_text">
<span style="margin-right:28px">阅读了案例</span>
<span>{{ item.eventTime }}</span>
<span>{{ formatDateTime(item.eventTime) }}</span>
</div>
<div class="case-info-title">
<div class="case-titdiv">
@@ -664,6 +664,12 @@ export default {
return !this.speciData.some(item => item.fielclass);
}
},
formatDateTime(dateArray) {
if (!dateArray || dateArray.length !== 6) return '';
const [year, month, day, hour, minute, second] = dateArray;
const pad = (num) => num.toString().padStart(2, '0');
return `${year}-${pad(month)}-${pad(day)} ${pad(hour)}:${pad(minute)}:${pad(second)}`;
},
beforeRouteLeave (to, from, next) {
const isScroll = 'caseDetail,caseCharts,caseExcellent'
if(!isScroll.includes(to.name)){

View File

@@ -95,7 +95,10 @@
<div v-if="coursewareInfo.content.contentType == 52">
<div class="hyper-link" v-if="conLink.openType==2">
<div class="hyper-link-row">课程内容是外部连接</div>
<div class="hyper-link-row">{{conLink.url}}</div>
<!-- <div class="hyper-link-row">{{conLink.url}}</div>-->
<div class="hyper-link-row">
<el-button @click="widthOpen(conLink.url)" type="primary" style="margin-left: 15px">点击前往</el-button>
</div>
</div>
<div v-if="conLink.openType==1">
<iframe :src="conLink.url" style="width: 100%;border:0px;min-height: 473px;border:0px" border="0" frameborder="0"></iframe>

View File

@@ -48,8 +48,8 @@
<div class="qa-info-summary portal-summary-text" :class="qa.images==''? 'two-line-ellipsis':'four-line-ellipsis'" @click="jumpDetail(qa)" v-html="$keywordActiveShow(qa.content,queryKeyWord)">
</div>
<div style="cursor: pointer; text-align: right;cursor: pointer;" v-if="qa.images!==''" @click="jumpDetail(qa)">
<img style="width: 156px;height: 105px;border-radius: 4px;margin-left: 18px;" :src="fileBaseUrl + qa.images" alt="">
<div style="cursor: pointer; text-align: right;cursor: pointer;" v-if="qa.images && qa.images!==''" @click="jumpDetail(qa)">
<img style="width: 156px;height: 105px;border-radius: 4px;margin-left: 18px;" :src="fileBaseUrl + qa.images" alt="图片貌似被外星人劫走了">
</div>
</div>

View File

@@ -349,6 +349,7 @@ export default {
this.$message.success('删除成功');
this.queryData.pageIndex = 1;
this.queryMessage(true);
this.$store.dispatch('refrashMsg');
} else {
this.$message.error('删除失败' + res.message);
}
@@ -366,6 +367,7 @@ export default {
this.$message.success('删除成功');
this.queryData.pageIndex = 1;
this.queryMessage(true);
this.$store.dispatch('refrashMsg');
} else {
this.$message.error('删除失败' + res.message);
}

View File

@@ -306,8 +306,8 @@ export default {
},
viewTopic(data) {
// window.open(this.webBaseUrl+'/qa/answer?id='+data.id, '_blank');
this.$router.push({path:'/qa/answer',query:{id:data.id}})
window.open(this.webBaseUrl+'/qa/answer?id='+data.id, '_blank');
// this.$router.push({path:'/qa/answer',query:{id:data.id}})
},
aduit(row) {
this.form={...row};

View File

@@ -96,7 +96,10 @@
<!-- <div class="hyper-link-row">外链地址: {{ conLink.url }}</div>-->
<!-- <button class="copy-button" @click="copyUrl(conLink.url)">复制外链</button>-->
<div class="hyper-link-url-container">
<span class="hyper-link-url" @click="copyUrl(conLink.url)" >外链地址: {{ conLink.url }}</span>
<!-- <span class="hyper-link-url" @click="copyUrl(conLink.url)" >外链地址: {{ conLink.url }}</span>-->
<div class="hyper-link-url">
<el-button @click="widthOpen(conLink.url)" type="primary" style="margin-left: 15px">点击前往</el-button>
</div>
</div>
</div>
<div v-if="conLink.openType == 1"><iframe :src="conLink.url"
@@ -164,13 +167,13 @@
<div class="course-control">
<div class="control-tab" v-if="contentList.length>0" >
<div v-if="contentList.length>1" @click="heartabone" :class="tab == 1 ? 'control-tab-active' : ' '">
<i class="el-icon-reading" style="margin-right:9px;margin-left:9px"></i>课程单元
<i class="el-icon-reading" style="margin-right:9px;margin-left:9px"></i>
</div>
<div @click="heartabtwo" :class="tab == 2 ? 'control-tab-active' : ' '">
<i class="el-icon-edit" style="margin-right:9px;margin-left:9px"></i>我的笔记
</div>
</div>
<!-- 课程单元 -->
<!-- -->
<div class="course-units" v-if="tab == 1">
<div :style="`height: ${controlHeight}px;overflow-y: auto;`">
<div class="catalog" v-if="courseInfo.type == 20">
@@ -714,6 +717,7 @@
configUrl=urlPre+configUrl.substring(configUrl.indexOf(':')+1);
this.scormUrl=configUrl+pars;//播放的首页
console.log('scormUrl',this.scormUrl);
}
});
@@ -1745,12 +1749,17 @@
min-height: 400px;
display: flex;
justify-content: space-between;
.course-player-container {
display: flex;
flex-direction: column;
height: 100%;
}
.course-player{ //内容播放区域
flex:1;
flex: 4; // 80%高度
min-width: 700px;
min-height: 400px;
max-height: 800px;
//height: 100%;
// min-height: 400px;
// max-height: 800px;
height: 80%;
border: 1px solid #ffffff;
padding-right: 20px;
// overflow: auto;
@@ -1759,6 +1768,23 @@
width: 420px;
}
}
@media screen and (max-width: 1200px) {
.course-playbox,
.course-infobox {
flex-direction: column;
}
.course-player,
.course-info {
min-width: 100%;
padding-right: 0;
}
.course-control,
.course-teacher {
width: 100%;
margin-top: 20px;
}
}
.course-infobox {
margin-top: 20px;
display: flex;
@@ -1878,13 +1904,10 @@
}
.player-box {
position: absolute;
// top: 62px;
// left: 184px;
width: 300px;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
position: relative;
width: 100%;
max-width: 300px;
margin: 20px auto;
height: 187px;
background: rgba(74, 74, 74, .5);
border-radius: 33px;
@@ -2027,7 +2050,8 @@
}
.course-interact {
height: 54px;
flex: 1; // 20%高度
min-height: 54px;
// padding-top: 10px;
// padding-right: 10px;
padding: 0 20px;