个人主页

This commit is contained in:
zhaofang
2022-09-21 16:05:51 +08:00
parent 933fd7e191
commit cbffa341e2
17 changed files with 463 additions and 64 deletions

View File

@@ -9,7 +9,7 @@ const baseURL = process.env.VUE_APP_CESOURCE_BASE_API;
* }
* */
const save=function (followId){
return ajax.get('/xboe/subgroup/m/userfollow/save?followId='+followId);
return ajax.get(baseURL,'/xboe/subgroup/m/userfollow/save?followId='+followId);
}
/**
@@ -17,7 +17,7 @@ const save=function (followId){
*
* */
const remove=function (followId){
return ajax.get('/xboe/subgroup/m/userfollow/remove?followId='+followId);
return ajax.get(baseURL,'/xboe/subgroup/m/userfollow/remove?followId='+followId);
}
/**
@@ -29,7 +29,7 @@ const remove=function (followId){
* }
* */
const page=function (query){
return ajax.post('/xboe/subgroup/m/userfollow/page',query);
return ajax.post(baseURL,'/xboe/subgroup/m/userfollow/page',query);
}
/**
@@ -41,14 +41,14 @@ const page=function (query){
* }
* */
const mypage=function (query){
return ajax.post('/xboe/subgroup/m/userfollow/mypage',query);
return ajax.post(baseURL,'/xboe/subgroup/m/userfollow/mypage',query);
}
/**
* 二次查询
* */
const ids=function (data){
return ajax.postJson('/xboe/subgroup/m/userfollow/ids',data);
return ajax.postJson(baseURL,'/xboe/subgroup/m/userfollow/ids',data);
}
/**
@@ -59,7 +59,7 @@ const ids=function (data){
* }
* */
const counts=function (aid){
return ajax.get('/xboe/subgroup/m/userfollow/counts?aid='+aid);
return ajax.get(baseURL,'/xboe/subgroup/m/userfollow/counts?aid='+aid);
}
export default {

View File

@@ -158,12 +158,12 @@ export default {
});
let event = {
key: "PublishArticle",//后台的事件key 发布文章且审核通过
title: "首次发表文章(审核通过)",//事件的标题
title: "发表文章",//事件的标题
parameters:"",//用户自定义参数 name:value,name:value
content: this.addForm.title,//事件的内容
objId: this.addForm.id,//关联的id
content: "发表了文章",//事件的内容
objId: res.result.id,//关联的id
objType: "2",//关联的类型
objInfo: "文章",
objInfo: this.addForm.title,
aid: this.userInfo.aid, //当前登录人的id
aname: this.userInfo.name,//当前人的姓名
status: 1 //状态直接写1

View File

@@ -85,6 +85,10 @@ export default {
type: Object,
default: () => { }
},
score: {
type:String,
default:''
}
},
name: 'MyNote',
data() {
@@ -206,12 +210,12 @@ export default {
// 是编辑新增
let event = {
key: "PublishNote",//后台的事件key
title: this.data.name,//事件的标题
title: '编辑了笔记',//事件的标题
parameters: "",//用户自定义参数 name:value,name:value
content: this.data.name,//this.mynoteData.content,//事件的内容
objId: res.result.id,//关联的id
objType: "6",//关联的类型
objInfo: "笔记",
objInfo: this.data.name +''+ this.score,
aid: this.userInfo.aid, //当前登录人的id
aname: this.userInfo.name,//当前人的姓名
status: 1 //状态直接写1

View File

@@ -2,8 +2,9 @@
<div class="answer-list">
<ul v-if="list.length > 0">
<li class="answer-list-index" v-for="item in list" :key="item.id">
<p v-if="isDynamic" class="portal-summary-text" style="margin-bottom:18px"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<h6 class="answer-title-info follow-home-title">{{item.contentInfo}}
<span class="follow-hide" style="float:right">
<span class="follow-hide" style="float:right" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</span>
</h6>
@@ -39,6 +40,14 @@
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
data(){

View File

@@ -2,8 +2,9 @@
<div class="article-list">
<ul v-if="list.length > 0">
<li class="article-list-index" v-for="item in list" :key="item.id">
<p v-if="isDynamic" class="portal-summary-text" style="margin-bottom:18px"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<h6 class="article-title-info follow-home-title">{{item.info.title || item.contentInfo}}
<span class="follow-hide" style="float:right">
<span class="follow-hide" style="float:right" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</span>
</h6>
@@ -43,6 +44,14 @@
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
data(){

View File

@@ -3,13 +3,14 @@
<div class="data-content" v-if="list.length >0">
<div :span="24" v-for="item in list" :key="item.id" class="case-list">
<div class="case-info">
<p v-if="isDynamic" class="portal-summary-text"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<div class="case-info-cont">
<router-link :to="'/case/detail?id='+item.info.id">
<div class="case-info-title">
<div class="case-titdiv">
<span class="case-tittext" v-html="item.info.title || item.contentInfo"></span>
<div class="follow-hide">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
<div class="follow-hide" style="width:59px" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</div>
</div>
</div>
@@ -51,6 +52,7 @@
<script>
import interactBar from "@/components/Portal/interactBar.vue";
import author from "@/components/Portal/authorInfo.vue";
import { mapGetters,mapActions } from 'vuex';
export default{
name:"caselist",
components: {
@@ -58,10 +60,21 @@
// timeShow,
author
},
computed: {
...mapGetters(['userInfo','majorTypeMap','orgDomainMap']),
},
props:{
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
data(){
@@ -72,6 +85,10 @@
mounted() {
},
methods:{
majorTypeTranslate(code){
if(code==''){return '';}
return this.majorTypeMap.get(code);
},
//展示全部
displayAll(item) {
if (!item.isAll && item.info.summary && item.info.summary.length > 180) {
@@ -83,22 +100,9 @@
item.isAll = !item.isAll;
},
orgDomainTranslate(code){ // 组织领域翻译
if(code == '') {
return
}
return '组织领域';
if(code==''){return '';}
return this.orgDomainMap.get(code);
},
majorTypeTranslate(code){ // 专业分类翻译
let name = '';
// let data = this.Profess.find(item => item.code == code);
// if(data == undefined){
// name = '';
// } else {
// name = data.name;
// }
return '专业分类';
},
}
}
</script>
@@ -127,6 +131,7 @@ div {
}
}
.case-titdiv {
width: 100%;
line-height: 30px;
display: flex;
.case-tittext {
@@ -134,7 +139,7 @@ div {
font-weight: 600;
margin-top: 16px;
color: #333333;
width: 95%;
width: 100%;
display: -webkit-box;
overflow: hidden;
word-break: break-all;
@@ -156,7 +161,7 @@ div {
}
}
.case-list:last-child {
border-bottom: none;
// border-bottom: none;
}
.case-list {

View File

@@ -2,6 +2,7 @@
<div class="">
<ul class="data-info-ul" v-if="list.length > 0">
<li class="data-info" v-for="item in list" :key="item.id">
<p v-if="isDynamic" class="portal-summary-text" style="margin-bottom:18px"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<div style="width:254px">
<course-image width="254px" height="144px" :course="item.info"></course-image>
</div>
@@ -14,7 +15,7 @@
<p class="portal-time">最新一次学习时间2022-5-28 22:30:28</p>
</div>
<div style="width:150px">
<div class="follow-hide" style="text-align: right;">
<div class="follow-hide" style="text-align: right;" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</div>
<div class="btn-right">
@@ -45,6 +46,14 @@
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
methods:{

View File

@@ -19,13 +19,14 @@
</div>
<div v-else class="home-no-list">
<img class="img" style="width:186px;height:160px" src="/images/homeWu/no-follow.png" alt="" srcset="">
<p class="text">还没有笔记</p>
<p class="text">还没有关注的人</p>
</div>
</div>
</template>
<script>
import interactBar from "@/components/Portal/interactBar.vue";
import author from "@/components/Portal/authorInfo.vue";
import apiFollow from "@/api/phase2/userfollow.js"
export default{
name:"articleList",
components: {
@@ -37,12 +38,43 @@ import author from "@/components/Portal/authorInfo.vue";
return{
followList:[],
active:1,
pageId:'',
pageList:[],
mypageList:[],
page:{
pageIndex:1,
pageSize:10,
aid:''
}
}
},
mounted() {
this.pageId = this.$route.query.id;
this.getMyPage();
this.getPage();
},
methods:{
//展示全部
tagTab(num) {
this.active = num;
},
getMyPage() {//关注我的,关注他的
this.page.aid = this.pageId;
apiFollow.mypage(this.page).then(res=>{
if(res.status== 200) {
this.count = res.result.count;
this.mypageList = res.result.list;
}
})
},
getPage() { //我关注的,他关注的
this.page.aid = this.pageId;
apiFollow.page(this.page).then(res=>{
if(res.status== 200) {
this.count = res.result.count;
this.pageList = res.result.list;
}
})
}
}

View File

@@ -2,9 +2,9 @@
<div class="note-list">
<ul v-if="list.length > 0">
<li class="note-list-index" v-for="item in list" :key="item.id">
<!-- {{item}} -->
<p v-if="isDynamic" class="portal-summary-text" style="margin-bottom:18px"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<h6 class="note-title-info follow-home-title">{{item.contentInfo}} <span style="color: #333333;font-weight: 400;font-size: 14px;margin-left: 20px;"></span> <span class="score-info" style="margin-left:22px">4.8</span>
<span class="follow-hide" style="float:right">
<span class="follow-hide" style="float:right" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</span>
</h6>
@@ -37,6 +37,14 @@
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
data(){
@@ -44,6 +52,8 @@
noteList:[]
}
},
mounted() {
},
methods:{
//展示全部
changeIsAll(item) {

View File

@@ -2,8 +2,9 @@
<div class="put-list">
<ul v-if="list.length > 0">
<li class="put-list-index" v-for="item in list" :key="item.id">
<p v-if="isDynamic" class="portal-summary-text" style="margin-bottom:18px;margin-top:10px"><span v-if="!personal">{{item.aname}}</span>{{item.cusInfo}} <span style="margin-left:28px">{{item.eventTime}}</span> <span v-if="personal" class="follow-hide" style="float:right"><svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏</span></p>
<h6 class="put-title-info follow-home-title">{{item.info.title || item.contentInfo}}
<span class="portal-time follow-hide" style="float:right">
<span class="portal-time follow-hide" style="float:right" v-if="!isDynamic && personal">
<svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏
</span>
</h6>
@@ -34,6 +35,14 @@
list:{
type:Array,
default:()=>[]
},
isDynamic:{
type:Boolean,
default:false,
},
personal:{
type:Boolean,
default:false,
}
},
data(){

View File

@@ -21,6 +21,8 @@ const getters = {
portalBackUrl: state => state.portal.backUrl,
resOwnerMap:state => state.resOwner.resOwnerMap,
sysTypeMap:state => state.sysType.sysTypeMap,
majorTypeMap:state => state.majorType.majorTypeMap,
orgDomainMap:state => state.orgDomain.orgDomainMap,
userMsg:state => state.user.msg,
messagesBeReviewed:state => state.user.messagesBeReviewed,
studyTaskCount:state => state.user.studyTaskCount,

View File

@@ -9,6 +9,8 @@ import portal from './modules/portal'
import getters from './getters'
import sysType from './modules/sysType'
import resOwner from './modules/resOwner'
import majorType from './modules/majorType'
import orgDomain from './modules/orgDomain'
import pdf from './modules/pdf'
Vue.use(Vuex)
@@ -23,6 +25,8 @@ const store = new Vuex.Store({
portal,
sysType,
resOwner,
majorType,
orgDomain,
pdf
},
getters

View File

@@ -0,0 +1,96 @@
import {getToken} from '@/utils/token'
// import apiType from '../../api/modules/type.js'
import apiDict from "../../api/modules/dict.js";
const state={
majorTypeTree: [], //内容类型
majorTypeMap:null,
}
const mutations={
setMajorTypeTree: (state, tree) => {
state.majorTypeTree = tree
},
setMajorTypeMap: (state, map) => {
state.majorTypeMap = map
},
}
const actions={
getMajorTypeTree({commit}) {
return new Promise((resolve,reject)=>{
if(state.majorTypeTree.length>0){
resolve(state.majorTypeTree);
}else{
let hasData = sessionStorage.getItem('majorTypeTree');
if(hasData){
let treeData = JSON.parse(hasData);
commit('setMajorTypeTree', treeData);
resolve(treeData);
}else{
apiDict.items('major_type').then(res=>{
if(res.status === 200) {
sessionStorage.setItem('majorTypeTree',JSON.stringify(res.result));
commit('setMajorTypeTree', res.result);
//转化为map放到状态中
let map=new Map();
res.result.forEach(item=>{
map.set(item.code, item.name);
if(item.list && item.list!=''){
item.list.forEach(child=>{
map.set(child.code, child.name);
if(child.list && child.list!=''){
child.list.forEach(last=>{
map.set(last.code, last.name);
})
}
})
}
});
commit('setMajorTypeMap', map);
resolve(res.result)
} else {
reject('专业分类获取失败!');
}
})
}
}
});
},
loadMajorTypes(context){
if(state.majorTypeMap==null){
let hasData = sessionStorage.getItem('majorTypeMap');
if(hasData){
hasData=JSON.parse(hasData);
}
//console.log(hasData,"hasData");
if(hasData && hasData.length>10){
let map=new Map();
hasData.forEach(item=>{
map.set(item.code, item.name);
});
context.commit('setMajorTypeMap',map);
}else{
apiDict.items('major_type').then(res=>{
if(res.status === 200) {
let map=new Map();
res.result.forEach(item=>{
map.set(item.code, item.name);
});
//console.log(map,map);
sessionStorage.setItem('majorTypeMap',JSON.stringify(res.result));
context.commit('setMajorTypeMap', map);
} else {
console.log('专业分类获取失败!');
}
});
}
}
}
}
export default {
namespaced: true,
state,
mutations,
actions
}

View File

@@ -0,0 +1,94 @@
import {getToken} from '@/utils/token'
// import apiType from '../../api/modules/type.js'
import apiDict from "../../api/modules/dict.js";
const state={
orgDomainTree: [], //内容类型
orgDomainMap:null,
}
const mutations={
setOrgDomainTree: (state, tree) => {
state.orgDomainTree = tree
},
setOrgDomainMap: (state, map) => {
state.orgDomainMap = map
},
}
const actions={
getOrgDomainTree({commit}) {
return new Promise((resolve,reject)=>{
if(state.OrgDomainTree.length>0){
resolve(state.OrgDomainTree);
}else{
let hasData = sessionStorage.getItem('OrgDomainTree');
if(hasData){
let treeData = JSON.parse(hasData);
commit('setOrgDomainTree', treeData);
resolve(treeData);
}else{
apiDict.items('org_domain').then(res=>{
if(res.status === 200) {
sessionStorage.setItem('OrgDomainTree',JSON.stringify(res.result));
commit('setOrgDomainTree', res.result);
//转化为map放到状态中
let map=new Map();
res.result.forEach(item=>{
map.set(item.code, item.name);
if(item.list && item.list!=''){
item.list.forEach(child=>{
map.set(child.code, child.name);
if(child.list && child.list!=''){
child.list.forEach(last=>{
map.set(last.code, last.name);
})
}
})
}
});
commit('setOrgDomainMap', map);
resolve(res.result)
} else {
reject('组织机构获取失败!');
}
})
}
}
});
},
loadOrgDomains(context){
if(state.orgDomainMap==null){
let hasData = sessionStorage.getItem('OrgDomainMap');
if(hasData){
hasData=JSON.parse(hasData);
}
if(hasData && hasData.length>10){
let map=new Map();
hasData.forEach(item=>{
map.set(item.code, item.name);
});
context.commit('setOrgDomainMap',map);
}else{
apiDict.items('org_domain').then(res=>{
if(res.status === 200) {
let map=new Map();
res.result.forEach(item=>{
map.set(item.code, item.name);
});
sessionStorage.setItem('OrgDomainMap',JSON.stringify(res.result));
context.commit('setOrgDomainMap', map);
} else {
console.log('组织机构获取失败!');
}
});
}
}
}
}
export default {
namespaced: true,
state,
mutations,
actions
}

View File

@@ -31,11 +31,11 @@
<div style="padding-top:16px">
<p class="ach-title">可能感兴趣</p>
<ul>
<li class="ava-info" v-for="ava in 3">
<img src="/images/Avatarwoman.png" />
<li class="ava-info" v-for="ava in interestedList" :key="ava.aid">
<img :src="baseUrl + ava.avatar" />
<div class="ava-text">
<p style="color: #333333;">王明</p>
<p style="color: #666666;">你必须非常努力才能看起来毫不费力</p>
<p style="color: #333333;">{{ava.name}}</p>
<p style="color: #666666;">{{ava.sign}}</p>
</div>
</li>
</ul>
@@ -51,31 +51,49 @@
import MedalImg from '@/components/Portal/medalImg.vue';
import apiStat from '@/api/phase2/stat.js';
import apiUserhobby from '@/api/phase2/userhobby.js';
import apiUser from "@/api/system/user.js";
import apiFollow from "@/api/phase2/userfollow.js";
import { mapGetters } from 'vuex';
export default{
components:{top,UcHeader,MedalImg},
data(){
return{
baseUrl:process.env.VUE_APP_FILE_BASE_URL,
input:'',
activeName:'first',
pageId:'',
medalList:[]
medalList:[],
interestedList:[]
}
},
mounted() {
this.pageId = this.$route.query.id;
this.pageId = this.$route.query.id;
this.getMedal();
this.userhobbyInfo();
this.getFollow();
},
methods:{
getFollow(){
apiFollow.counts(this.pageId).then(res=>{
if(res.status == 200) {
}
})
},
userhobbyInfo() {
apiUserhobby.info(this.pageId).then(res=>{
// if() {
apiUserhobby.list(res.result).then(res=>{
})
// }
if(res.status == 200) {
let ids = res.result.map(item=>item.aid);
const noReapetIds = [...new Set(ids)];
apiUser.getByIds(noReapetIds).then(res => {
if (res.status == 200) {
this.interestedList = res.result;
} else {
this.$message.error(res.message);
}
});
}
})
},
getMedal() {

View File

@@ -8,31 +8,39 @@
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane name="">
<span slot="label"><svg-icon icon-class="home-dynamic" style="font-size: 30px;"></svg-icon> <span class="tabs-info">动态</span></span>
动态
<template v-for="item in allPageList">
<course-list v-if="item.contentType == 1" :list="[item]" :isDynamic="true" :personal="personal"></course-list>
<case-list v-if="item.contentType == 3" :list="[item]" :isDynamic="true" :personal="personal"></case-list>
<note-list v-if="item.contentType == 6" :list="[item]" :isDynamic="true" :personal="personal"></note-list>
<put-list v-if="item.contentType == 4" :list="[item]" :isDynamic="true" :personal="personal"></put-list>
<answer-list v-if="item.contentType == 5" :list="[item]" :isDynamic="true" :personal="personal"></answer-list>
<article-list v-if="item.contentType == 2" :list="[item]" :isDynamic="true" :personal="personal"></article-list>
</template>
</el-tab-pane>
<el-tab-pane name="1">
<span slot="label"><svg-icon icon-class="home-course" style="font-size: 30px;"></svg-icon><span class="tabs-info">课程</span></span>
<course-list :list="cousrePageList"></course-list>
<course-list :list="cousrePageList" :isDynamic="false" :personal="personal"></course-list>
</el-tab-pane>
<el-tab-pane name="3">
<span slot="label"><svg-icon icon-class="home-case" style="font-size: 30px;"></svg-icon><span class="tabs-info">案例</span></span>
<case-list :list="casePageList"></case-list>
<case-list :list="casePageList" :isDynamic="false" :personal="personal"></case-list>
</el-tab-pane>
<el-tab-pane name="6">
<span slot="label"><svg-icon icon-class="home-note" style="font-size: 30px;"></svg-icon><span class="tabs-info">笔记</span></span>
<note-list :list="notePageList"></note-list>
<note-list :list="notePageList" :isDynamic="false" :personal="personal"></note-list>
</el-tab-pane>
<el-tab-pane name="4">
<span slot="label"><svg-icon icon-class="home-qa" style="font-size: 30px;"></svg-icon><span class="tabs-info">提问</span></span>
<put-list :list="qaPageList"></put-list>
<put-list :list="qaPageList" :isDynamic="false" :personal="personal"></put-list>
</el-tab-pane>
<el-tab-pane name="5">
<span slot="label"><svg-icon icon-class="home-answer" style="font-size: 30px;"></svg-icon><span class="tabs-info">回答</span></span>
<answer-list :list="answerPageList"></answer-list>
<answer-list :list="answerPageList" :isDynamic="false" :personal="personal"></answer-list>
</el-tab-pane>
<el-tab-pane name="2">
<span slot="label"><svg-icon icon-class="home-article" style="font-size: 30px;"></svg-icon><span class="tabs-info">文章</span></span>
<article-list :list="articlePageList"></article-list>
<article-list :list="articlePageList" :isDynamic="false" :personal="personal"></article-list>
</el-tab-pane>
<el-tab-pane name="7">
<span slot="label"><svg-icon icon-class="home-follow" style="font-size: 30px;"></svg-icon><span class="tabs-info">关注</span></span>
@@ -76,14 +84,15 @@
import apiCases from '@/api/modules/cases.js'
import apiQa from '@/api/modules/qa.js'
import apiNote from '@/api/phase2/note.js'
import { mapGetters } from 'vuex';
import { mapGetters,mapActions } from 'vuex';
import apiUser from "@/api/system/user.js";
import {cutFullName} from "@/utils/tools.js";
import apiDict from "@/api/modules/dict.js";
export default{
components:{top,UcHeader,CaseList,CourseList,NoteList,PutList,AnswerList,ArticleList,FollowList,BookList},
computed: {
...mapGetters(['userInfo']),
...mapGetters(['userInfo','majorTypeMap','orgDomainMap']),
},
data(){
return{
@@ -95,20 +104,34 @@
input:'',
activeName:'',
pageId:'',
pageList:[],
// pageList:[],
casePageList:[],
notePageList:[],
articlePageList:[],
qaPageList:[],
answerPageList:[],
cousrePageList:[],
allPageList:[],
personal:false,
orgData:[],
Profess:[]
}
},
mounted() {
this.pageId = this.$route.query.id;
this.getList();
if(this.pageId == this.userInfo.aid) {
this.personal = true;
}
this.loadMajorType();
this.loadOrgDomain();
console.log(this.orgDomainMap,'orgDomainMap');
},
methods:{
...mapActions({
loadMajorType:'majorType/loadMajorTypes',
loadOrgDomain:'orgDomain/loadOrgDomains'
}),
handleSizeChange(val) {
this.page.pageSize = val;
this.page.pageIndex = 1;
@@ -122,9 +145,9 @@
let data = {
pageIndex:this.page.pageIndex,
pageSize:this.page.pageSize,
contentType:this.activeName,//内容类型
contentType:this.activeName == 0? '':this.activeName,//内容类型
aid:this.pageId, //指定用户的动态,
hidden:true,//是否隐藏,不指定,查询全部
hidden:this.pageId == this.userInfo.aid?'':true,//是否隐藏,不指定,查询全部
}
apiStat.userDynamicList(data).then(res=>{
if(res.status == 200) {
@@ -142,6 +165,9 @@
}
item.isAll = false;
})
if(this.activeName == 0) {// 动态处理
this.getAllList(res.result.list)
}
if(this.activeName == 1){
this.cousrePageList = res.result.list
this.getCourse(noReapetIds,res.result.list);
@@ -153,7 +179,6 @@
if(this.activeName == 3) {
this.casePageList = res.result.list;
this.getCase(noReapetIds,res.result.list);
}
if(this.activeName == 6) { // 笔记
this.getNote(noReapetIds,res.result.list);
@@ -170,6 +195,79 @@
}
})
},
getAllList(list) {
this.allPageList = [];
let casePageList=[];
let notePageList=[];
let articlePageList=[];
let qaPageList=[];
let answerPageList=[];
let cousrePageList=[];
list.forEach(item=>{
if(item.contentType == 1) {
cousrePageList.push(item);
}
if(item.contentType == 2) {
articlePageList.push(item);
}
if(item.contentType == 3) {
casePageList.push(item);
}
if(item.contentType == 4) {
qaPageList.push(item);
}
if(item.contentType == 5) {
answerPageList.push(item);
}
if(item.contentType == 6) {
notePageList.push(item);
}
})
let caseIds = casePageList.map(item=>item.contentId);
const noReapetCaseIds = [...new Set(caseIds)];
let articleIds = articlePageList.map(item=>item.contentId);
const noReapetArticleIds = [...new Set(articleIds)];
let cousreIds = cousrePageList.map(item=>item.contentId);
const noReapetCousreIds = [...new Set(cousreIds)];
let qaIds = qaPageList.map(item=>item.contentId);
const noReapetQaIds = [...new Set(qaIds)];
let anwerIds = answerPageList.map(item=>item.contentId);
const noReapetAnwerIds = [...new Set(anwerIds)];
let noteIds = notePageList.map(item=>item.contentId);
const noReapetNoteIds = [...new Set(noteIds)];
if(noReapetCaseIds.length > 0) {
this.getCase(noReapetCaseIds,casePageList);
}
if(noReapetArticleIds.length > 0) {
this.getArticle(noReapetArticleIds,articlePageList);
}
if(noReapetCousreIds.length > 0) {
this.getCourse(noReapetCousreIds,cousrePageList);
}
if(noReapetQaIds.length > 0) {
this.getQa(noReapetQaIds,qaPageList);
}
if(noReapetAnwerIds.length > 0) {
this.getAnswer(noReapetAnwerIds,answerPageList);
}
if(noReapetNoteIds.length > 0) {
this.getNote(noReapetNoteIds,notePageList);
}
this.allPageList.push(...casePageList,...articlePageList,...cousrePageList,...qaPageList,...answerPageList,...notePageList);
this.allPageList.sort(this.pcompare("eventTime", false))
},
pcompare(prop, rev) {
if (rev === undefined) {
rev = 1;
} else {
rev = rev ? 1 : -1;
}
return function(obj1, obj2) {
let val1 = obj1[prop],
val2 = obj2[prop];
return val1 < val2 ? rev * -1 : rev * 1;
};
},
getAnswer(ids,list){
if(ids.length == 0){
return
@@ -328,7 +426,7 @@
}
})
},
handleClick() {
handleClick(e) {
this.getList();
}
},

View File

@@ -152,7 +152,7 @@
</div>
<!-- 我的笔记 -->
<div class="mynote" v-if="tab == 2">
<my-note :data="contentData" @videoLocation="videoLocation" @onPlayVideo="onPlayVideo"></my-note>
<my-note :data="contentData" @videoLocation="videoLocation" @onPlayVideo="onPlayVideo" :score="courseInfo.score"></my-note>
</div>
</div>
<div class="coures-tearch">