mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-10 03:16:42 +08:00
个人主页
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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:{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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(){
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
96
src/store/modules/majorType.js
Normal file
96
src/store/modules/majorType.js
Normal 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
|
||||
}
|
||||
94
src/store/modules/orgDomain.js
Normal file
94
src/store/modules/orgDomain.js
Normal 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
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user