mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-13 21:06:42 +08:00
Merge remote-tracking branch 'origin/stat' into stat
This commit is contained in:
@@ -10,7 +10,7 @@ VUE_APP_BASE_API = '/systemapi'
|
|||||||
VUE_APP_BOE_BASE_API = '/uboeApi'
|
VUE_APP_BOE_BASE_API = '/uboeApi'
|
||||||
|
|
||||||
# 资源位的api
|
# 资源位的api
|
||||||
VUE_APP_CESOURCE_BASE_API = '/subgroupApi'
|
VUE_APP_CESOURCE_BASE_API = '/socialApi'
|
||||||
|
|
||||||
# 事件的api
|
# 事件的api
|
||||||
VUE_APP_STAT_BASE_API = '/statApi'
|
VUE_APP_STAT_BASE_API = '/statApi'
|
||||||
|
|||||||
BIN
public/images/orgaimg.png
Normal file
BIN
public/images/orgaimg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 567 B |
BIN
public/images/specimg.png
Normal file
BIN
public/images/specimg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 597 B |
@@ -1,16 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<Remark :fixed="false">
|
|
||||||
<ul>
|
|
||||||
<li>class名为problem的dom(即时间)无法直接垂直居中</li>
|
|
||||||
<li>状态有草稿、待审核、未通过、已通过、已发布</li>
|
|
||||||
<li>状态为已发布时才显示点赞收藏图标</li>
|
|
||||||
<li>点击编辑时没有跳转到新页面</li>
|
|
||||||
</ul>
|
|
||||||
</Remark>
|
|
||||||
<div class="article-list" v-for="(item, idx) in items" :key="idx" @click="jumpDetail(item)">
|
<div class="article-list" v-for="(item, idx) in items" :key="idx" @click="jumpDetail(item)">
|
||||||
<div class="article-info">
|
<div class="article-info">
|
||||||
<div class="article-info-title one-line-ellipsis"
|
<div class="article-info-title one-line-ellipsis"
|
||||||
>
|
>
|
||||||
<!-- <span v-if="item.enabled" :class="classFilter(item.status).className">{{classFilter(item.status).text}}</span> -->
|
<!-- <span v-if="item.enabled" :class="classFilter(item.status).className">{{classFilter(item.status).text}}</span> -->
|
||||||
<!-- <span v-else class="article-status8">【已下架】</span> -->
|
<!-- <span v-else class="article-status8">【已下架】</span> -->
|
||||||
@@ -53,6 +45,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import { mapGetters } from "vuex";
|
||||||
import interactBar from '@/components/Portal/interactBar.vue';
|
import interactBar from '@/components/Portal/interactBar.vue';
|
||||||
import apiArticle from '@/api/modules/article.js';
|
import apiArticle from '@/api/modules/article.js';
|
||||||
import editItems from '@/components/Article/editItems.vue';
|
import editItems from '@/components/Article/editItems.vue';
|
||||||
@@ -60,6 +53,9 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
interactBar,editItems
|
interactBar,editItems
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters(["userInfo"]),
|
||||||
|
},
|
||||||
name: 'articleItems',
|
name: 'articleItems',
|
||||||
props: {
|
props: {
|
||||||
items: {
|
items: {
|
||||||
@@ -78,7 +74,7 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
filters:{
|
filters:{
|
||||||
sysCreateTimeFilter(item){
|
sysCreateTimeFilter(item){
|
||||||
return item.split(' ')[0]
|
return item.split(' ')[0]
|
||||||
@@ -146,26 +142,35 @@ export default {
|
|||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
})
|
}).then(() => {
|
||||||
|
apiArticle.del(item.id).then(res => {
|
||||||
.then(() => {
|
|
||||||
apiArticle
|
|
||||||
.del(item.id)
|
|
||||||
.then(res => {
|
|
||||||
if (res.status == 200) {
|
if (res.status == 200) {
|
||||||
this.$emit('update',true)
|
this.$emit('update',true)
|
||||||
this.$message.success('删除成功');
|
this.$message.success('删除成功');
|
||||||
console.log('shanchushanchu')
|
//发送删除事件
|
||||||
|
let event = {
|
||||||
|
key: "DeleteArticle",//后台的事件key 发布文章且审核通过
|
||||||
|
title: "删除文章",//事件的标题
|
||||||
|
parameters:"",//用户自定义参数 name:value,name:value
|
||||||
|
content: "删除文章",//事件的内容
|
||||||
|
source:'page',
|
||||||
|
objId: item.id,//关联的id
|
||||||
|
objType: "2",//关联的类型
|
||||||
|
objInfo: item.title,
|
||||||
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
|
status: 1 //状态,直接写1
|
||||||
|
}
|
||||||
|
this.$store.dispatch("userTrigger", event);
|
||||||
|
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
this.$message.error('删除失败');
|
this.$message.error('删除失败:'+res.message);
|
||||||
}
|
}
|
||||||
})
|
}).catch(err => {
|
||||||
.catch(err => {
|
|
||||||
this.$message.error('删除失败');
|
this.$message.error('删除失败');
|
||||||
});
|
});
|
||||||
})
|
}).catch(() => {});
|
||||||
.catch(() => {});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -275,7 +280,7 @@ export default {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
// font-weight: 400;
|
// font-weight: 400;
|
||||||
|
|
||||||
// height: 40px;
|
// height: 40px;
|
||||||
margin-top: 7px;
|
margin-top: 7px;
|
||||||
// line-height: 40px;
|
// line-height: 40px;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
show-word-limit
|
show-word-limit
|
||||||
v-model="inputValue"
|
v-model="inputValue"
|
||||||
maxlength="800"
|
maxlength="800"
|
||||||
placeholder="写下您的评论(800字以内),可以@案主哦~"
|
placeholder="写下您的评论~"
|
||||||
></el-input>
|
></el-input>
|
||||||
|
|
||||||
|
|
||||||
@@ -793,6 +793,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
.publish-button{
|
.publish-button{
|
||||||
// line-height: 30px;
|
// line-height: 30px;
|
||||||
padding-top: 7px;
|
padding-top: 7px;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
</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="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" :visible-arrow="false" popper-class="text-tooltip">
|
<el-tooltip effect="light" content="点赞" placement="top" :visible-arrow="false" popper-class="text-tooltip">
|
||||||
<svg-icon style="margin-right: 0;font-size: 14px;" :icon-class="isPraise?'praised':'like'"></svg-icon>
|
<svg-icon style="margin-right: 0;font-size: 14px;" :icon-class="isPraise?'praised':'like'"></svg-icon>
|
||||||
@@ -336,6 +336,21 @@ export default {
|
|||||||
if(this.unicom) {
|
if(this.unicom) {
|
||||||
this.$store.dispatch("unicomPraises",false)
|
this.$store.dispatch("unicomPraises",false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let event = {
|
||||||
|
key: "cancelPraise",//
|
||||||
|
title: "取消点赞",//事件的标题
|
||||||
|
parameters:"author:"+this.data.sysCreateAid,//用户自定义参数 name:value,name:value
|
||||||
|
content: "取消点赞"+this.data.title,//事件的内容
|
||||||
|
objId: this.data.id,//关联的id
|
||||||
|
objType: this.type,//关联的类型
|
||||||
|
objInfo: this.data.title,
|
||||||
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
|
status: 1 //状态,直接写1
|
||||||
|
}
|
||||||
|
this.$store.dispatch("userTrigger", event);
|
||||||
|
|
||||||
this.$message({message:'取消点赞',type:'success'})
|
this.$message({message:'取消点赞',type:'success'})
|
||||||
}else{
|
}else{
|
||||||
console.log('取消失败:'+res.message);
|
console.log('取消失败:'+res.message);
|
||||||
@@ -362,7 +377,7 @@ export default {
|
|||||||
let event = {
|
let event = {
|
||||||
key: "Praise",//后台的事件key 发布文章且审核通过
|
key: "Praise",//后台的事件key 发布文章且审核通过
|
||||||
title: "点赞",//事件的标题
|
title: "点赞",//事件的标题
|
||||||
parameters:"",//用户自定义参数 name:value,name:value
|
parameters:"author:"+this.data.sysCreateAid,//用户自定义参数 name:value,name:value
|
||||||
content: "点赞"+this.data.title,//事件的内容
|
content: "点赞"+this.data.title,//事件的内容
|
||||||
objId: this.data.id,//关联的id
|
objId: this.data.id,//关联的id
|
||||||
objType: this.type,//关联的类型
|
objType: this.type,//关联的类型
|
||||||
@@ -552,7 +567,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let event = {
|
let event = {
|
||||||
key: "Share",//后台的事件key
|
key: "Share",//后台的事件key
|
||||||
title: "被分享",//事件的标题
|
title: "被分享",//事件的标题
|
||||||
parameters:"",//用户自定义参数 name:value,name:value
|
parameters:"",//用户自定义参数 name:value,name:value
|
||||||
content: '被分享',//事件的内容
|
content: '被分享',//事件的内容
|
||||||
|
|||||||
@@ -164,13 +164,13 @@ export default {
|
|||||||
this.feedbackDlgShow=false;
|
this.feedbackDlgShow=false;
|
||||||
|
|
||||||
let event = {
|
let event = {
|
||||||
key: "Feedback",//后台的事件key
|
key: "Feedback",//后台的事件key
|
||||||
title: "意见反馈",//事件的标题
|
title: "意见反馈",//事件的标题
|
||||||
parameters:"",//用户自定义参数 name:value,name:value
|
parameters:"",//用户自定义参数 name:value,name:value
|
||||||
content: '意见反馈',//事件的内容
|
content: '意见反馈',//事件的内容
|
||||||
// objId: this.data.id,//关联的id
|
objId: res.result.id,//关联的id
|
||||||
// objType: this.type,//关联的类型
|
objType:'99',//关联的类型
|
||||||
// objInfo: this.data.title,
|
objInfo: "意见反馈",
|
||||||
aid: this.userInfo.aid, //当前登录人的id
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
aname: this.userInfo.name,//当前人的姓名
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
status: 1 //状态,直接写1
|
status: 1 //状态,直接写1
|
||||||
|
|||||||
@@ -74,7 +74,7 @@
|
|||||||
<el-badge class="person-action-index message-count" :value="userMsg" :hidden="userMsg == 0">
|
<el-badge class="person-action-index message-count" :value="userMsg" :hidden="userMsg == 0">
|
||||||
<el-tooltip content="消息" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
|
<el-tooltip content="消息" placement="bottom" effect="light" :visible-arrow="false" popper-class="text-tooltip">
|
||||||
<el-link type="primary" :href="`${webBaseUrl}/message/center/index`" :underline="false">
|
<el-link type="primary" :href="`${webBaseUrl}/message/center/index`" :underline="false">
|
||||||
<svg-icon v-if="current == 'qa'" style="margin-right: 0;font-size:26px;" icon-class="message"></svg-icon>
|
<svg-icon v-if="current == 'qa' || 'index'" style="margin-right: 0;font-size:26px;" icon-class="message"></svg-icon>
|
||||||
<svg-icon v-else style="margin-right: 0;font-size:26px;" icon-class="messfff"></svg-icon>
|
<svg-icon v-else style="margin-right: 0;font-size:26px;" icon-class="messfff"></svg-icon>
|
||||||
</el-link>
|
</el-link>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<span v-if="item.status==0||item.status==2" style="color: red">{{statusText(item.status)}}</span>
|
<span v-if="item.status==0||item.status==2" style="color: red">{{statusText(item.status)}}</span>
|
||||||
<!-- <div class="article-info-tools-btns"> -->
|
<!-- <div class="article-info-tools-btns"> -->
|
||||||
<!-- <interactBar :data="item" :type="0" class="test" :answers="true" :comments="false" :shares="false" :views="false"></interactBar> -->
|
<!-- <interactBar :data="item" :type="0" class="test" :answers="true" :comments="false" :shares="false" :views="false"></interactBar> -->
|
||||||
|
|
||||||
<div class="button-cla"><interactBar nodeWidth="60px" :readonly="true" :type="4" :data="item" :shares="true" :comments="false" :answers="true" :clickAnswer="true" :views="false"></interactBar></div>
|
<div class="button-cla"><interactBar nodeWidth="60px" :readonly="true" :type="4" :data="item" :shares="true" :comments="false" :answers="true" :clickAnswer="true" :views="false"></interactBar></div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <el-link icon="el-icon-chat-line-round" class="article-info-tools-btn" >回答57</el-link>
|
<!-- <el-link icon="el-icon-chat-line-round" class="article-info-tools-btn" >回答57</el-link>
|
||||||
@@ -78,12 +78,16 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
// import interactBar from '@/components/Portal/interactBar';
|
// import interactBar from '@/components/Portal/interactBar';
|
||||||
|
import { mapGetters } from "vuex";
|
||||||
import imageUpload from '@/components/ImageUpload/index.vue';
|
import imageUpload from '@/components/ImageUpload/index.vue';
|
||||||
import apiQa from '@/api/modules/qa.js'
|
import apiQa from '@/api/modules/qa.js'
|
||||||
import interactBar from '@/components/Portal/interactBar.vue';
|
import interactBar from '@/components/Portal/interactBar.vue';
|
||||||
export default {
|
export default {
|
||||||
name: 'articleItems',
|
name: 'articleItems',
|
||||||
components: { imageUpload,interactBar },
|
components: { imageUpload,interactBar },
|
||||||
|
computed: {
|
||||||
|
...mapGetters(["userInfo"]),
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
items: {
|
items: {
|
||||||
//name,
|
//name,
|
||||||
@@ -200,7 +204,22 @@ export default {
|
|||||||
apiQa.del(item.id).then(res=>{
|
apiQa.del(item.id).then(res=>{
|
||||||
if(res.status==200){
|
if(res.status==200){
|
||||||
this.$message({ type: 'success', message: '删除成功!' });
|
this.$message({ type: 'success', message: '删除成功!' });
|
||||||
this.$emit('sure',true)
|
this.$emit('sure',true);
|
||||||
|
//发送删除问题事件
|
||||||
|
let event = {
|
||||||
|
key: "DeleteQuestion",//
|
||||||
|
title: "删除提问",//事件的标题
|
||||||
|
parameters:"author:"+item.sysCreateAid,//作者参数
|
||||||
|
content: "删除提问【"+item.title+"】",//事件的内容
|
||||||
|
source:'page',
|
||||||
|
objId: item.id,//关联的id
|
||||||
|
objType: "2",//关联的类型
|
||||||
|
objInfo: item.title,
|
||||||
|
aid: this.userInfo.aid, //当前登录人的id
|
||||||
|
aname: this.userInfo.name,//当前人的姓名
|
||||||
|
status: 1 //状态,直接写1
|
||||||
|
}
|
||||||
|
this.$store.dispatch("userTrigger", event);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
<!-- </div> -->
|
<!-- </div> -->
|
||||||
<div>
|
<div>
|
||||||
<el-badge :value="userMsg" :hidden="userMsg==0" class="message-count">
|
<el-badge :value="userMsg" :hidden="userMsg==0" class="message-count">
|
||||||
<el-link type="primary" :href="`${webBaseUrl}/message/center/index`" target="_blank" :underline="false">
|
<el-link type="primary" :href="`${webBaseUrl}/message/center/index`" :underline="false">
|
||||||
<svg-icon style="margin-right: 0;font-size:26px;" icon-class="messfff"></svg-icon>
|
<svg-icon style="margin-right: 0;font-size:26px;" icon-class="messfff"></svg-icon>
|
||||||
</el-link>
|
</el-link>
|
||||||
</el-badge>
|
</el-badge>
|
||||||
@@ -126,6 +126,7 @@ export default {
|
|||||||
components:{InterestCollection,GuideBox},
|
components:{InterestCollection,GuideBox},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
isTiao:false,
|
||||||
interestShow:false,
|
interestShow:false,
|
||||||
checked:true,
|
checked:true,
|
||||||
signInShow: false,
|
signInShow: false,
|
||||||
@@ -430,7 +431,7 @@ export default {
|
|||||||
color:#409EFF;
|
color:#409EFF;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-button{
|
.el-button{
|
||||||
margin-top: 1px;
|
margin-top: 1px;
|
||||||
// margin-left: 20px;
|
// margin-left: 20px;
|
||||||
|
|||||||
@@ -249,9 +249,10 @@ export default {
|
|||||||
this.setTime = setTimeout(()=>{
|
this.setTime = setTimeout(()=>{
|
||||||
event.key = 'ReadArticle';
|
event.key = 'ReadArticle';
|
||||||
event.title = "阅读文章";
|
event.title = "阅读文章";
|
||||||
|
event.parameters='second:60';//增加60秒的学习时长
|
||||||
event.content = "阅读了文章"
|
event.content = "阅读了文章"
|
||||||
$this.$store.dispatch("userTrigger", event);
|
$this.$store.dispatch("userTrigger", event);
|
||||||
},2000);
|
},61000);//1分钟后记录
|
||||||
//}
|
//}
|
||||||
}else{
|
}else{
|
||||||
this.noData = false;
|
this.noData = false;
|
||||||
|
|||||||
@@ -13,7 +13,10 @@
|
|||||||
<span class="crumbs-line">/</span>
|
<span class="crumbs-line">/</span>
|
||||||
<span class="crumbs-last">案例详情</span>
|
<span class="crumbs-last">案例详情</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="title">{{ caseDetail.title }}</div>
|
<div class="title">
|
||||||
|
<h5>{{ caseDetail.title }}</h5>
|
||||||
|
<span style="text-align: right;" v-if="caseDetail.sysCreateTime"> <i class="el-icon-time"></i> {{ caseDetail.sysCreateTime.substring(0,10) }}</span>
|
||||||
|
</div>
|
||||||
<div class="label">
|
<div class="label">
|
||||||
<author :onlyAvatar="true" :avatar="authorInfo.avatar" :sex="authorInfo.sex" ></author>
|
<author :onlyAvatar="true" :avatar="authorInfo.avatar" :sex="authorInfo.sex" ></author>
|
||||||
<span>案主:{{ authorInfo.name }} ({{authorInfo.orgInfo}})</span>
|
<span>案主:{{ authorInfo.name }} ({{authorInfo.orgInfo}})</span>
|
||||||
@@ -21,7 +24,6 @@
|
|||||||
<span>工号:{{ authorInfo.code }}</span>
|
<span>工号:{{ authorInfo.code }}</span>
|
||||||
<span>组织:{{ authorInfo.orgInfo }} </span> -->
|
<span>组织:{{ authorInfo.orgInfo }} </span> -->
|
||||||
<span> {{authorInfo.sign}}</span>
|
<span> {{authorInfo.sign}}</span>
|
||||||
<span style="text-align: right;" v-if="caseDetail.sysCreateTime">{{ caseDetail.sysCreateTime.substring(0,10) }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="label">
|
<!-- <div class="label">
|
||||||
<span style="margin-left:0px;" v-if="caseDetail.sysCreateTime">{{ caseDetail.sysCreateTime.substring(0,10) }}</span>
|
<span style="margin-left:0px;" v-if="caseDetail.sysCreateTime">{{ caseDetail.sysCreateTime.substring(0,10) }}</span>
|
||||||
@@ -529,6 +531,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|
||||||
.case-banner{
|
.case-banner{
|
||||||
height: 240px;
|
height: 240px;
|
||||||
background: url('/images/case-banner.png');
|
background: url('/images/case-banner.png');
|
||||||
@@ -630,11 +633,21 @@ export default {
|
|||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding: 50px;
|
padding: 50px;
|
||||||
.title {
|
.title {
|
||||||
font-size: 20px;
|
display: flex;
|
||||||
line-height: 45px;
|
width: 100%;
|
||||||
font-weight: 600;
|
h5{
|
||||||
margin: 10px 0px;
|
margin: 0;
|
||||||
word-break:break-all;
|
font-size: 20px;
|
||||||
|
line-height: 45px;
|
||||||
|
font-weight: 600;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
span{
|
||||||
|
margin-left: auto;
|
||||||
|
line-height: 45px;
|
||||||
|
color: #999999;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.label {
|
.label {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
@@ -802,6 +815,7 @@ export default {
|
|||||||
.aligh-title{
|
.aligh-title{
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
|
|
||||||
}
|
}
|
||||||
.ranking-data {
|
.ranking-data {
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
|
|||||||
@@ -16,7 +16,8 @@
|
|||||||
<div class="search-item">
|
<div class="search-item">
|
||||||
<div style="margin-top:10px; display: flex;">
|
<div style="margin-top:10px; display: flex;">
|
||||||
<div style="line-height: 25px;padding-right: 10px;">
|
<div style="line-height: 25px;padding-right: 10px;">
|
||||||
<span class="item-title" style="padding-right: 5px;">组织领域</span>
|
<img class="orgaicon" src="../../../../public/images/orgaimg.png" alt="">
|
||||||
|
<span class="item-title" >组织领域</span>
|
||||||
<span class="item-line"></span>
|
<span class="item-line"></span>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex:1;">
|
<div style="flex:1;">
|
||||||
@@ -32,7 +33,8 @@
|
|||||||
|
|
||||||
<div style="margin-top:10px; display: flex;">
|
<div style="margin-top:10px; display: flex;">
|
||||||
<div style="line-height: 25px;padding-right: 10px;">
|
<div style="line-height: 25px;padding-right: 10px;">
|
||||||
<span class="item-title" style="padding-right: 5px;">专业分类</span>
|
<img class="orgaicon" src="../../../../public/images/specimg.png" alt="">
|
||||||
|
<span class="item-title" >专业分类</span>
|
||||||
<span class="item-line"></span>
|
<span class="item-line"></span>
|
||||||
</div>
|
</div>
|
||||||
<div style="flex:1" id="searchBox">
|
<div style="flex:1" id="searchBox">
|
||||||
@@ -714,6 +716,16 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.orgaicon{
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-right: 8px;
|
||||||
|
img{
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
.course-resources{
|
.course-resources{
|
||||||
margin-top: 26px;
|
margin-top: 26px;
|
||||||
img{
|
img{
|
||||||
@@ -834,37 +846,27 @@ export default {
|
|||||||
//box-shadow: none!important;
|
//box-shadow: none!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-title {
|
::v-deep.item-title {
|
||||||
margin: 10px 10px 10px 0;
|
margin: 15px 10px 10px 0;
|
||||||
//font-size: 14px;
|
font-size: 16px !important;
|
||||||
font-weight: 600;
|
font-weight: 400;
|
||||||
color: #333333;
|
color: #6B7C85;
|
||||||
// line-height: 20px;
|
line-height: 25px;
|
||||||
}
|
}
|
||||||
.item-line {
|
.item-line {
|
||||||
padding-left: 2px;
|
padding-left: 2px;
|
||||||
height: 20px;
|
height: 20px;
|
||||||
|
// background: #ddd;
|
||||||
background: #ddd;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.portal-content {
|
.portal-content {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
// .item-title{
|
|
||||||
// margin-bottom: 5px;
|
|
||||||
// line-height: 36px;
|
|
||||||
// font-size: 14px;
|
|
||||||
// font-weight: 600;
|
|
||||||
// color: #333333;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
.searchbar {
|
.searchbar {
|
||||||
background-color: #ffffff;
|
background-color: #ffffff;
|
||||||
// border: 1px solid #f3f3f3;
|
|
||||||
// width: 1200px;
|
|
||||||
// padding: 5px 20px;
|
|
||||||
// margin-bottom: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.fixed {
|
.fixed {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</Remark>
|
</Remark>
|
||||||
<portal-header :goSearch="10"></portal-header> -->
|
<portal-header :goSearch="10"></portal-header> -->
|
||||||
<div class="xcontent portal-content">
|
<div class=" portal-content">
|
||||||
<div class="msg-nav">
|
<div class="msg-nav">
|
||||||
<div style="display: flex;align-items: center;">
|
<div style="display: flex;align-items: center;">
|
||||||
<div><el-checkbox v-model="checkAll" :indeterminate="isIndeterminate">多选</el-checkbox></div>
|
<div><el-checkbox v-model="checkAll" :indeterminate="isIndeterminate">多选</el-checkbox></div>
|
||||||
@@ -32,14 +32,22 @@
|
|||||||
<span>{{ item.title }}</span>
|
<span>{{ item.title }}</span>
|
||||||
<!-- <span class="msg-time"></span> -->
|
<!-- <span class="msg-time"></span> -->
|
||||||
</div>
|
</div>
|
||||||
<div><el-button type="danger" size="small" @click="delItem(item)">删除</el-button></div>
|
<!-- <div><el-button type="danger" size="small" @click="delItem(item)">删除</el-button></div> -->
|
||||||
</div>
|
</div>
|
||||||
<div class="msg-body">
|
<div class="msg-body">
|
||||||
<!-- {{ filterContent(item.content)[0] }}- -->
|
<div class="msg-body-content">
|
||||||
|
<!-- {{ filterContent(item.content)[0] }}- -->
|
||||||
{{item.tip}}-
|
{{item.tip}}-
|
||||||
<a :href="returnRouter(item)">{{ item.content }}</a>
|
<a :href="returnRouter(item)">{{ item.content }}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="msg-body-but">
|
||||||
|
<el-button type="danger" plain @click="delItem(item)">删除</el-button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="msg-time">{{ item.msgTime }}</div>
|
<div class="msg-time">{{ item.msgTime }}</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div style="text-align: center;margin-top: 50px" v-if="total > queryData.pageSize">
|
<div style="text-align: center;margin-top: 50px" v-if="total > queryData.pageSize">
|
||||||
@@ -274,11 +282,37 @@ export default {
|
|||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
}
|
}
|
||||||
.msg-body {
|
.msg-body {
|
||||||
word-break:break-all;
|
|
||||||
padding: 10px 10px 10px 25px;
|
padding: 10px 10px 10px 25px;
|
||||||
color: #727272;
|
display: flex;
|
||||||
a:hover {
|
width: 100%;
|
||||||
color: #409eff;
|
.msg-body-content{
|
||||||
|
flex: 1;
|
||||||
|
word-break:break-all;
|
||||||
|
color: #727272;
|
||||||
|
a:hover {
|
||||||
|
color: #409eff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.msg-body-but{
|
||||||
|
margin-left: auto;
|
||||||
|
|
||||||
|
button{
|
||||||
|
width: 88px;
|
||||||
|
height: 32px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 16px;
|
||||||
|
padding: 0;
|
||||||
|
color: #F52F3E;
|
||||||
|
line-height: 32px;
|
||||||
|
text-align: center;
|
||||||
|
border: 1px solid #F52F3E;
|
||||||
|
}
|
||||||
|
button:hover{
|
||||||
|
background-color: rgba(255,101,98,0.13);
|
||||||
|
color: #F52F3E;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.msg-time {
|
.msg-time {
|
||||||
|
|||||||
@@ -1,18 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<Remark>
|
|
||||||
1.我的问答,我发的问题列表信息
|
|
||||||
<br />
|
|
||||||
2.关于问题标题是否是必须的可以讨论下
|
|
||||||
<br />
|
|
||||||
</Remark>
|
|
||||||
<div style="display: flex;justify-content: space-between;height: 40px;">
|
<div style="display: flex;justify-content: space-between;height: 40px;">
|
||||||
<!-- <div style="padding-top: 5px;"> -->
|
|
||||||
<!--
|
|
||||||
<el-tag type="primary" style="margin-right: 20px;">最新</el-tag>
|
|
||||||
<el-tag type="info">最热</el-tag>
|
|
||||||
-->
|
|
||||||
<!-- </div> -->
|
|
||||||
<div>
|
<div>
|
||||||
<div style="display: flex;justify-content:space-around;padding: 12px 22px 10px 18px;">
|
<div style="display: flex;justify-content:space-around;padding: 12px 22px 10px 18px;">
|
||||||
<!--<div style="padding: 0px 5px;"><el-cascader clearable v-model="params.type" :options="typeList"></el-cascader></div>-->
|
<!--<div style="padding: 0px 5px;"><el-cascader clearable v-model="params.type" :options="typeList"></el-cascader></div>-->
|
||||||
|
|||||||
@@ -329,6 +329,7 @@
|
|||||||
notetab: 1,
|
notetab: 1,
|
||||||
localTimeKey:'boeu-study-time' ,//本地存储的学习时长的key json格式
|
localTimeKey:'boeu-study-time' ,//本地存储的学习时长的key json格式
|
||||||
localTimeValue:0,//计算的时间
|
localTimeValue:0,//计算的时间
|
||||||
|
appendStudyOtherHandle:null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -372,6 +373,41 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//非音视频课学习时长的增加,每一分钟保存一次
|
||||||
|
appendStudyOtherTime() {
|
||||||
|
//console.log('开始追加学习时长',this.isAppendTime);
|
||||||
|
if (this.studyId == '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!this.contentData.id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let postData={
|
||||||
|
"key": "StudyCourseOther",//课程学习的key
|
||||||
|
"title": "非音视频课内容",//事件的标题
|
||||||
|
"parameters":"second:60",//second:value 本次的学习时长
|
||||||
|
"content": "学习课程【"+this.courseInfo.name+"】",//事件的内容
|
||||||
|
"objId": this.contentData.id,//课程的内容id
|
||||||
|
"objType": "1",//类型
|
||||||
|
"source":"page",
|
||||||
|
"objInfo": ""+this.contentData.contentName,
|
||||||
|
"aid":this.userInfo.aid, //当前登录人的id
|
||||||
|
"aname":this.userInfo.name,//当前人的姓名
|
||||||
|
"status": 1 //状态
|
||||||
|
}
|
||||||
|
//静默处理
|
||||||
|
apiStat.sendEvent(postData).then(rs=>{
|
||||||
|
if(rs.status != 200) {
|
||||||
|
console.log(rs.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//每一分钟保存一次
|
||||||
|
let $this=this;
|
||||||
|
this.appendStudyOtherHandle = setTimeout(function() {
|
||||||
|
$this.appendStudyOtherTime();
|
||||||
|
}, 1000*60);
|
||||||
|
|
||||||
|
},
|
||||||
//关注功能
|
//关注功能
|
||||||
toFollow(item) {
|
toFollow(item) {
|
||||||
apiFollow.save(item.teacherId).then(res => {
|
apiFollow.save(item.teacherId).then(res => {
|
||||||
@@ -529,8 +565,17 @@
|
|||||||
this.contentData.status = 2; //进行中
|
this.contentData.status = 2; //进行中
|
||||||
}
|
}
|
||||||
if (this.contentData.contentType > 20) { //非视频类的
|
if (this.contentData.contentType > 20) { //非视频类的
|
||||||
//用户的学习时长,只是视听课的学习时长,所以这里不要追加学习时长
|
//用户的学习时长,非音视频课程学习,单独的处理
|
||||||
this.isAppendTime = false;
|
this.isAppendTime = false;
|
||||||
|
|
||||||
|
if(this.appendStudyOtherHandle!=null){
|
||||||
|
windows.clearTimeout(this.appendStudyOtherHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.appendStudyOtherHandle = setTimeout(function() {
|
||||||
|
$this.appendStudyOtherTime();
|
||||||
|
}, 1000*60*2); //非音视频课程学习,2分钟后记录,因为一次记录是60秒
|
||||||
//this.appendStudyTime();
|
//this.appendStudyTime();
|
||||||
this.handleTimeout = setTimeout(function() {
|
this.handleTimeout = setTimeout(function() {
|
||||||
$this.saveStudyInfo();
|
$this.saveStudyInfo();
|
||||||
@@ -1034,7 +1079,7 @@
|
|||||||
saveStudyDuration(duration) { //保存本地存储的学习时长
|
saveStudyDuration(duration) { //保存本地存储的学习时长
|
||||||
if (duration > 0) {
|
if (duration > 0) {
|
||||||
//发送用户学习事件
|
//发送用户学习事件
|
||||||
console.log('保存到后台学习时长='+duration);
|
//console.log('保存到后台学习时长='+duration);
|
||||||
let postData={
|
let postData={
|
||||||
"key": "StudyCourse",//课程学习的key
|
"key": "StudyCourse",//课程学习的key
|
||||||
"title": "学习课程",//事件的标题
|
"title": "学习课程",//事件的标题
|
||||||
@@ -1042,7 +1087,7 @@
|
|||||||
"content": "学习课程【"+this.courseInfo.name+"】",//事件的内容
|
"content": "学习课程【"+this.courseInfo.name+"】",//事件的内容
|
||||||
"objId": this.courseInfo.id,//课程的id
|
"objId": this.courseInfo.id,//课程的id
|
||||||
"objType": "1",//类型
|
"objType": "1",//类型
|
||||||
"source":"页面事件",
|
"source":"page",
|
||||||
"objInfo": ""+this.courseInfo.name,
|
"objInfo": ""+this.courseInfo.name,
|
||||||
"aid":this.userInfo.aid, //当前登录人的id
|
"aid":this.userInfo.aid, //当前登录人的id
|
||||||
"aname":this.userInfo.name,//当前人的姓名
|
"aname":this.userInfo.name,//当前人的姓名
|
||||||
@@ -1079,7 +1124,7 @@
|
|||||||
},
|
},
|
||||||
//结束追加学习时长
|
//结束追加学习时长
|
||||||
stopStudyTime(){
|
stopStudyTime(){
|
||||||
console.log('停止追加学习时长');
|
//console.log('停止追加学习时长');
|
||||||
this.isAppendTime=false;
|
this.isAppendTime=false;
|
||||||
if (this.appendHandle != null) {
|
if (this.appendHandle != null) {
|
||||||
window.clearTimeout(this.appendHandle);
|
window.clearTimeout(this.appendHandle);
|
||||||
@@ -1104,7 +1149,7 @@
|
|||||||
}
|
}
|
||||||
//首先从本地读取
|
//首先从本地读取
|
||||||
let duration = studyUtil.getStudyDuration();
|
let duration = studyUtil.getStudyDuration();
|
||||||
console.log('追加学习时长,当前本地积累的学习时长='+duration);
|
//console.log('追加学习时长,当前本地积累的学习时长='+duration);
|
||||||
//追加学习长
|
//追加学习长
|
||||||
let $this = this;
|
let $this = this;
|
||||||
if (this.appendStartTime == null) {
|
if (this.appendStartTime == null) {
|
||||||
|
|||||||
@@ -141,14 +141,14 @@ module.exports = {
|
|||||||
'^/statApi': ''
|
'^/statApi': ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
'/subgroupApi': {
|
'/socialApi': {
|
||||||
// 目标代理服务器地址
|
// 目标代理服务器地址
|
||||||
target: 'http://192.168.0.11:9081',
|
target: 'http://192.168.0.11:9081',
|
||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
logLevel:'debug',
|
logLevel:'debug',
|
||||||
secure: false,
|
secure: false,
|
||||||
pathRewrite: {
|
pathRewrite: {
|
||||||
'^/subgroupApi': ''
|
'^/socialApi': ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user