Merge branch 'master' of codeup.aliyun.com:6265f483e4166464dc2f9c14/boeu/portal into online

This commit is contained in:
dongruihua
2022-06-21 11:38:37 +08:00
18 changed files with 123 additions and 379 deletions

BIN
public/ad/dlg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

View File

@@ -5,7 +5,7 @@
import ajax from '@/utils/xajax.js' import ajax from '@/utils/xajax.js'
/** /**
* 查询指定条数的课程,用于首页提取 * post 请求 查询指定条数的课程,用于首页提取
* @param {Object} query * @param {Object} query
* num多少条记录 * num多少条记录
* orderType排序方式1表最新3表最热 * orderType排序方式1表最新3表最热

View File

@@ -10,7 +10,7 @@
<div class="article-info-summary two-line-ellipsis">{{ item.summary || item.content}}</div> <div class="article-info-summary two-line-ellipsis">{{ item.summary || item.content}}</div>
<div class="article-info-tools"> <div class="article-info-tools">
<authorInfo :avatar="item.avatar" :name="item.name" :info="item.orgInfo" :sex="item.sex"> </authorInfo> <authorInfo :avatar="item.avatar" :name="item.name" :info="item.orgInfo" :sex="item.sex"> </authorInfo>
<span>发布时间{{ item.sysCreateTime || item.publishTime | timeFilter }}</span> <span>发布时间{{ item.sysCreateTime || item.publishTime || item.favoritesTime | timeFilter }}</span>
<span>收藏时间{{ item.time || item.favoritesTime | timeFilter }}</span> <span>收藏时间{{ item.time || item.favoritesTime | timeFilter }}</span>
<el-button @click.stop="delItem(item)" type="text" style="color: #8590A6" icon="el-icon-remove">取消收藏</el-button> <el-button @click.stop="delItem(item)" type="text" style="color: #8590A6" icon="el-icon-remove">取消收藏</el-button>
</div> </div>

View File

@@ -41,7 +41,7 @@
</div> </div>
</div> </div>
<div class="article-info-date" v-if="item.enabled == true"> <div class="article-info-date">
<el-button class="edit" @click.stop="editItem(item.id)" type="text" icon="el-icon-edit">编辑</el-button> <el-button class="edit" @click.stop="editItem(item.id)" type="text" icon="el-icon-edit">编辑</el-button>
<el-button class="del" @click.stop="delItem(item)" type="text" icon="el-icon-delete">删除</el-button> <el-button class="del" @click.stop="delItem(item)" type="text" icon="el-icon-delete">删除</el-button>
</div> </div>
@@ -78,12 +78,14 @@ export default {
} }
}; };
}, },
filters:{ filters:{
sysCreateTimeFilter(item){ sysCreateTimeFilter(item){
return item.split(' ')[0] return item.split(' ')[0]
} }
}, },
mounted() { mounted() {
console.log(this.items)
}, },
methods: { methods: {
classFilter(status){ classFilter(status){

View File

@@ -7,33 +7,33 @@
</div> </div>
<div v-show="theme==1" class="interact-bar-btns" :style="{'justify-content':showAlign}"> <div v-show="theme==1" class="interact-bar-btns" :style="{'justify-content':showAlign}">
<div v-if="answers" @click="addAnswers()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly || clickAnswer}"> <div v-if="answers" @click="addAnswers()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly || clickAnswer}">
<el-tooltip effect="light" content="回答" placement="left"> <el-tooltip effect="light" content="回答" placement="left" :visible-arrow="false" popper-class="text-tooltip">
<!-- <svg-icon style="margin-right: 0;" icon-class="comment"></svg-icon> --> <!-- <svg-icon style="margin-right: 0;" icon-class="comment"></svg-icon> -->
<img style="width:16px;height:16px;vertical-align: middle;" :src="require('@/assets/images/icon/answers.png')"> <img style="width:16px;height:16px;vertical-align: middle;" :src="require('@/assets/images/icon/answers.png')">
</el-tooltip> </el-tooltip>
<span class="interact-bar-value"> {{ data.answers}}</span> <span class="interact-bar-value"> {{ data.answers}}</span>
</div> </div>
<div v-if="comments" class="interact-bar-btn" :style="`min-width: ${nodeWidth};`" :class="{cursor:!readonly}"> <div v-if="comments" class="interact-bar-btn" :style="`min-width: ${nodeWidth};`" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="评论" placement="left"> <el-tooltip effect="light" content="评论" placement="left" :visible-arrow="false" popper-class="text-tooltip">
<svg-icon style="margin-right: 0;font-size: 16px;" icon-class="comment"></svg-icon> <svg-icon style="margin-right: 0;font-size: 16px;" icon-class="comment"></svg-icon>
</el-tooltip> </el-tooltip>
<span class="interact-bar-value"> {{data.comments}}</span> <span class="interact-bar-value"> {{data.comments}}</span>
</div> </div>
<div v-if="shares" @click="addShare()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}"> <div v-if="shares" @click="addShare()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="分享" placement="top"> <el-tooltip effect="light" content="分享" placement="top" :visible-arrow="false" popper-class="text-tooltip">
<svg-icon icon-class="share" style="margin-right: 0;font-size: 16px;"></svg-icon> <svg-icon icon-class="share" style="margin-right: 0;font-size: 16px;"></svg-icon>
</el-tooltip> </el-tooltip>
<span class="interact-bar-value"> {{data.shares}}</span> <span class="interact-bar-value"> {{data.shares}}</span>
</div> </div>
<div v-if="praises" @click="addPraise()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}"> <div v-if="praises" @click="addPraise()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="点赞" placement="top"> <el-tooltip effect="light" content="点赞" placement="top" :visible-arrow="false" popper-class="text-tooltip">
<svg-icon style="margin-right: 0;font-size: 20px;" :icon-class="isPraise?'praised':'like'"></svg-icon> <svg-icon style="margin-right: 0;font-size: 20px;" :icon-class="isPraise?'praised':'like'"></svg-icon>
</el-tooltip> </el-tooltip>
<span class="interact-bar-value"> {{ data.praises}}</span> <span class="interact-bar-value"> {{ data.praises}}</span>
</div> </div>
<div v-if="favorites" @click="addFavorite()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}"> <div v-if="favorites" @click="addFavorite()" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="收藏" placement="top"> <el-tooltip effect="light" content="收藏" placement="top" :visible-arrow="false" popper-class="text-tooltip">
<svg-icon style="font-size: 16px;margin-right: 0;" :icon-class="isFavorite?'collected':'collection'"></svg-icon> <svg-icon style="font-size: 16px;margin-right: 0;" :icon-class="isFavorite?'collected':'collection'"></svg-icon>
<!-- <svg-icon :icon-class="isFavorite?'collected':'dropdown_collected'"></svg-icon> --> <!-- <svg-icon :icon-class="isFavorite?'collected':'dropdown_collected'"></svg-icon> -->
<!-- dropdown_collected --> <!-- dropdown_collected -->
@@ -42,7 +42,7 @@
</div> </div>
<div v-if="views" style="cursor: default;" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}"> <div v-if="views" style="cursor: default;" :style="`min-width: ${nodeWidth};`" class="interact-bar-btn" :class="{cursor:!readonly}">
<el-tooltip effect="light" content="浏览量" placement="top"> <el-tooltip effect="light" content="浏览量" placement="top" :visible-arrow="false" popper-class="text-tooltip">
<svg-icon style="margin-right: 0;font-size:20.5px;" icon-class="eyes"></svg-icon> <svg-icon style="margin-right: 0;font-size:20.5px;" icon-class="eyes"></svg-icon>
</el-tooltip> </el-tooltip>
<span class="interact-bar-value"> {{ data.views}}</span> <span class="interact-bar-value"> {{ data.views}}</span>

View File

@@ -41,7 +41,7 @@
<div class="person-action" > <div class="person-action" >
<!-- 消息 --> <!-- 消息 -->
<el-badge :value="userMsg" :hidden="userMsg == 0" class="message-count"> <el-badge :value="userMsg" :hidden="userMsg == 0" class="message-count">
<el-tooltip content="消息" placement="bottom" effect="light"> <el-tooltip content="消息" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
<el-link type="primary" :href="`${webBaseUrl}/message`" icon="el-icon-bell" :underline="false"></el-link> <el-link type="primary" :href="`${webBaseUrl}/message`" icon="el-icon-bell" :underline="false"></el-link>
</el-tooltip> </el-tooltip>
</el-badge> </el-badge>
@@ -51,39 +51,12 @@
<div v-else class="uavatar"> <div v-else class="uavatar">
<div v-if="sex === 1 "><img src="../../public/images/Avatarman.png" alt=""></div> <div v-if="sex === 1 "><img src="../../public/images/Avatarman.png" alt=""></div>
<div v-else><img src="../../public/images/Avatarwoman.png" alt=""></div> <div v-else><img src="../../public/images/Avatarwoman.png" alt=""></div>
</div> </div>
</a> </a>
</div> </div>
<el-link type="primary" style="margin-right:10px;" :href="`${webBaseUrl}${isTiao ? '/uc/study/task' : '/uc/study/courses'}`" :underline="false">个人中心</el-link> <el-link type="primary" style="margin-right:10px;" :href="`${webBaseUrl}${isTiao ? '/uc/study/task' : '/uc/study/courses'}`" :underline="false">个人中心</el-link>
<!-- <el-button @click="logout()" type="text" icon="el-icon-switch-button">退出</el-button> -->
<el-link type="primary" @click="logout()" icon="el-icon-switch-button" :underline="false">退出</el-link> <el-link type="primary" @click="logout()" icon="el-icon-switch-button" :underline="false">退出</el-link>
</div> </div>
<!-- <div style="margin-left: 60px;margin-right: 30px"> -->
<!-- <el-badge :value="userMsg" :hidden="userMsg == 0" class="message-count"> -->
<!-- <el-link type="primary" :href="`${webBaseUrl}/message`" icon="el-icon-bell" :underline="false">消息</el-link> -->
<!-- <el-link type="primary" :href="`${webBaseUrl}/message`" icon="el-icon-bell" :underline="false"></el-link> -->
<!-- </el-badge> -->
<!-- </div> -->
<!-- <div style="margin-left: 20px;"><el-avatar :src="userInfo.avatar" style="vertical-align: middle;width:28px;height:28px;margin-right:2px;"></el-avatar></div> -->
<!-- <div style="margin-left: 5px;"> -->
<!-- <el-dropdown @command="handleUcCommand">
<span class="el-dropdown-link">
{{ userInfo.name }}
<i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="uc">个人中心</el-dropdown-item>
<el-dropdown-item command="logout" divided>退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> -->
<!--管理员-->
<!-- <el-link type="primary" :href="`${webBaseUrl}/course/manage`" :underline="false">个人中心</el-link> -->
<!--学员-->
<!-- <el-link type="primary" :href="`${webBaseUrl}${isTiao ? '/uc/study/task' : '/uc/study/courses'}`" :underline="false">个人中心</el-link> -->
<!-- </div> -->
<!-- <div style="margin-left: 20px;"><el-button @click="logout()" type="text" icon="el-icon-switch-button">退出</el-button></div> -->
</div> </div>
</div> </div>
</div> </div>
@@ -145,14 +118,11 @@ export default {
// cmtask_name:this.cmtask_name, // cmtask_name:this.cmtask_name,
}; };
apiBoeCourse.cmtaskList(params).then(res => { apiBoeCourse.cmtaskList(params).then(res => {
if (res.result.count > 0) { if (res.status == 200 && res.result.count > 0) {
this.isTiao = true; this.isTiao = true;
// this.$router.push('/uc/study/task');// 学习任务
} else { } else {
this.isTiao = false; this.isTiao = false;
// this.$router.push('/uc/study/courses')// 自主学习
} }
// this.pageData.list = res.result.list;
}); });
}, },
handleCommand(val) { handleCommand(val) {
@@ -355,21 +325,16 @@ export default {
div{ div{
border-radius: 50%; border-radius: 50%;
img{ img{
border-radius: 50%; border-radius: 50%;
width: 40px; width: 40px;
height: 40px; height: 40px;
} }
} }
// border: 1px solid #73adfe;
// color: #73adfe;
// text-align: center;
width: 40px; width: 40px;
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
font-size: 14px; font-size: 14px;
margin-right: 8px; margin-right: 8px;
border-radius: 50%; border-radius: 50%;
// background: #d9e9ff;
} }
</style> </style>

View File

@@ -320,7 +320,7 @@
<span v-if="lastStudy.contentType=='face-course'" class="course-type-title course-type">线下课</span> <span v-if="lastStudy.contentType=='face-course'" class="course-type-title course-type">线下课</span>
<span v-if="lastStudy.contentType=='project'" class="course-type-title course-type">学习项目</span> <span v-if="lastStudy.contentType=='project'" class="course-type-title course-type">学习项目</span>
</div> </div>
<el-tooltip :content="lastStudy.courseName" placement="bottom-start" effect="light"> <el-tooltip :content="lastStudy.courseName" placement="bottom-start" effect="light" :visible-arrow="false" popper-class="text-tooltip">
<div class="course-title two-line-ellipsis">{{lastStudy.courseName}} <div class="course-title two-line-ellipsis">{{lastStudy.courseName}}
</div> </div>
</el-tooltip> </el-tooltip>

View File

@@ -79,32 +79,15 @@
<el-button type="primary" @click="submitPwd">提交修改</el-button> <el-button type="primary" @click="submitPwd">提交修改</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog <el-dialog custom-class="dialog-signin" :show-close="false" :visible.sync="signInShow" :close-on-click-modal="false" width="520px" top="8vh">
class="dialog-signin" <div>
:show-close="false" <img usemap="#HotMap" src="/pc/ad/dlg.png" style="width:416px;height: 576px;">
:visible.sync="signInShow" <map name="HotMap" id="HotMap">
:close-on-click-modal="false" <area shape="circle" name="link1" coords="380,40,30" @click="closeSignDlg" href="javascript:;" />
width="30%"> <area shape="rectangle" name="link2" coords="150,400,300,500" target="_blank" href="https://boehrsurvey.wjx.cn/vm/PmreuFN.aspx" />
<!-- <span>这是一段信息</span> --> </map>
<div style="background-color: #99beff;padding-bottom: 20px;">
<div class="signin-bg">
<img style="width:100%" :src="`${this.webBaseUrl}/images/newtip/bg.png`" alt="" srcset="">
<i @click="toExperience()" class="el-icon-close" style="cursor: pointer;"></i>
</div> </div>
<!-- <div class="signin-box">
<p class="signin-text"><span>更多彩蛋</span> <span class="ti-yan" @click="toExperience()">即刻体验>>> </span></p>
<p class="signin-a"><span><a href="https://u.boe.com/upload/video/originfile/50/50d84b41d7e4c29b20e73215b5117fb5.mp4" target="_blank">点击小视频了解更多</a></span></p>
<p class="signin-b"><el-checkbox v-model="checked"></el-checkbox> <span>一天之内不再提示</span></p>
</div> -->
<div class="signin-box2">
<div class="signin-checkbox"><el-checkbox v-model="checked"></el-checkbox>一天之内不再提示</div>
<!-- <div class="signin-text" @click="toExperience()">点击小视频了解更多</div> -->
</div>
</div>
<div slot="footer" class="dialog-footer dialog-footer-signin">
<!-- <el-checkbox v-model="checked">一天之内不在提示</el-checkbox> -->
<!-- <el-button type="primary" @click="toExperience()">去体验</el-button> -->
</div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
@@ -118,17 +101,13 @@ export default {
return { return {
checked:true, checked:true,
signInShow: false, signInShow: false,
signLocalTimesKey:'xboe_sign_dlg_times',
keyword: '', keyword: '',
findType: '1', findType: '1',
mouseIndex: 0, mouseIndex: 0,
activeIndex: '', activeIndex: '',
oneSignIn:'boe_new', msg: { num: 0 },
msg: { user: { name: '' },
num: 0
},
user: {
name: ''
},
pwdDlg: { show: false, newPwd: '', nowPwd: '', rePwd: '' }, pwdDlg: { show: false, newPwd: '', nowPwd: '', rePwd: '' },
current:1 current:1
}; };
@@ -146,41 +125,36 @@ export default {
} }
}, },
mounted() { mounted() {
if(this.getCookies() == null) { //控制弹出窗口的代码
this.signInShow = true; let now = new Date() //当前时间
let end = new Date('2022/06/29 00:00:00') //对比时间
if(now.getTime() < end.getTime()){
let times = localStorage.getItem(this.signLocalTimesKey);
let isNewLogin=localStorage.getItem(this.$Constants.newLoginKey);
//let isNewLogin='1';
if(isNewLogin && isNewLogin=='1'){
if(!times){
this.signInShow = true;//显示
localStorage.setItem(this.signLocalTimesKey,1);
}else{
//console.log(times,'times');
let intTimes=parseInt(times);
if(intTimes<3){
this.signInShow = true;//显示
intTimes++;
localStorage.setItem(this.signLocalTimesKey,intTimes);
}
}
localStorage.setItem(this.$Constants.newLoginKey,0);
}
} }
this.$store.dispatch('refrashMsg'); this.$store.dispatch('refrashMsg');
}, },
methods: { methods: {
getCookies() { closeSignDlg(){
return Cookies.get(this.oneSignIn) this.signInShow=false;
}, },
setCookies(token,expiresTime) {
//console.log(token,expiresTime,'token,expiresTime');
return Cookies.set(this.oneSignIn, token,expiresTime)
},
removeCookies(){
return Cookies.remove(this.oneSignIn)
},
toExperience() {
this.signInShow = false;
if(this.checked) {
this.setCookies('new',60*60*24)
} else {
this.removeCookies();
}
},
// searchJump() {
// if(this.findType == '1') {// 课程
// window.open(`/course?keyword=${this.keyword}`);
// } else if(this.findType == '2'){ // 案例
// window.open(`/case?keyword=${this.keyword}`);
// } else if(this.findType == '3'){ //文章
// window.open(`/article?keyword=${this.keyword}`);
// } else if(this.findType == '4'){ // 问答
// window.open(`/qa?keyword=${this.keyword}`);
// }
// },
handleCommand(val) { handleCommand(val) {
let obj = { let obj = {
one: process.env.VUE_APP_BOE_WEB_URL+'/web/teacherLesson', one: process.env.VUE_APP_BOE_WEB_URL+'/web/teacherLesson',
@@ -238,6 +212,8 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .dialog-signin{ ::v-deep .dialog-signin{
background: transparent;
box-shadow:none;
.el-dialog__header{ .el-dialog__header{
padding: 0; padding: 0;
} }

View File

@@ -1,6 +1,7 @@
/**页面设置的一些常量*/ /**页面设置的一些常量*/
const constants={ const constants={
fileBaseUrl:'http://127.0.0.1/pc/cdn/upload' fileBaseUrl:'http://127.0.0.1/pc/cdn/upload',
newLoginKey:'boe_new_login'
} }
export default constants export default constants

View File

@@ -31,7 +31,7 @@
<el-image class="course-image" style="height: 130px;" :src="this.webBaseUrl+'/ad/index_course.png'" fit="fit"></el-image> <el-image class="course-image" style="height: 130px;" :src="this.webBaseUrl+'/ad/index_course.png'" fit="fit"></el-image>
<span class="course-type">录播课</span> <span class="course-type">录播课</span>
</div> </div>
<el-tooltip class="item" content="高效谈判系列课" placement="bottom" effect="light"> <el-tooltip class="item" content="高效谈判系列课" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
<div class="course-title one-line-ellipsis">高效谈判系列课</div> <div class="course-title one-line-ellipsis">高效谈判系列课</div>
</el-tooltip> </el-tooltip>
<div class="course-author"> <div class="course-author">
@@ -62,7 +62,7 @@
<span v-if="course.type == 20 || 10" class="course-type">录播课</span> <span v-if="course.type == 20 || 10" class="course-type">录播课</span>
</div> </div>
<el-tooltip class="item" :content="course.name" placement="bottom" effect="light"> <el-tooltip class="item" :content="course.name" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
<div class="course-title one-line-ellipsis" >{{ course.name }}</div> <div class="course-title one-line-ellipsis" >{{ course.name }}</div>
</el-tooltip> </el-tooltip>

View File

@@ -41,6 +41,7 @@
apiLogin.boeLogin(this.curToken).then(rs=>{ apiLogin.boeLogin(this.curToken).then(rs=>{
if(rs.status==200){ if(rs.status==200){
//setToken(rs.result.access_token); //setToken(rs.result.access_token);
localStorage.setItem(this.$Constants.newLoginKey,1);
if(this.toUrl){ if(this.toUrl){
location.href=this.toUrl; location.href=this.toUrl;
}else{ }else{

View File

@@ -99,6 +99,7 @@
this.$store.dispatch("Login", this.form).then(rs => { this.$store.dispatch("Login", this.form).then(rs => {
if(rs.status == 200){ if(rs.status == 200){
// 记住密码 // 记住密码
localStorage.setItem(this.$Constants.newLoginKey,1);
if(this.rememberMe){ if(this.rememberMe){
let rememberMeOjb = {rememberMe:true,loginName:this.form.loginName,password:this.form.password}; let rememberMeOjb = {rememberMe:true,loginName:this.form.loginName,password:this.form.password};
this.$store.dispatch("portal/SetLoginRememberMe", rememberMeOjb) this.$store.dispatch("portal/SetLoginRememberMe", rememberMeOjb)

View File

@@ -25,9 +25,9 @@
</div> --> </div> -->
<!-- <div class="case-summary"><span>{{ caseDetail.summary }}</span></div> --> <!-- <div class="case-summary"><span>{{ caseDetail.summary }}</span></div> -->
<div class="btn-div clearfix" > <div class="btn-div clearfix" >
<div style="color:#666" v-if="caseDetail.orgDomain" class="item">{{ orgDomainTranslate(caseDetail.orgDomain) }}</div> <div style="color:#2974D6;font-weight: 450;" v-if="caseDetail.orgDomain" class="item">{{ orgDomainTranslate(caseDetail.orgDomain) }}</div>
<div style="color:#666" class="item" v-if="caseDetail.orgDomain == '' && caseDetail.orgDomainParent">{{ orgDomainTranslate(caseDetail.orgDomainParent) }}</div> <div style="color:#2974D6;font-weight: 450;" class="item" v-if="caseDetail.orgDomain == '' && caseDetail.orgDomainParent">{{ orgDomainTranslate(caseDetail.orgDomainParent) }}</div>
<div style="color:#666" v-if="caseDetail.majorType" class="item">{{ majorTypeTranslate(caseDetail.majorType) }}</div> <div style="color:#2974D6;font-weight: 450;" v-if="caseDetail.majorType" class="item">{{ majorTypeTranslate(caseDetail.majorType) }}</div>
<div v-if="caseDetail.keyword1" class="item">{{ caseDetail.keyword1 }}</div> <div v-if="caseDetail.keyword1" class="item">{{ caseDetail.keyword1 }}</div>
<div v-if="caseDetail.keyword2" class="item">{{ caseDetail.keyword2 }}</div> <div v-if="caseDetail.keyword2" class="item">{{ caseDetail.keyword2 }}</div>
<div v-if="caseDetail.keyword3" class="item">{{ caseDetail.keyword3 }}</div> <div v-if="caseDetail.keyword3" class="item">{{ caseDetail.keyword3 }}</div>
@@ -523,15 +523,15 @@ export default {
.item { .item {
float: left; float: left;
margin: 7px 10px 0px 0px; margin: 7px 10px 0px 0px;
border: 1px solid #c2c3c8; border: 1px solid #2974D6;
padding: 0px 10px; padding: 0px 10px;
line-height: 24px; line-height: 24px;
text-align: center; text-align: center;
height: 24px; height: 24px;
box-sizing: border-box; box-sizing: border-box;
border-radius: 2px; border-radius: 10px;
font-size: 14px; font-size: 14px;
color: #9c9c9c; color: #2974D6;
} }
.item-right { .item-right {
float: right; float: right;

View File

@@ -25,7 +25,7 @@
<el-row class="search-item"> <el-row class="search-item">
<el-col :span="24"> <el-col :span="24">
<div style="margin-top:10px; display: flex;"> <div style="margin-top:10px; display: flex;">
<div style="line-height: 25px;padding-right: 5px;"> <div style="line-height: 25px;padding-right: 0px;">
<span class="item-title" style="padding-right: 5px;">组织领域</span> <span class="item-title" style="padding-right: 5px;">组织领域</span>
<span class="item-line"></span> <span class="item-line"></span>
</div> </div>
@@ -42,7 +42,7 @@
<el-row class="search-item"> <el-row class="search-item">
<el-col :span="24"> <el-col :span="24">
<div style="margin-top:10px; display: flex;"> <div style="margin-top:10px; display: flex;">
<div style="line-height: 25px;padding-right: 5px;"> <div style="line-height: 25px;padding-right: 0px;">
<span class="item-title" style="padding-right: 5px;">专业分类</span> <span class="item-title" style="padding-right: 5px;">专业分类</span>
<span class="item-line"></span> <span class="item-line"></span>
</div> </div>
@@ -86,13 +86,13 @@
</div> </div>
</div> </div>
</div> </div>
<div style="height:32px; "> <div style="height:40px;padding-top:5px ">
<author :avatar="item.authorInfo.avatar" :name="item.authorInfo.name" :info="item.authorInfo.orgInfo" :sex="item.authorInfo.sex"></author> <author :avatar="item.authorInfo.avatar" :name="item.authorInfo.name" :info="item.authorInfo.orgInfo" :sex="item.authorInfo.sex"></author>
</div> </div>
<div class="keyword-text clearfix"> <div class="keyword-text clearfix">
<div style="color:#666" v-if="item.orgDomain">{{ orgDomainTranslate(item.orgDomain) }}</div> <div style="color:#2974D6;font-weight: 450;" v-if="item.orgDomain">{{ orgDomainTranslate(item.orgDomain) }}</div>
<div style="color:#666" v-if="item.orgDomain == '' && item.orgDomainParent">{{ orgDomainTranslate(item.orgDomainParent) }}</div> <div style="color:#2974D6;font-weight: 450;" v-if="item.orgDomain == '' && item.orgDomainParent">{{ orgDomainTranslate(item.orgDomainParent) }}</div>
<div style="color:#666" v-if="item.majorType">{{ majorTypeTranslate(item.majorType) }}</div> <div style="color:#2974D6;font-weight: 450;" v-if="item.majorType">{{ majorTypeTranslate(item.majorType) }}</div>
<div v-if="item.keyword1">{{ item.keyword1 }}</div> <div v-if="item.keyword1">{{ item.keyword1 }}</div>
<div v-if="item.keyword2">{{ item.keyword2 }}</div> <div v-if="item.keyword2">{{ item.keyword2 }}</div>
<div v-if="item.keyword3">{{ item.keyword3 }}</div> <div v-if="item.keyword3">{{ item.keyword3 }}</div>
@@ -147,7 +147,7 @@
<img v-if="index===2" :src="`${webBaseUrl}/images/third.png`"/> <img v-if="index===2" :src="`${webBaseUrl}/images/third.png`"/>
<span style="margin-left: 10px" v-if="index!=2&&index!=0&&index!=1">{{index+1}}</span> <span style="margin-left: 10px" v-if="index!=2&&index!=0&&index!=1">{{index+1}}</span>
</el-col> </el-col>
<el-tooltip :enterable="false" effect="light" :content="item.sysCreateUname" :visible-arrow="false" popper-class="text-tooltip" placement="bottom"> <el-tooltip :enterable="false" effect="light" :content="'名称('+ item.sysCreateUname + ')'" :visible-arrow="false" popper-class="text-tooltip" placement="bottom">
<el-col :span="15" class="title-line-ellipsis"> {{ item.sysCreateUname }}</el-col> <el-col :span="15" class="title-line-ellipsis"> {{ item.sysCreateUname }}</el-col>
</el-tooltip> </el-tooltip>
<!-- <el-col class="center" style="color: #FF8E00;" :span="5">{{ item.score }}</el-col> --> <!-- <el-col class="center" style="color: #FF8E00;" :span="5">{{ item.score }}</el-col> -->
@@ -296,8 +296,8 @@ export default {
orderField: "comments", orderField: "comments",
// breCommend:null, // breCommend:null,
keyWord: "", keyWord: "",
majorType: "", //专业分类 majorType:'', //专业分类
orgDomain: "", // 组织领域 orgDomain: '', // 组织领域
orderAsc: false orderAsc: false
}, },
keyWord: "", keyWord: "",
@@ -529,6 +529,14 @@ export default {
if (this.keyWord != this.queryCondition.keyWord) { if (this.keyWord != this.queryCondition.keyWord) {
this.queryCondition.keyWord = this.keyWord; this.queryCondition.keyWord = this.keyWord;
} }
if(this.queryCondition.orgDomain == 0){
this.queryCondition.orgDomain = null
}
if(this.queryCondition.majorType == 0){
this.queryCondition.majorType = null
}
this.getCaseData(); this.getCaseData();
}, },
async getCaseData() { async getCaseData() {
@@ -604,10 +612,10 @@ export default {
for (let i in this.queryCondition) { for (let i in this.queryCondition) {
if (tag.type === i) { if (tag.type === i) {
if (i == "majorType") { if (i == "majorType") {
this.queryCondition.majorType = null; this.queryCondition.majorType = 0;
} }
if (i == "orgDomain") { if (i == "orgDomain") {
this.queryCondition.orgDomain = null; this.queryCondition.orgDomain = 0;
} }
if (i == "keyWord") { if (i == "keyWord") {
this.queryCondition.keyWord = ""; this.queryCondition.keyWord = "";
@@ -670,7 +678,6 @@ export default {
border-radius: 0px; border-radius: 0px;
} }
.case-titdiv { .case-titdiv {
line-height: 30px; line-height: 30px;
display: flex; display: flex;
.case-tittext { .case-tittext {
@@ -699,15 +706,14 @@ export default {
.keyword-text { .keyword-text {
div { div {
padding:0px 7px;
margin-top: 5px; margin-top: 5px;
float: left; float: left;
height: 19px; line-height: 22px;
line-height: 19px; font-size: 14px;
font-size: 12px; color: #2974D6;
color: #9c9c9c; border: 1px solid #2974D6;
border: 1px solid #c2c3c8; border-radius: 10px;
padding: 0px 5px;
border-radius: 2px;
margin-right: 8px; margin-right: 8px;
} }
} }
@@ -900,7 +906,7 @@ export default {
} }
} }
.case-info-summary { .case-info-summary {
margin-top:3px; margin-top:8px;
cursor: pointer; cursor: pointer;
margin-bottom: 5px; margin-bottom: 5px;
word-break: break-all; word-break: break-all;

View File

@@ -240,10 +240,11 @@ export default {
}, },
crateQrcode(){ crateQrcode(){
this.qr = new QRCode('qrcode', { this.qr = new QRCode('qrcode', {
width: 80, width: 150,
height: 80, // 高度 height: 150, // 高度
text: this.qrcode // 二维码内容 text: this.qrcode // 二维码内容
}); });
this.qr._el.title = '';
}, },
showCommentsTotal(total){ showCommentsTotal(total){
this.commentsTtoal=total; this.commentsTtoal=total;
@@ -465,8 +466,8 @@ export default {
vertical-align:bottom; vertical-align:bottom;
} }
.qrcode{ .qrcode{
width: 80px; width: 150px;
height: 80px; height: 150px;
display: inline-block; display: inline-block;
margin: 1px; margin: 1px;
img { img {

View File

@@ -24,50 +24,25 @@
<!-- // 10微课21在线课(直播)20:在线课( 录播)30:面授课40:学习项目,90:混合式, --> <!-- // 10微课21在线课(直播)20:在线课( 录播)30:面授课40:学习项目,90:混合式, -->
<div> <div>
<el-radio-group v-model="category" size="mini" @change="searchData"> <el-radio-group v-model="category" size="mini" @change="searchData">
<el-radio-button :label="0">全部</el-radio-button> <el-radio-button :label="null">全部</el-radio-button>
<!-- <el-radio-button :label="10">微课</el-radio-button> -->
<el-radio-button :label="20">录播课</el-radio-button> <el-radio-button :label="20">录播课</el-radio-button>
<el-radio-button :label="30">线下课</el-radio-button> <el-radio-button :label="30">线下课</el-radio-button>
<el-radio-button :label="40">学习项目</el-radio-button> <el-radio-button :label="40">学习项目</el-radio-button>
</el-radio-group> </el-radio-group>
</div> </div>
</div> </div>
<!-- <div class="search-item-sub" v-if="category == 2">
<el-radio-group v-model="categorySub" size="mini" @change="search">
<el-radio-button :label="0">全部</el-radio-button>
<el-radio-button :label="21">直播</el-radio-button>
<el-radio-button :label="20">录播</el-radio-button>
</el-radio-group>
</div> -->
</el-col> </el-col>
</el-row> </el-row>
<!-- <div> -->
<!-- <el-row class="search-item"> -->
<!-- <el-col :span="1.5">应用场景</el-col> -->
<!-- <el-col :span="24">
<div class="item-title">应用场景</div>
<div>
<el-radio-group v-model="types.scenes" size="mini" @change="searchData">
<el-radio-button :label="0">全部</el-radio-button>
<el-radio-button v-for="item in sceneList" :key="item.id" :label="item.id">{{item.name}}</el-radio-button>
</el-radio-group>
</div>
</el-col> -->
<!-- </el-row> -->
<!-- </div> -->
<div :class="queryExpand ? 'search-div-expand' : 'search-div-collapse'"> <div :class="queryExpand ? 'search-div-expand' : 'search-div-collapse'">
<el-row class="search-item"> <el-row class="search-item">
<!-- <el-col :span="1.5">内容分类</el-col> -->
<el-col :span="24"> <el-col :span="24">
<!-- <div class="item-title">内容分类</div> -->
<div style="margin-top:10px;display: flex;"> <div style="margin-top:10px;display: flex;">
<div style="line-height: 25px;"> <div style="line-height: 25px;">
<span class="item-title" style="padding-right: 5px;">内容分类</span> <span class="item-title" style="padding-right: 5px;">内容分类</span>
<span class="item-line"></span> <span class="item-line"></span>
</div> </div>
<!-- @mouseover="showSubTypes(1)" @mouseout="hideSubTypes(1)" -->
<el-radio-group v-model="types.sysTypes" size="mini" @change="changeType"> <el-radio-group v-model="types.sysTypes" size="mini" @change="changeType">
<el-radio-button label="0">全部</el-radio-button> <el-radio-button :label="null">全部</el-radio-button>
<el-radio-button v-for="item in optionsList" :key="item.id" :label="item.id">{{item.name}}</el-radio-button> <el-radio-button v-for="item in optionsList" :key="item.id" :label="item.id">{{item.name}}</el-radio-button>
</el-radio-group> </el-radio-group>
<span @click="jumUX()" class="Uxtext" style=""> U选小课堂 <span @click="jumUX()" class="Uxtext" style=""> U选小课堂
@@ -91,69 +66,31 @@
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<!-- <el-row class="search-item">
<el-col :span="24">
<div style="margin-top:20px;">
<span class="item-title" style="margin-right:37px">时长</span>
<el-radio-group v-model="types.sysTypes" size="mini" @change="changeType">
<el-radio-button label="0">20min</el-radio-button>
<el-radio-button label="1">20min-60min</el-radio-button>
<el-radio-button label="2">20min</el-radio-button>
</el-radio-group>
</div>
</el-col>
</el-row> -->
<!-- <el-row class="search-div-more">
<el-col :span="24">
<el-button type="text" @click="queryExpand = true" v-if="!queryExpand">收起</el-button>
<el-button type="text" v-else @click="queryExpand = false">更多</el-button>
</el-col>
</el-row> -->
</el-row> </el-row>
<el-row class="order-div" v-if="listType == 1"> <el-row class="order-div" v-if="listType == 1">
<span class="quyer-tag"> <span class="quyer-tag">
<el-button type="text" class="order-class" @click="orderChange('studys')" :class="{ actice: course.orderField == 'studys' }">最热</el-button> <el-button type="text" class="order-class" @click="orderChange('studys')" :class="{ actice: course.orderField == 'studys' }">最热</el-button>
<el-button type="text" class="order-class" @click="orderChange('id')" :class="{ actice: course.orderField == 'id' }">最新</el-button> <el-button type="text" class="order-class" @click="orderChange('publishTime')" :class="{ actice: course.orderField == 'publishTime' }">最新</el-button>
</span> </span>
<!-- <span v-if="isFind" style="padding-left:10px;">本次搜索出 {{courseList.length}} 条结果</span> -->
<!-- <span class="more"></span> -->
</el-row> </el-row>
<!-- <el-row v-else style="padding: 15px;font-size: 14px;color: rgb(248, 161, 20);">本次搜索共 2 条结果</el-row> -->
<div class="xrow data-content" v-if="listType == 1"> <div class="xrow data-content" v-if="listType == 1">
<div class="xrow-course course-index" v-for="(cinfo,cidx) in courseList" :key="cinfo.id" v-if="(courseList.length<=course.pageSize) || (cidx<parseInt(courseList.length/columns)*columns)"> <div class="xrow-course course-index" v-for="(cinfo,cidx) in courseList" :key="cinfo.id" v-if="(courseList.length<=course.pageSize) || (cidx<parseInt(courseList.length/columns)*columns)">
<el-card class="course-card" :body-style="{padding:'0px'}"> <el-card class="course-card" :body-style="{padding:'0px'}">
<a :href="toCourseDetail(cinfo)"> <a :href="toCourseDetail(cinfo)">
<div class="course-image-box"> <div class="course-image-box">
<course-image height="146px" :course="cinfo"></course-image> <course-image height="146px" :course="cinfo"></course-image>
<!-- <el-image class="course-image" :src="fileBaseUrl+course.coverImg" fit="fit"></el-image> -->
<!-- <span v-if="course.type==10" class="course-type"></span>
<span v-if="course.type==20" class="course-type"></span> -->
<!-- <span v-if="course.type=='online-course'" class="course-type"></span>
<span v-if="course.type=='face-course'" class="course-type"></span>
<span v-if="course.type=='project'" class="course-type"></span> -->
<!-- <span v-if="course.type==10" class="course-type-title">微课</span> -->
<span v-if="cinfo.type==20" class="course-type-title course-type">录播课</span> <span v-if="cinfo.type==20" class="course-type-title course-type">录播课</span>
<span v-if="cinfo.type==10" class="course-type-title course-type">录播课</span> <span v-if="cinfo.type==10" class="course-type-title course-type">录播课</span>
<span v-if="cinfo.type=='online-course'" class="course-type-title course-type">录播课</span> <span v-if="cinfo.type=='online-course'" class="course-type-title course-type">录播课</span>
<span v-if="cinfo.type=='face-course'" class="course-type-title course-type">线下课</span> <span v-if="cinfo.type=='face-course'" class="course-type-title course-type">线下课</span>
<span v-if="cinfo.type=='project'" class="course-type-title course-type">学习项目</span> <span v-if="cinfo.type=='project'" class="course-type-title course-type">学习项目</span>
</div> </div>
<el-tooltip class="item" :content="cinfo.name" placement="bottom-start" effect="light"> <el-tooltip class="item" :content="cinfo.couretitle" placement="bottom-start" effect="light" :visible-arrow="false" popper-class="text-tooltip" >
<div class="course-title title-line-ellipsis" v-html="$keywordActiveShow(cinfo.name,keyword)"> <div class="course-title title-line-ellipsis" v-html="$keywordActiveShow(cinfo.name,keyword)">
</div> </div>
</el-tooltip> </el-tooltip>
<div class="course-author"> <div class="course-author">
<div class="course-author-left" v-if="cinfo.authorInfo"> <div class="course-author-left" v-if="cinfo.authorInfo">
<!-- <span v-if="cinfo.type=='online-course' || cinfo.type=='face-course' || cinfo.type=='project'" style="font-size:14px;line-height: 28px;">发布时间{{cinfo.publishTime}}</span>
<span v-else>
<authorInfo v-if="cinfo.authorInfo" :avatar="cinfo.authorInfo.avatar" :name="cinfo.authorInfo.name"></authorInfo>
</span> -->
{{cinfo.authorInfo.name}} {{cinfo.authorInfo.name}}
</div> </div>
<div style="flex:1;text-align: center;"> <div style="flex:1;text-align: center;">
@@ -161,27 +98,13 @@
</div> </div>
<div style="padding-left:15px"> <div style="padding-left:15px">
<div v-if="cinfo.score"> <div v-if="cinfo.score">
<!-- <span><el-rate style="display: inline-block;" disabled v-model="cinfo.score"></el-rate></span> -->
<span class="course-score-value">{{toScore(cinfo.score)}}</span> <span class="course-score-value">{{toScore(cinfo.score)}}</span>
</div> </div>
<div v-else class="course-score-no">未评分</div> <div v-else class="course-score-no">未评分</div>
</div> </div>
</div> </div>
<!-- <div class="course-score"></div> -->
</a> </a>
<div class="cor-praises" v-if="cinfo.type == 10 || cinfo.type == 20"><interactBar :type="1" :data="cinfo" :comments="false" :praises="false" :shares="false" :views="false"></interactBar> </div> <div class="cor-praises" v-if="cinfo.type == 10 || cinfo.type == 20"><interactBar :type="1" :data="cinfo" :comments="false" :praises="false" :shares="false" :views="false"></interactBar> </div>
<!-- <a :href="toCourseDetail(cinfo)" target="_blank">
<div class="cor-icon"><i class="el-icon-caret-right"></i></div>
</a> -->
<!-- <div class="cardmark" v-if="cinfo.type == 10 || cinfo.type == 20">l
<div class="cardmark-name" v-if="cinfo && cinfo.forUsers">目标学员</div>
<div class="cardmark-info" v-if="cinfo && cinfo.forUsers">{{course.forUsers}}</div>
<div class="cardmark-name" v-if="cinfo && cinfo.value">课程价值</div>
<div class="cardmark-info" v-if="cinfo && cinfo.value">{{course.value}}</div>
<div class="cardmark-name" v-if="cinfo && cinfo.summary">课程介绍</div>
<div class="cardmark-info" v-if="cinfo && cinfo.summary">{{course.summary}}</div>
</div> -->
</el-card> </el-card>
</div> </div>
</div> </div>
@@ -191,12 +114,9 @@
<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>
</div> </div>
<!-- <div class="pagination-div"><el-pagination background layout="prev, pager, next" :total="pager.total"></el-pagination></div> -->
</div> </div>
<div style="width: 245px;margin-left: 5px;"> <div style="width: 245px;margin-left: 5px;">
<div> <div>
<div id="fixd-box"> <div id="fixd-box">
<div v-if="identity == 2 || identity == 3 || identity == 5"> <div v-if="identity == 2 || identity == 3 || identity == 5">
<el-button style="width: 100%;margin-bottom:15px;height: 37px;border-radius: 0;" type="primary" @click="toNeedCourse">做课程</el-button> <el-button style="width: 100%;margin-bottom:15px;height: 37px;border-radius: 0;" type="primary" @click="toNeedCourse">做课程</el-button>
@@ -207,8 +127,6 @@
</div> </div>
<div style="padding-bottom:10px"> <div style="padding-bottom:10px">
<el-row class="ranking-title"> <el-row class="ranking-title">
<!-- <el-col :span="15" style="color: #333333;font-size: 14px;">名称</el-col> -->
<!-- <el-col :offset="4" :span="5" class="center" style="color: #333333;font-size: 14px;">分数</el-col> -->
</el-row> </el-row>
<el-row class="ranking-title bacolor" v-for="(item, index) in scorelist" :key="index" > <el-row class="ranking-title bacolor" v-for="(item, index) in scorelist" :key="index" >
<el-col :span="6" style="height:34px"> <el-col :span="6" style="height:34px">
@@ -220,7 +138,6 @@
<el-tooltip :enterable="false" @click.native="jumpRouter(item)" effect="light" :content="item.name" placement="bottom" :visible-arrow="false" popper-class="text-tooltip"> <el-tooltip :enterable="false" @click.native="jumpRouter(item)" effect="light" :content="item.name" placement="bottom" :visible-arrow="false" popper-class="text-tooltip">
<el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.name }}</el-col> <el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.name }}</el-col>
</el-tooltip> </el-tooltip>
<!-- <el-col class="center" style="color: #FF8E00;" :span="5">{{ item.score }}</el-col> -->
</el-row> </el-row>
</div> </div>
</el-card> </el-card>
@@ -231,8 +148,6 @@
</div> </div>
<div style="padding-bottom:10px"> <div style="padding-bottom:10px">
<el-row class="ranking-title"> <el-row class="ranking-title">
<!-- <el-col :span="15">名称</el-col> -->
<!-- <el-col :span="9" class="center">学习人数</el-col> -->
</el-row> </el-row>
<el-row class="ranking-title bacolor" v-for="(item, index) in ankingList" :key="index"> <el-row class="ranking-title bacolor" v-for="(item, index) in ankingList" :key="index">
<el-col :span="6" style="height:34px"> <el-col :span="6" style="height:34px">
@@ -244,11 +159,9 @@
<el-tooltip :enterable="false" @click.native="jumpRouter(item)" effect="light" :content="item.name" placement="bottom" :visible-arrow="false" popper-class="text-tooltip"> <el-tooltip :enterable="false" @click.native="jumpRouter(item)" effect="light" :content="item.name" placement="bottom" :visible-arrow="false" popper-class="text-tooltip">
<el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.name }}</el-col> <el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.name }}</el-col>
</el-tooltip> </el-tooltip>
<!-- <el-col class="center" :span="5">{{ item.studys }}</el-col> -->
</el-row> </el-row>
</div> </div>
</el-card> </el-card>
<div style="height: 10px;"></div> <div style="height: 10px;"></div>
<el-card class="ranking-card"> <el-card class="ranking-card">
<div slot="header"> <div slot="header">
@@ -256,8 +169,6 @@
</div> </div>
<div style="padding-bottom:10px"> <div style="padding-bottom:10px">
<el-row class="ranking-title"> <el-row class="ranking-title">
<!-- <el-col :span="15">名称</el-col> -->
<!-- <el-col :span="9" class="center">学习人数</el-col> -->
</el-row> </el-row>
<el-row class="ranking-title bacolor" v-for="(item, index) in hotList" :key="index"> <el-row class="ranking-title bacolor" v-for="(item, index) in hotList" :key="index">
<el-col :span="6" style="height:34px"> <el-col :span="6" style="height:34px">
@@ -269,7 +180,6 @@
<el-tooltip :enterable="false" @click.native="jumpRouter2(item)" effect="light" :content="item.courseName" placement="bottom" :visible-arrow="false" popper-class="text-tooltip"> <el-tooltip :enterable="false" @click.native="jumpRouter2(item)" effect="light" :content="item.courseName" placement="bottom" :visible-arrow="false" popper-class="text-tooltip">
<el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.courseName }}</el-col> <el-col :span="15" style="cursor: pointer;" class="title-line-ellipsis"> {{ item.courseName }}</el-col>
</el-tooltip> </el-tooltip>
<!-- <el-col class="center" :span="5">{{ item.counts }}</el-col> -->
</el-row> </el-row>
</div> </div>
</el-card> </el-card>
@@ -321,6 +231,7 @@ export default {
}, },
data() { data() {
return { return {
couretitle:'',
toScore, toScore,
noPageList: true,//判断接口是否还有数据 noPageList: true,//判断接口是否还有数据
noDataList: true,//判断接口是否还有数据 noDataList: true,//判断接口是否还有数据
@@ -335,7 +246,6 @@ export default {
sysTypes: null, sysTypes: null,
oneSubList: [], oneSubList: [],
towSubList: [], towSubList: [],
scenes: 0,
}, },
course: { course: {
orderField: "studys", orderField: "studys",
@@ -355,8 +265,6 @@ export default {
ankingList:[], ankingList:[],
scorelist: [], scorelist: [],
searchTags: [], searchTags: [],
type1Sub3Level1: "0",
type1Sub3Level2: "0",
queryExpand: true, // true更多false收起 queryExpand: true, // true更多false收起
category: null, category: null,
categorySub: 0, categorySub: 0,
@@ -378,6 +286,7 @@ export default {
}; };
}, },
mounted() { mounted() {
let screenWidth=window.screen.width; let screenWidth=window.screen.width;
if(screenWidth<1280){ if(screenWidth<1280){
this.course.pageSize=9; this.course.pageSize=9;
@@ -423,6 +332,8 @@ export default {
}, },
methods: { methods: {
jumUX(){ jumUX(){
window.open('https://m.qingxuetang.com/x/?appId=qxtcorp306130','_blank'); window.open('https://m.qingxuetang.com/x/?appId=qxtcorp306130','_blank');
}, },
@@ -520,10 +431,6 @@ export default {
if (i === "sysType3") { if (i === "sysType3") {
this.types.subTow = ""; this.types.subTow = "";
} }
if(i === "scenes"){
this.types.scenes = "";
}
if(i === 'type') { if(i === 'type') {
this.category = ""; this.category = "";
this.categorySub = ""; this.categorySub = "";
@@ -589,14 +496,11 @@ export default {
this.course.pageIndex += 1; this.course.pageIndex += 1;
this.search(); this.search();
}, },
async search(num) { async search() {
let that = this; let that = this;
if(this.course.keyword){ if(this.course.keyword){
apiSearchterm.save({keyword:this.course.keyword,type:1}); apiSearchterm.save({keyword:this.course.keyword,type:1});
} }
// if(num !== 1) {
// this.course.pageIndex =1;
// }
this.isFind = true; this.isFind = true;
if (this.category === 0) { if (this.category === 0) {
this.course.type = null; this.course.type = null;
@@ -609,11 +513,6 @@ export default {
} else { } else {
this.course.type = this.category; this.course.type = this.category;
} }
if(this.types.scenes == 0) {
this.course.scenes = '';
} else{
this.course.scenes = this.types.scenes;
}
if(this.types.sysTypes == 0 || this.types.sysTypes == null) { if(this.types.sysTypes == 0 || this.types.sysTypes == null) {
this.course.sysType1 = ''; this.course.sysType1 = '';
this.course.sysType2 = ''; this.course.sysType2 = '';
@@ -674,9 +573,9 @@ export default {
if(this.totalPages<3){ if(this.totalPages<3){
this.noDataList = false; this.noDataList = false;
} }
// if(this.totalPages == 1 && this.course.pageIndex ==1){ if(this.totalPages == 1 && this.course.pageIndex ==1){
// this.noDataList = true; this.noDataList = true;
// } }
} }
if(this.course.type == 30 || this.course.type == 40) { if(this.course.type == 30 || this.course.type == 40) {
this.noPageList = false; this.noPageList = false;
@@ -686,6 +585,7 @@ export default {
this.noDataList && await apiOldCourse.courseList(oldParams).then(oldRs=>{ this.noDataList && await apiOldCourse.courseList(oldParams).then(oldRs=>{
if(oldRs.status==200 && oldRs.result.dataList.length > 0) { if(oldRs.status==200 && oldRs.result.dataList.length > 0) {
let list = that.filterConversion(oldRs.result.dataList); let list = that.filterConversion(oldRs.result.dataList);
list.name = list.name.replace(/<[^>]+>|&[^>]+;/g,"").trim();
data.push(...list); data.push(...list);
that.moreState = 1; that.moreState = 1;
}else{ }else{
@@ -700,10 +600,12 @@ export default {
.then(res => { .then(res => {
if(res.status == 200 && res.result.list.length>0){ if(res.status == 200 && res.result.list.length>0){
this.totalPages = res.result.totalPages; this.totalPages = res.result.totalPages;
let courseIds=[]; let courseIds=[];
res.result.list.forEach(item=>{ res.result.list.forEach(item=>{
item.name = this.$keywordActiveShow(item.name,this.course.keyword) item.name = this.$keywordActiveShow(item.name,this.course.keyword);
item.couretitle = this.$keywordActiveShow(item.name,this.course.keyword).replace(/<[^>]+>|&[^>]+;/g,"").trim();//去掉所有的html标签和&nbsp;之类的特殊符合
item.authorInfo={aid:'',name:'',orgInfo:'',avatar:'',code:''}; item.authorInfo={aid:'',name:'',orgInfo:'',avatar:'',code:''};
courseIds.push(item.id); courseIds.push(item.id);
if(item.isTop) { if(item.isTop) {
@@ -828,12 +730,6 @@ export default {
if (i == "type" && courseData[i] !== 0) { if (i == "type" && courseData[i] !== 0) {
courseData[i] = courseType(courseData[i]); courseData[i] = courseType(courseData[i]);
} }
if (i == "scenes") {
let name = this.sceneList.filter(item => {
return item.id === courseData[i];
});
courseData[i] = name[0].name;
}
if (i == "sysType1" || i == "sysType2" || i == "sysType3") { if (i == "sysType1" || i == "sysType2" || i == "sysType3") {
if(courseData[i] !== '0') { if(courseData[i] !== '0') {
courseData[i] = this.sysTypeName(courseData[i]); courseData[i] = this.sysTypeName(courseData[i]);

View File

@@ -16,7 +16,6 @@
<div> <div>
<div class="courseware-div" v-if="enrollStutas == 1" style="max-height: 400px;"> <div class="courseware-div" v-if="enrollStutas == 1" style="max-height: 400px;">
<course-image :course="courseInfo" class="courseware-img"></course-image> <course-image :course="courseInfo" class="courseware-img"></course-image>
<!-- <el-button type="warning" @click="submitEnroll" class="courseware-enroll-btn">报名后即可开始学习</el-button> -->
</div> </div>
<div class="courseware-div" v-else> <div class="courseware-div" v-else>
<div v-if="coursewareInfo.content.contentType == 10" style="position: relative;"> <div v-if="coursewareInfo.content.contentType == 10" style="position: relative;">
@@ -29,19 +28,16 @@
@onFullscreen="onFullscreen" @onFullscreen="onFullscreen"
@onPlayerEnded="onPlayerEnded"> @onPlayerEnded="onPlayerEnded">
</videoPlayer> </videoPlayer>
<!-- v-if="playerBoxShow" -->
<div class="player-box" v-if="playerBoxShow"> <div class="player-box" v-if="playerBoxShow">
<div class="player-praise"> <div class="player-praise">
<div @click="praiseContent" style="cursor: pointer;"> <div @click="praiseContent" style="cursor: pointer;">
<img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')" /> <img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')" />
<img class="icon-small" v-else :src="require('@/assets/images/icon/zhan.png')" /> <img class="icon-small" v-else :src="require('@/assets/images/icon/zhan.png')" />
<!-- {{ courseInfo.praises }} -->
<div style="color:#fff;cursor: pointer;"></div> <div style="color:#fff;cursor: pointer;"></div>
</div> </div>
<div style="margin-left: 15px;cursor: pointer;" @click="treadContent"> <div style="margin-left: 15px;cursor: pointer;" @click="treadContent">
<img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')" /> <img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')" />
<img class="icon-small" v-else :src="require('@/assets/images/icon/cai.png')" /> <img class="icon-small" v-else :src="require('@/assets/images/icon/cai.png')" />
<!-- {{ courseInfo.trampleCount }} -->
<div style="color:#fff;cursor: pointer;"></div> <div style="color:#fff;cursor: pointer;"></div>
</div> </div>
</div> </div>
@@ -112,7 +108,6 @@
</el-tabs> </el-tabs>
<div style="display: flex;justify-content: space-between;padding: 10px;align-items: center;"> <div style="display: flex;justify-content: space-between;padding: 10px;align-items: center;">
<div class="score"> <div class="score">
<!-- <el-rate disabled v-model="courseInfo.score" :max="5" :allow-half="true" show-score score-template="{value}"></el-rate> -->
<div v-if="enrollStutas == 1 && !scoreInfo.has"> <div v-if="enrollStutas == 1 && !scoreInfo.has">
<div v-if="courseInfo.score"> <div v-if="courseInfo.score">
<el-rate disabled v-model="courseInfo.score"></el-rate> <el-rate disabled v-model="courseInfo.score"></el-rate>
@@ -135,14 +130,14 @@
</div> </div>
<div style="display: flex;align-items: center;padding-top: 15px;"> <div style="display: flex;align-items: center;padding-top: 15px;">
<div @click="praiseContent" style="cursor: pointer;"> <div @click="praiseContent" style="cursor: pointer;">
<el-tooltip class="item" effect="light" :content="isPraise?'取消点赞':'点赞'" placement="top-start"> <el-tooltip class="item" effect="light" :content="isPraise?'取消点赞':'点赞'" placement="top-start" :visible-arrow="false" popper-class="text-tooltip">
<img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')"> <img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')">
<img class="icon-small" v-else :src="require('@/assets/images/icon/praise.png')"> <img class="icon-small" v-else :src="require('@/assets/images/icon/praise.png')">
</el-tooltip> </el-tooltip>
<span style="margin-left: 5px;color: #666666;font-size: 18px;">{{courseInfo.praises}}</span> <span style="margin-left: 5px;color: #666666;font-size: 18px;">{{courseInfo.praises}}</span>
</div> </div>
<div style="margin-left: 15px;cursor: pointer;" @click="treadContent"> <div style="margin-left: 15px;cursor: pointer;" @click="treadContent">
<el-tooltip class="item" effect="light" :content="isTrample?'取消踩':'踩'" placement="top-start"> <el-tooltip class="item" effect="light" :content="isTrample?'取消踩':'踩'" placement="top-start" :visible-arrow="false" popper-class="text-tooltip">
<img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')"> <img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')">
<img class="icon-small" v-else :src="require('@/assets/images/icon/trample.png')"> <img class="icon-small" v-else :src="require('@/assets/images/icon/trample.png')">
</el-tooltip> </el-tooltip>
@@ -155,47 +150,22 @@
<interactBar :readonly="enrollStutas==1" :type="1" :data="courseInfo" :views="false" :praises="false" :comments="false"></interactBar> <interactBar :readonly="enrollStutas==1" :type="1" :data="courseInfo" :views="false" :praises="false" :comments="false"></interactBar>
<div class="title title-index">{{courseInfo.name}}</div> <div class="title title-index">{{courseInfo.name}}</div>
<div class="study-count"><span class="num">{{courseInfo.studys}}人学习</span></div> <div class="study-count"><span class="num">{{courseInfo.studys}}人学习</span></div>
<!-- <div class="course-info-tools-btns">
<span style="color: #f8a114;font-size: 36px;">{{toScore(courseInfo.score)}}</span>
<span style="font-size: 14px;color: #787878;"></span>
</div> -->
<!-- <div class="label"><el-tag class="label-item" effect="plain">了解公司</el-tag></div> -->
<div class="label"><el-tag class="label-item" effect="plain">录播课</el-tag></div> <div class="label"><el-tag class="label-item" effect="plain">录播课</el-tag></div>
<div class="label" v-if="tags.length >0"> <div class="label" v-if="tags.length >0">
<el-tag class="label-item" effect="plain" v-for="(item, index) in tags" :key="index">{{item}}</el-tag> <el-tag class="label-item" effect="plain" v-for="(item, index) in tags" :key="index">{{item}}</el-tag>
<!-- <el-tag class="label-item" effect="plain">中心长</el-tag> -->
</div> </div>
<div v-if="enrollStutas != 2" class="score" style="padding-top: 135px;justify-content: flex-start;"> <div v-if="enrollStutas != 2" class="score" style="padding-top: 135px;justify-content: flex-start;">
<!-- <el-rate style="display: inline-block; " disabled v-model="courseInfo.score" score-template="{value}" show-score text-color="#ff8e00"></el-rate>
<span style="font-size: 14px;color: #f7ba2a;"></span> -->
<div v-if="courseInfo.score"> <div v-if="courseInfo.score">
<el-rate disabled v-model="courseInfo.score"></el-rate> <el-rate disabled v-model="courseInfo.score"></el-rate>
<span class="score-text">{{toScore(courseInfo.score)}}<span style="font-size: 14px;"></span></span> <span class="score-text">{{toScore(courseInfo.score)}}<span style="font-size: 14px;"></span></span>
</div> </div>
<div v-else class="score-no">未评分</div> <div v-else class="score-no">未评分</div>
<!-- <el-rate style="display: inline-block; " disabled v-model="courseInfo.score" text-color="#ff8e00"></el-rate>
<span style="font-size: 14px;color: #f7ba2a;">{{courseInfo.score}}</span> -->
</div> </div>
<!-- <div class="keyword"><el-tag class="label-item" effect="plain">质量</el-tag></div> -->
<!--资源归属是一共有三级这里只显示三级-->
<!-- <div class="study-count">资源归属{{courseInfo.resOwner}}</div> -->
<!-- <div class="btn-div" style="padding-top: 70px;">
<el-button class="btn" type="primary" v-if="enrollStutas == 1" @click="submitEnroll">立即报名</el-button>
</div> -->
<!-- 二维码 -->
<!-- <div class="qr-code" style="padding-top: 10px;">
<div id="qrcode" ref="qrcode" class="qrcode" ></div>
<div>手机扫码观看</div>
</div> -->
<!-- <div style="width: 100px;height:300px" v-if="courseInfo.device == 2 || courseInfo.device == 3"> -->
<img class="detail-img" v-show="!showQrcode && (courseInfo.device == 2 || courseInfo.device == 3)" @click="showQrcode = true" src="../../../assets/images/qr.png" alt="" srcset=""> <img class="detail-img" v-show="!showQrcode && (courseInfo.device == 2 || courseInfo.device == 3)" @click="showQrcode = true" src="../../../assets/images/qr.png" alt="" srcset="">
<div class="qr-code" v-show="showQrcode && ((courseInfo.device == 2 || courseInfo.device == 3))" style="padding-top: 10px;"> <div class="qr-code" v-show="showQrcode && ((courseInfo.device == 2 || courseInfo.device == 3))" style="padding-top: 10px;">
<div id="qrcode" ref="qrcode" class="qrcode" @click="showQrcode = false"></div> <div id="qrcode" ref="qrcode" class="qrcode" @click="showQrcode = false"></div>
<!-- <div style="margin-left: 27px">手机扫码观看</div> -->
</div> </div>
<!-- </div> -->
</el-col> </el-col>
<!-- 11 -->
</el-row> </el-row>
</el-card> </el-card>
<el-row :gutter="10"> <el-row :gutter="10">
@@ -233,12 +203,9 @@
<div class="teacher" v-for="(item, idx) in teachers" :key="idx" > <div class="teacher" v-for="(item, idx) in teachers" :key="idx" >
<div class="teacher-avator"> <div class="teacher-avator">
<el-avatar v-if="item.avatar !== ''" :src="item.avatar" shape="circle" :size="50"></el-avatar> <el-avatar v-if="item.avatar !== ''" :src="item.avatar" shape="circle" :size="50"></el-avatar>
<!-- <div class="teacher-text" v-if="item.avatar !== '' "></div> -->
<!-- <el-avatar v-if="item.avatar && item.avatar!=''" icon="el-icon-user" shape="square" :size="50"></el-avatar> -->
<div class="teacher-text" v-else> <div class="teacher-text" v-else>
<div v-if="sex === 1 "><img src="../../../../public/images/Avatarman.png" alt=""></div> <div v-if="sex === 1 "><img src="../../../../public/images/Avatarman.png" alt=""></div>
<div v-else><img src="../../../../public/images/Avatarwoman.png" alt=""></div> <div v-else><img src="../../../../public/images/Avatarwoman.png" alt=""></div>
</div> </div>
</div> </div>
<div class="teacher-info"> <div class="teacher-info">
@@ -264,23 +231,13 @@ import portalHeader from "@/components/PortalHeader.vue";
import comments from "@/components/Portal/comments.vue"; import comments from "@/components/Portal/comments.vue";
import portalFooter from "@/components/PortalFooter.vue"; import portalFooter from "@/components/PortalFooter.vue";
import interactBar from "@/components/Portal/interactBar.vue"; import interactBar from "@/components/Portal/interactBar.vue";
import apiCourse from "@/api/modules/course.js";
import apiCourseFile from "@/api/modules/courseFile.js"; import apiCourseFile from "@/api/modules/courseFile.js";
import apiCoursePortal from "@/api/modules/coursePortal.js"; import apiCoursePortal from "@/api/modules/coursePortal.js";
import apiUser from '@/api/system/user.js'; import apiUser from '@/api/system/user.js';
import exam from '@/components/Course/exam'; import exam from '@/components/Course/exam';
import homework from '@/components/Course/homework'; import homework from '@/components/Course/homework';
import assess from '@/components/Course/assess'; import assess from '@/components/Course/assess';
import { import {toScore,courseType, getType, numberToLetter, correctJudgment,userAvatarText} from "@/utils/tools.js";
formatDate,
resListMap,
toScore,
courseType,
getType,
numberToLetter,
correctJudgment,
userAvatarText
} from "@/utils/tools.js";
import apicourseStudy from "@/api/modules/courseStudy.js"; import apicourseStudy from "@/api/modules/courseStudy.js";
import apiVideoStudy from "@/api/modules/videoStudy.js"; import apiVideoStudy from "@/api/modules/videoStudy.js";
import apiCourseGrade from "@/api/modules/courseGrade.js"; import apiCourseGrade from "@/api/modules/courseGrade.js";
@@ -288,7 +245,6 @@ import apiPraises from "@/api/modules/praises.js";
import apiTrample from "@/api/modules/trample.js"; import apiTrample from "@/api/modules/trample.js";
import FileUpload from "@/components/FileUpload/index.vue"; import FileUpload from "@/components/FileUpload/index.vue";
import pdfPreview from "@/components/PdfPreview/index.vue"; import pdfPreview from "@/components/PdfPreview/index.vue";
// import {resOwnerIndexName} from '@/utils/type.js';
import { setTimeout } from "timers"; import { setTimeout } from "timers";
import videoPlayer from '@/components/VideoPlayer/index.vue'; import videoPlayer from '@/components/VideoPlayer/index.vue';
import audioPlayer from '@/components/AudioPlayer/index.vue'; import audioPlayer from '@/components/AudioPlayer/index.vue';
@@ -330,7 +286,6 @@ export default {
studyId: "", studyId: "",
tags: [], tags: [],
numberToLetter: numberToLetter, numberToLetter: numberToLetter,
// resOwnerListMap: resOwnerIndexName,
fileBaseUrl: this.$Constants.fileBaseUrl, fileBaseUrl: this.$Constants.fileBaseUrl,
blobUrl:'',//播放的文件地址新添加采用blob方式 blobUrl:'',//播放的文件地址新添加采用blob方式
getType: getType, getType: getType,
@@ -406,16 +361,13 @@ export default {
this.showQrimage(); this.showQrimage();
this.$watermark.set(this.userInfo.name+this.userInfo.loginName); this.$watermark.set(this.userInfo.name+this.userInfo.loginName);
this.loadResOwners(); this.loadResOwners();
let $this = this; let $this = this;
//页面只支取一次,所以先直接写在这里面 //页面只支取一次,所以先直接写在这里面
apiCoursePortal.detail(id).then(rs => { apiCoursePortal.detail(id).then(rs => {
if (rs.status == 200) { if (rs.status == 200) {
this.courseInfo = rs.result.course; this.courseInfo = rs.result.course;
// this.courseInfo.score = this.toScore(rs.result.course.score);
if(rs.result.course.tags != '') this.tags = rs.result.course.tags.split(","); if(rs.result.course.tags != '') this.tags = rs.result.course.tags.split(",");
this.teachers = rs.result.teachers; this.teachers = rs.result.teachers;
if(rs.result.teachers && rs.result.teachers.length > 0){ if(rs.result.teachers && rs.result.teachers.length > 0){
let userIds=[]; let userIds=[];
let ctoUsers=[]; let ctoUsers=[];
@@ -448,7 +400,6 @@ export default {
} }
//对url进行加密处理 //对url进行加密处理
$this.createPlayUrl(con.contentRefId,this.curriculumData.url); $this.createPlayUrl(con.contentRefId,this.curriculumData.url);
} else if (con.contentType == 40) { } else if (con.contentType == 40) {
//需要读取pdf的路径 //需要读取pdf的路径
apiCourseFile.detail($this.coursewareInfo.content.contentRefId).then(cfrs=>{ apiCourseFile.detail($this.coursewareInfo.content.contentRefId).then(cfrs=>{
@@ -461,12 +412,10 @@ export default {
$this.coursewareInfo.content.content=cfrs.result.filePath; $this.coursewareInfo.content.content=cfrs.result.filePath;
$this.curCFile=2; $this.curCFile=2;
} }
}else{ }else{
$this.$message.error('加载pdf课件文件失败'); $this.$message.error('加载pdf课件文件失败');
} }
}); });
//let url = this.fileBaseUrl + r.content;
}else if(con.contentType ==52){ }else if(con.contentType ==52){
if(con.content.startsWith('\{')){ if(con.content.startsWith('\{')){
this.conLink=JSON.parse(con.content); this.conLink=JSON.parse(con.content);
@@ -507,9 +456,7 @@ export default {
let nowDate=new Date(); let nowDate=new Date();
let ctime=parseInt(nowDate.getTime()/1000); let ctime=parseInt(nowDate.getTime()/1000);
let beforeUrl=parseInt(nowDate.getTime()/1000)+'/'+fid; let beforeUrl=parseInt(nowDate.getTime()/1000)+'/'+fid;
//console.log(beforeUrl,'beforeUrl');
let urlSign=encodeURIComponent(encrypt(beforeUrl)); let urlSign=encodeURIComponent(encrypt(beforeUrl));
//console.log(urlSign,'urlSign');
cookies.set('PLAYSIGN_TIME', ctime);//写客户端的cookie保存 cookies.set('PLAYSIGN_TIME', ctime);//写客户端的cookie保存
//以下判断是为了区分本地环境和服务器环境 //以下判断是为了区分本地环境和服务器环境
if(process.env.NODE_ENV == 'development'){ if(process.env.NODE_ENV == 'development'){
@@ -524,20 +471,20 @@ export default {
// this.qrcode = this.webBaseUrl+'/mobile/pages/resource/microDetail?id='+this.courseInfo.id; // this.qrcode = this.webBaseUrl+'/mobile/pages/resource/microDetail?id='+this.courseInfo.id;
urlPre='https://u.boe.com/m?returnUrl=https://u.boe.com/mobile/pages/login/loading?returnUrl='; urlPre='https://u.boe.com/m?returnUrl=https://u.boe.com/mobile/pages/login/loading?returnUrl=';
this.qrcode =urlPre+ '/pages/resource/microDetail?id='+this.courseInfo.id; this.qrcode =urlPre+ '/pages/resource/microDetail?id='+this.courseInfo.id;
//console.log(this.qrcode,'qrcode');
this.$nextTick(() => { this.$nextTick(() => {
this.crateQrcode(); this.crateQrcode();
}); });
}, },
crateQrcode(){ crateQrcode(){
this.qr = new QRCode('qrcode', { this.qr = new QRCode('qrcode', {
width: 80, width: 150,
height: 80, // 高度 height: 150, // 高度
text: this.qrcode // 二维码内容 text: this.qrcode // 二维码内容
// render: 'canvas' // 设置渲染方式(有两种方式 table和canvas默认是canvas // render: 'canvas' // 设置渲染方式(有两种方式 table和canvas默认是canvas
// background: '#f0f' // background: '#f0f'
// foreground: '#ff0' // foreground: '#ff0'
}); });
this.qr._el.title = '';
}, },
...mapActions({ ...mapActions({
getResOwnerTree:'resOwner/getResOwnerTree', getResOwnerTree:'resOwner/getResOwnerTree',
@@ -632,11 +579,9 @@ export default {
this.playerBoxShow = false; this.playerBoxShow = false;
//console.log("开始播放"); //console.log("开始播放");
this.isAppendTime=false; this.isAppendTime=false;
//视频类的内容,开始播放时才会记录完成情况 //视频类的内容,开始播放时才会记录完成情况
//2022-05-24修改判断播放的 //2022-05-24修改判断播放的
let $this=this; let $this=this;
//console.log(this.curriculumData,'this.curriculumData');
//完成类型 completeSetup 0表默认打开后5秒算学完1表按进度2表按时间 //完成类型 completeSetup 0表默认打开后5秒算学完1表按进度2表按时间
//完成值(非默认情况下起作用) setupTage //完成值(非默认情况下起作用) setupTage
if(!$this.coursewareInfo.finish){ if(!$this.coursewareInfo.finish){
@@ -675,7 +620,6 @@ export default {
if(!completeSecond){ if(!completeSecond){
completeSecond=5;//如果没有就采用默认的时间了 completeSecond=5;//如果没有就采用默认的时间了
} }
if(completeType>0 && !this.coursewareInfo.finish){ //因为1按进度2按时长都是计算时间所以这里直接大于0处理 if(completeType>0 && !this.coursewareInfo.finish){ //因为1按进度2按时长都是计算时间所以这里直接大于0处理
if(completeType==1){ if(completeType==1){
let finishPercent=this.curriculumData.setupTage; let finishPercent=this.curriculumData.setupTage;
@@ -689,7 +633,6 @@ export default {
this.finishStudyItem(); this.finishStudyItem();
} }
} }
} }
//以下是每10秒记录一次学习时长 //以下是每10秒记录一次学习时长
let saveTime=Math.floor(intTime%10); let saveTime=Math.floor(intTime%10);
@@ -710,14 +653,12 @@ export default {
}, },
audioPlaying(item,currentTime){ audioPlaying(item,currentTime){
let intTime=parseInt(currentTime);//秒 let intTime=parseInt(currentTime);//秒
//console.log("当前播放时间="+item+',currentTime='+intTime);
//判断是否完成 //判断是否完成
let completeType=this.curriculumData.completeSetup; let completeType=this.curriculumData.completeSetup;
let completeSecond=this.curriculumData.second; let completeSecond=this.curriculumData.second;
if(!completeSecond){ if(!completeSecond){
completeSecond=5;//如果没有就采用默认的时间了 completeSecond=5;//如果没有就采用默认的时间了
} }
if(completeType>0 && !this.coursewareInfo.finish){ //因为1按进度2按时长都是计算时间所以这里直接大于0处理 if(completeType>0 && !this.coursewareInfo.finish){ //因为1按进度2按时长都是计算时间所以这里直接大于0处理
if(completeType==1){ if(completeType==1){
let finishPercent=this.curriculumData.setupTage; let finishPercent=this.curriculumData.setupTage;
@@ -769,7 +710,6 @@ export default {
}, },
audioEnd(){ audioEnd(){
// this.playerBoxShow = true; // this.playerBoxShow = true;
//console.log("播放结束");
if(!this.coursewareInfo.finish){ if(!this.coursewareInfo.finish){
this.finishStudyItem(); this.finishStudyItem();
} }
@@ -881,7 +821,6 @@ export default {
//首先从本地读取 //首先从本地读取
let duration=studyUtil.getStudyDuration(); let duration=studyUtil.getStudyDuration();
//追加学习时间 //追加学习时间
let $this = this; let $this = this;
if(this.appendStartTime == null) { if(this.appendStartTime == null) {
@@ -892,14 +831,10 @@ export default {
} }
return; return;
} }
//当前进行的时间 //当前进行的时间
let now = new Date(); let now = new Date();
let m = now.getTime() - this.appendStartTime.getTime(); //相差的毫秒数 let m = now.getTime() - this.appendStartTime.getTime(); //相差的毫秒数
let sen = parseInt(m / 1000); //计算秒数 let sen = parseInt(m / 1000); //计算秒数
//console.log(duration,'duration')
//console.log(sen,'sen')
duration=duration+sen; duration=duration+sen;
if(flag){ if(flag){
//这个时候才进行存储 ,否则只能是存储在本地 //这个时候才进行存储 ,否则只能是存储在本地
@@ -942,14 +877,12 @@ export default {
if(res.result.signup) { if(res.result.signup) {
//this.bootTabActive = 'commnets';//系统自动报名,这里不进行切换了 //this.bootTabActive = 'commnets';//系统自动报名,这里不进行切换了
this.studyId = res.result.studyId; //设置学习id this.studyId = res.result.studyId; //设置学习id
//需要判断此内容是否已学习完成,如果已学习完成,不需要再请不说了 //需要判断此内容是否已学习完成,如果已学习完成,不需要再请不说了
res.result.contents.forEach(con => { res.result.contents.forEach(con => {
if (con.contentId == $this.coursewareInfo.content.id) { if (con.contentId == $this.coursewareInfo.content.id) {
$this.coursewareInfo.studyItemId=con.id; $this.coursewareInfo.studyItemId=con.id;
$this.coursewareInfo.status=con.status; $this.coursewareInfo.status=con.status;
$this.coursewareInfo.progress=con.progress; $this.coursewareInfo.progress=con.progress;
if(con.contentType==10 || con.contentType==20){ if(con.contentType==10 || con.contentType==20){
if(con.progress==100 || con.status==9){ if(con.progress==100 || con.status==9){
$this.coursewareInfo.finish = true; $this.coursewareInfo.finish = true;
@@ -959,7 +892,6 @@ export default {
}else{ }else{
$this.coursewareInfo.finish = true; //课件已学习 $this.coursewareInfo.finish = true; //课件已学习
} }
if(con.lastStudyTime){ if(con.lastStudyTime){
//如果上次课件已经播放完成,此处应该是$this.coursewareInfo.content.duration //如果上次课件已经播放完成,此处应该是$this.coursewareInfo.content.duration
//也就是从头开开始 //也就是从头开开始
@@ -1027,7 +959,6 @@ export default {
if (rs.status == 200 && rs.result) { if (rs.status == 200 && rs.result) {
this.scoreInfo.has = true; this.scoreInfo.has = true;
} }
//console.log(rs.result,'rs.result');
}); });
//} //}
apiPraises.has(1, this.courseInfo.id).then(rs => { apiPraises.has(1, this.courseInfo.id).then(rs => {
@@ -1182,12 +1113,8 @@ export default {
background: none; background: none;
border: none; border: none;
} }
.player-box{ .player-box{
position: absolute; position: absolute;
// top: 62px;
// left: 184px;
width: 300px; width: 300px;
left: 50%; left: 50%;
top: 50%; top: 50%;
@@ -1209,24 +1136,10 @@ export default {
} }
} }
::v-deep .el-tabs__nav-wrap::after { ::v-deep .el-tabs__nav-wrap::after {
// content: "";
// position: absolute;
// left: 0;
// bottom: 0;
// width: 100%;
// height: 2px;
background-color: #fff; background-color: #fff;
// z-index: 1;
} }
::v-deep .el-tabs__nav-wrap::after { ::v-deep .el-tabs__nav-wrap::after {
// content: "";
// position: absolute;
// left: 0;
// bottom: 0;
// width: 100%;
// height: 2px;
background-color: #fff; background-color: #fff;
// z-index: 1;
} }
.qrcode{ .qrcode{
display: inline-block; display: inline-block;
@@ -1239,16 +1152,7 @@ export default {
} }
} }
.ref-score{ .ref-score{
// background: #e4e4e4;
// width: 64px;
// height: 32px;
// border-radius: 17px;
// line-height: 32px;
// // opacity: 0.24;
// color: #000;
// font-size: 14px;
// border: none;
// text-align: center;
} }
.portal-content ::v-deep .el-rate__icon{ .portal-content ::v-deep .el-rate__icon{
font-size: 24px !important; font-size: 24px !important;
@@ -1391,13 +1295,6 @@ export default {
transform: rotate(180deg); transform: rotate(180deg);
} }
} }
// margin-bottom: 50px;
// line-height: 20px;
// .el-link{
// font-size: 30px;
// color: #70a5f4;
// margin: 0 30px;
// }
} }
} }
} }
@@ -1415,9 +1312,7 @@ export default {
color: #FFB30F ; color: #FFB30F ;
font-family: "Arial"; font-family: "Arial";
margin-left: 23px; margin-left: 23px;
// font-weight: 600;
} }
// margin-bottom: 19px;
.score-no{ .score-no{
color: #FFB30F; color: #FFB30F;
padding: 5px 0; padding: 5px 0;

View File

@@ -132,14 +132,14 @@
</div> </div>
<div style="display: flex;justify-content: flex-end;cursor: pointer;"> <div style="display: flex;justify-content: flex-end;cursor: pointer;">
<div @click="praiseContent"> <div @click="praiseContent">
<el-tooltip class="item" effect="light" :content="isPraise?'取消点赞':'点赞'" placement="top-start"> <el-tooltip class="item" effect="light" :content="isPraise?'取消点赞':'点赞'" placement="top-start" :visible-arrow="false" popper-class="text-tooltip">
<img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')" /> <img class="icon-small" v-if="isPraise" :src="require('@/assets/images/icon/praise-active.png')" />
<img class="icon-small" v-else :src="require('@/assets/images/icon/praise.png')" /> <img class="icon-small" v-else :src="require('@/assets/images/icon/praise.png')" />
</el-tooltip> </el-tooltip>
{{ courseInfo.praises }} {{ courseInfo.praises }}
</div> </div>
<div style="margin-left: 15px;" @click="treadContent"> <div style="margin-left: 15px;" @click="treadContent">
<el-tooltip class="item" effect="light" :content="isTrample?'取消踩':'踩'" placement="top-start"> <el-tooltip class="item" effect="light" :content="isTrample?'取消踩':'踩'" placement="top-start" :visible-arrow="false" popper-class="text-tooltip">
<img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')" /> <img class="icon-small" v-if="isTrample" :src="require('@/assets/images/icon/trample-active.png')" />
<img class="icon-small" v-else :src="require('@/assets/images/icon/trample.png')" /> <img class="icon-small" v-else :src="require('@/assets/images/icon/trample.png')" />
</el-tooltip> </el-tooltip>