This commit is contained in:
zhangsir
2024-09-11 16:07:27 +08:00
parent 1278260812
commit f39a1417b6
6 changed files with 191 additions and 72 deletions

View File

@@ -208,12 +208,15 @@ const adjustRank = (data) => ajax.post(`/xboe/m/boe/cases/adjustRank?caseIds=${d
//收藏案例
const queryFavoriteCaseOfIndex = (params) => ajax.get(`/xboe/m/boe/cases/queryFavoriteCaseOfIndex?pageIndex=${params.pageIndex}&pageSize=${params.pageSize}&orderField=${params.orderField}&orderAsc=${params.orderAsc}`)
//浏览记录
const queryViewRecord = (data) => ajaxs.post(`/statApi/xboe/m/stat/userdynamic/list?pageIndex=${data.pageIndex}&pageSize=${data.pageSize}&contentType=${data.contentType}&aid=${data.aid}&hidden=${data.hidden}`)
const queryViewRecord = (data) => ajaxs.post(`/statApi/xboe/m/stat/userdynamic/list?pageIndex=${data.pageIndex}&pageSize=${data.pageSize}&contentType=${data.contentType}&aid=${data.aid}&hidden=${data.hidden}&eventKey=${data.eventKey}`)
//浏览量TOP榜单
const queryPopularityOfMajor = (params) => ajax.get(`/xboe/m/boe/cases/queryPopularityOfMajor?pageSize=${params.pageSize}&rankMonth=${params.rankMonth}&majorId=${params.majorId}`)
//浏览记录新
const browsingHistory = (params) => ajax.get(`/xboe/m/boe/cases/browsingHistory?pageIndex=${params.pageIndex}&pageSize=5`)
export default {
getQueryRecommendRank,
queryPopularityOfMajor,
browsingHistory,
queryViewRecord,
queryFavoriteCaseOfIndex,
riseIntoRank,

View File

@@ -8,7 +8,10 @@
<span style="margin-left:28px">{{item.eventTime}}</span>
<span v-if="item.aid == userInfo.aid" class="follow-hide pointer" style="float:right">
<span v-if="item.hidden">已隐藏</span>
<span v-else @click="emitHide(item.id)"> <svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏 </span>
<span class="span_hidden" v-else @click="emitHide(item.id)">
<!-- <svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon> -->
<div class="is_hidden"></div>
隐藏 </span>
</span>
</p>
<div class="case-info-cont">
@@ -136,6 +139,22 @@
</script>
<style lang="scss" scoped>
.span_hidden{
display: flex;
&:hover{
.is_hidden{
background: url('../../assets/images/case/Frame(12).png');
background-size: 100%;
}
}
.is_hidden{
width: 18px;
height: 18px;
background: url('../../assets/images/case/Frame(5).png');
background-size: 100%;
margin-right: 10px;
}
}
.sign-text{
color: #666666;
font-size: 14px;

View File

@@ -52,7 +52,7 @@
<el-table-column label="操作">
<template slot-scope="scope">
<el-button-group>
<el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''" @click="suggest(scope.row)" icon="el-icon-delete">榜单推荐</el-button>
<el-button style="margin:0 5px" type="text" v-if="scope.row.recommendRank === ''" @click="suggest(scope.row)" icon="el-icon-medal">榜单推荐</el-button>
<!-- <el-button type="text" @click="shareItem(scope.row)" icon="el-icon-share" style="margin:0 5px">推荐</el-button> -->
<el-button style="margin:0 5px" v-if="!scope.row.isTop && scope.row.confidentialityLevel == '内部'" type="text"
@click="setTop(scope.row)" icon="el-icon-top">置顶</el-button>
@@ -167,7 +167,7 @@
<el-drawer
title="推荐榜单"
:visible.sync="RankingShow"
size="70%">
size="80%">
<div style="padding: 10px 20px 80px">
<el-table :data="tableData" border stripe>
<el-table-column
@@ -175,16 +175,16 @@
width="50"
label="排序">
</el-table-column>
<el-table-column label="案例标题" prop="caseTitle"></el-table-column>
<el-table-column label="作者名称" prop="caseAuthor"></el-table-column>
<el-table-column label="上榜人" prop="caseAuthor"></el-table-column>
<el-table-column label="上榜时间" prop="recommendRankPusTime"></el-table-column>
<el-table-column show-overflow-tooltip label="案例标题" prop="caseTitle"></el-table-column>
<el-table-column width="150px" label="作者名称" prop="caseAuthor"></el-table-column>
<el-table-column width="150px" label="上榜人" prop="caseAuthor"></el-table-column>
<el-table-column width="250px" label="上榜时间" prop="recommendRankPusTime"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button-group>
<el-button style="margin:0 5px" type="text" @click="handleNotRank(scope.row)" icon="el-icon-top">取消推荐</el-button>
<el-button style="margin:0 5px" type="text" @click="moveUp(scope.row,scope.$index)" icon="el-icon-delete">上移排序</el-button>
<el-button style="margin:0 5px" type="text" @click="moveDown(scope.row,scope.$index)" icon="el-icon-delete">下移排序</el-button>
<el-button style="margin:0 5px" type="text" @click="handleNotRank(scope.row)" icon="el-icon-delete">取消推荐</el-button>
<el-button style="margin:0 5px" type="text" @click="moveUp(scope.row,scope.$index)" icon="el-icon-top">上移排序</el-button>
<el-button style="margin:0 5px" type="text" @click="moveDown(scope.row,scope.$index)" icon="el-icon-bottom">下移排序</el-button>
</el-button-group>
</template>
</el-table-column>
@@ -285,6 +285,10 @@ export default {
return name;
},
suggest(record){
if(this.tableData.length == 10){
this.$message.error('最多推荐10个')
return
}
this.$confirm('你确认要推荐此案例么?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
@@ -292,11 +296,10 @@ export default {
}).then(() => {
apiCase.riseIntoRank({caseId:record.id}).then(res=>{
if(res.status == 200 ){
this.$message.success('成功')
this.$message.success('推荐成功')
this.getData()
this.getList()
}
}).catch(()=>{
this.$message.error('失败')
})
})
},
@@ -338,7 +341,7 @@ export default {
arr.splice(index2, 0, temp);
},
getList(){
apiCase.getQueryRecommendRank({pageSize:3}).then(res=>{
apiCase.getQueryRecommendRank({pageSize:10}).then(res=>{
console.log(res,'res')
if(res.status == 200){
this.tableData = res.result

View File

@@ -7,8 +7,8 @@
</div>
</div>
<div class="charts_content">
<div class="charts_item">
<div class="charts_item_box charts_bg1">
<div class="charts_item" :style="{justifyContent:recommendRank.length>0?'':'center'}">
<div :style="{width:recommendRank.length>0?'':'600px',marginRight:recommendRank.length>0?'':'45px'}" class="charts_item_box charts_bg1">
<div class="charts_text">
<div class="text">好评榜</div>
<el-dropdown trigger="click" @command="positiveReview">
@@ -32,7 +32,7 @@
</li>
</ul>
</div>
<div class="charts_item_box charts_bg2">
<div :style="{width:recommendRank.length>0?'':'600px'}" class="charts_item_box charts_bg2">
<div class="charts_text">
<div class="text">人气榜</div>
<el-dropdown trigger="click" @command="popularityReview">
@@ -56,7 +56,7 @@
</li>
</ul>
</div>
<div class="charts_item_box charts_bg3">
<div v-if="recommendRank.length > 0" class="charts_item_box charts_bg3">
<div class="charts_text">
<div class="text">推荐榜</div>
</div>

View File

@@ -188,7 +188,7 @@ import apiPlace from "@/api/phase2/place.js"
},
mounted() {
this.majorValue = this.$route.query.majorName
this.monthValue = this.$route.query.riseRankTime.split('-')[1] + '月'
this.monthValue = parseInt(this.$route.query.riseRankTime.split('-')[1], 10) + '月'
this.getCaseData()
Promise.all([apiType.treeList(1,Number(this.caseType ?? 155),1), apiCase.majorTypes()]).then(rs => {
if (rs[0].code == 200) {
@@ -275,7 +275,6 @@ import apiPlace from "@/api/phase2/place.js"
list.push(one);
}
})
console.log(list,'计算属性');
return list;
},
@@ -331,7 +330,7 @@ import apiPlace from "@/api/phase2/place.js"
this.treeList = result
}
} catch (error) {
console.log(error);
// console.log(error);
}
},
goCase() {
@@ -434,7 +433,6 @@ import apiPlace from "@/api/phase2/place.js"
};
});
}
console.log(res?.result,'有没有数据');
this.caseList.list = res.result
if(this.caseList.length == 0){
this.isSeach = true
@@ -449,7 +447,7 @@ import apiPlace from "@/api/phase2/place.js"
this.$message.error(res.message);
}
}).catch(err => {
console.log(err);
// console.log(err);
});
},
},

View File

@@ -153,21 +153,21 @@
<div style="flex: 1; display: flex; justify-content: flex-end;align-items: center;">
<!-- <div style="margin-right: 20px;color: #6E7B84;font-size: 14px;">当前已检索 <span style="color:#387DF7;">
{{ caseList.count }}</span> 条数据</div> -->
<div class="pub_time" @click="searchTime">
<div v-if="caseTimeShow" class="pub_time" @click="searchTime">
<div class="text">发布时间</div>
<div class="triangle">
<div :style="{borderBottomColor:pubTimeNum===2?'#387DF7':'#DCDFE6'}" class="up-triangle"></div>
<div :style="{borderTopColor:pubTimeNum===1?'#387DF7':'#DCDFE6'}" class="down-triangle"></div>
</div>
</div>
<div class="pub_time" @click="searchPageView">
<div v-if="caseTimeShow" class="pub_time" @click="searchPageView">
<div class="text">浏览量</div>
<div class="triangle">
<div :style="{borderBottomColor:pageViewNum===2?'#387DF7':'#DCDFE6'}" class="up-triangle"></div>
<div :style="{borderTopColor:pageViewNum===1?'#387DF7':'#DCDFE6'}" class="down-triangle"></div>
</div>
</div>
<el-select v-model="years" multiple collapse-tags
<el-select v-if="caseTimeShow" @change="yearsChange" v-model="years" multiple collapse-tags
style=" width: 147px; border-radius:20px !important;" placeholder="全部年份">
<el-option v-for="item in caseYears" :key="item.value" :label="item.label" :value="item.value">
</el-option>
@@ -189,15 +189,19 @@
</div>
</div>
<div class="data-content">
<div v-for="item in caseList.list" :key="item.id" class="case-list">
<div v-for="item in caseList.list" :key="isTimeData?item.browsingHistoryId : item.id" class="case-list">
<div class="case-info">
<div class="case-info-cont">
<!-- <router-link :to="'/case/detail?id=' + item.id"> -->
<div @click="toCaseDetail(item.id, item.refId)" style="cursor: pointer;">
<div v-if="isTime" class="case_text">
<span style="margin-right:28px">阅读了案例</span>
<span>{{ item.eventTime }}</span>
</div>
<div class="case-info-title">
<div class="case-titdiv">
<div class="case-tittext">
<span :style="{maxWidth:item.excellentTag&&item.viewRankTags.length != 0?'400px':item.viewRankTags.length != 0?'500px':''}" class="title-line-ellipsis" v-html="item.title"></span>
<span :style="{maxWidth:item.excellentTag&&item.viewRankTags.length != 0?'400px':item.viewRankTags.length != 0?'500px':''}" class="title-line-ellipsis" :title="item.title">{{ item.title || item.contentInfo }}</span>
</div>
<div class="case-activeText">
<!-- <span v-if="item.breCommend" class="comWords"
@@ -212,13 +216,15 @@
</div>
<div class="case-info-date portal-time">
<i class="el-icon-time"></i>
<time-show :time="item.sysCreateTime"></time-show>
<time-show v-if="item.id" :time="item.sysCreateTime"></time-show>
<span v-else>该案例已被删除</span>
</div>
</div>
</div>
</div>
<!-- </router-link> -->
<div style="height:58px;padding-top:14px ">
<div v-if="!item.id" style="height:25px;padding-top:14px "></div>
<div v-if="item.id" style="height:58px;padding-top:14px ">
<author :avatar="item.authorInfo.avatar" :name="item.authorInfo.name" :info="item.authorInfo.orgInfo"
:sex="item.authorInfo.sex" :authorTags="item.authorTags" :aid="item.authorInfo.aid">
<template>
@@ -230,7 +236,7 @@
</author>
</div>
<!-- <router-link :to="'/case/detail?id=' + item.id"> -->
<div @click="toCaseDetail(item.id, item.refId)" style="cursor: pointer;">
<div v-if="item.id" @click="toCaseDetail(item.id, item.refId)" style="cursor: pointer;">
<div class="keyword-text clearfix">
<div style="color:#2974D6;font-weight: 450;" v-if="item.orgDomainParent">
{{ orgDomainTranslate(item.orgDomainParent) }}
@@ -247,7 +253,7 @@
</div>
</div>
<!-- </router-link> -->
<div class="case-info-summary two-line-ellipsis" @click="toCaseDetail(item.id, item.refId)">
<div v-if="item.id" class="case-info-summary two-line-ellipsis" @click="toCaseDetail(item.id, item.refId)">
{{ item.summary }}
<!-- <router-link :to="'/case/detail?id='+item.id"> -->
<!-- {{displayAll(item)}} -->
@@ -256,7 +262,7 @@
<!-- {{item.isAll?'收起':'展开'}} -->
<!-- </span> -->
</div>
<div style="display: flex;justify-content: flex-end;">
<div v-if="item.id" style="display: flex;justify-content: flex-end;">
<div style="margin:8px 0;">
<interactBar :type="3" :data="item" :comments="false" :shares="true"></interactBar>
</div>
@@ -365,7 +371,7 @@
</li>
</ul>
</div>
<div class="portal-ranking ranking-bg2" style="margin-top:26px">
<div v-if="recommendRank.length > 0" class="portal-ranking ranking-bg2" style="margin-top:26px">
<p class="ranking-title">推荐榜</p>
<ul class="ranking-data">
<li v-for="(item, index) in recommendRank" :key="index" class="title-line-ellipsis"
@@ -477,10 +483,14 @@ export default {
portalFloatTools,
interactBar,
timeShow,
author
author,
},
data() {
return {
isTimeData: false,
articlePageList: [],
caseTimeShow: true,
isTime: false,
numIsFalse: true,
switch: {
'total': '总',
@@ -561,9 +571,9 @@ export default {
};
},
watch: {
years() {
this.search(true)
}
// years() {
// this.search(true)
// }
},
computed: {
...mapGetters(["userInfo", "portalCase"]),
@@ -634,7 +644,7 @@ export default {
list.push(one);
}
})
console.log(list,'计算属性');
// console.log(list,'计算属性');
return list;
},
@@ -653,7 +663,7 @@ export default {
},
beforeRouteLeave (to, from, next) {
if(to.name !== 'caseDetail'){
console.log('我是外')
// console.log('我是外')
this.queryCondition.pageIndex = 1
this.search()
// window.location.reload()
@@ -665,7 +675,7 @@ export default {
},
beforeRouteEnter(to, from, next) {
if(from.name !== 'caseDetail'){
console.log('我是内')
// console.log('我是内')
}
next(vm=>{
vm.$nextTick(() => {
@@ -756,10 +766,10 @@ export default {
history.pushState(null, null, document.URL); //这里有没有都无所谓,最好是有以防万一
isBack = true;
}
console.log(isBack, 'isBack');
// console.log(isBack, 'isBack');
// Promise.all([apiType.items("org_domain"), apiCase.majorTypes()]).then(rs => {
// 90是测试环境155是生产环境
console.log(this.caseType);
// console.log(this.caseType);
Promise.all([apiType.treeList(1,Number(this.caseType ?? 155),1), apiCase.majorTypes()]).then(rs => {
if (rs[0].code == 200) {
@@ -824,7 +834,7 @@ export default {
},
beforeDestroy() {
// window.removeEventListener("scroll", this.handleScroll);
console.log('销毁了');
// console.log('销毁了');/
},
methods: {
@@ -837,7 +847,7 @@ export default {
this.getPopularity()
},
handleType(msg){
this.queryCondition.type = msg
// this.queryCondition.type = msg
},
handleOptionClick(treeItem){
this.treeList.forEach(one => {
@@ -897,14 +907,14 @@ export default {
this.treeList = result
}
} catch (error) {
console.log(error);
// console.log(error);
}
},
getYears() {
apiCase.caseYears().then(res => {
if (res.status == 200) {
const { result } = res;
console.log(result);
// console.log(result);
this.caseYears = result.map(year => ({
value: year,
label: year,
@@ -914,6 +924,10 @@ export default {
},
// 查看率的时间
toCaseDetail(id, refId) {
if(!id){
this.$message.error('该案例已被删除')
return
}
if (refId) {
apiCase.startReadTimer(refId)
}
@@ -983,7 +997,7 @@ export default {
},
// 组织领域全部
domainall(type) {
console.log(this.selectList, 999);
// console.log(this.selectList, 999);
if (type == 1) {
// 清空一下所有的
this.domain.forEach(item => {
@@ -1247,7 +1261,13 @@ export default {
this.queryCondition.orderAsc = this.pageViewNum == 2 ? true : this.pageViewNum == 1 ? false : ''
this.search(true);
},
yearsChange(e){
this.search(true)
},
searchexcellent(num) {
this.isTimeData = false
this.isTime = false
this.caseTimeShow = true
this.pubTimeNum = 0
this.pageViewNum = 0
this.queryCondition.orderField = ''
@@ -1260,15 +1280,24 @@ export default {
// }
this.queryCondition.excellent =false;
this.queryCondition.type = num;
this.years = []
if(num == 'excellent'){
this.queryCondition.excellent =true;
this.queryCondition.type = num;
}
if(num == 'all'){
if(num == 'all' || num == 'recommend'){
this.pubTimeNum = 1
this.queryCondition.orderField = 'sysCreateTime'
this.queryCondition.orderAsc = false
}
if(num == 'time'){
this.isTime = true
this.caseTimeShow = false
this.isTimeData = true
}
if(num == 'collect'){
this.caseTimeShow = false
}
this.search(true);
// this.getCaseData();
},
@@ -1398,7 +1427,7 @@ export default {
children: item.list || []
}
})
console.log(JSON.stringify(this.queryCondition.orgDomainDtos));
// console.log(JSON.stringify(this.queryCondition.orgDomainDtos));
@@ -1432,7 +1461,7 @@ export default {
if(this.queryCondition.type == 'collect'){
const params = {
pageIndex:this.queryCondition.pageIndex,
pageSize:10,
pageSize:5,
orderField:this.queryCondition.orderField,
orderAsc:this.queryCondition.orderAsc
}
@@ -1452,7 +1481,6 @@ export default {
};
});
this.caseList.list = res.result.list
console.log(res.result.list ,'有没有1111数据')
this.getCaseUserData(res.result.list);
// 给所有的赋值
this.caseList.count = res.result.count;
@@ -1466,14 +1494,30 @@ export default {
return
}
if(this.queryCondition.type=='time'){
const data = {
// const data = {
// pageIndex: this.queryCondition.pageIndex,
// pageSize: 5,
// contentType: 3,
// aid: this.userInfo.aid||'965342027497607168',
// hidden: '',
// eventKey: 'readCase'
// }
// await apiCase.queryViewRecord(data).then(res=>{
// if(res.status == 200){
// if(res.result.list.length > 0){
// let ids = res.result.list.map(item=>item.contentId);
// const noReapetIds = [...new Set(ids)];
// this.articlePageList = res.result.list;
// this.getCase(noReapetIds,res.result.list)
// this.caseList.count = res.result.count;
// this.caseList.showPagCount = res.result.count;
// }
// }
// })
const params = {
pageIndex: this.queryCondition.pageIndex,
pageSize: 10,
contentType: 3,
aid: this.userInfo.aid || '965628977500655616',
hidden: '',
}
await apiCase.queryViewRecord(data).then(res=>{
await apiCase.browsingHistory(params).then(res=>{
if(res.status == 200){
if(res.result.list.length > 0){
this.isSeach = false;
@@ -1490,7 +1534,6 @@ export default {
});
this.caseList.list = res.result.list
this.getCaseUserData(res.result.list);
// 给所有的赋值
this.caseList.count = res.result.count;
this.caseList.showPagCount = res.result.count;
setTimeout(() => {
@@ -1524,7 +1567,7 @@ export default {
} else {
this.moreState = 3;
}
console.log(res?.result?.list ,'有没有数据');
// console.log(res?.result?.list ,'有没有数据');
this.caseList.list = res.result.list
this.getCaseUserData(res.result.list);
// 给所有的赋值
@@ -1537,7 +1580,10 @@ export default {
this.$message.error(res.message);
}
}).catch(err => {
console.log(err);
// console.log(err);
setTimeout(() => {
this.numIsFalse = false
}, 3000);
});
// await apiCase.queryList(this.queryCondition).then(res => {
@@ -1573,6 +1619,50 @@ export default {
// console.log(err);
// });
},
getCase(ids,list){
console.log(ids,list,'xixixi')
apiCase.ids(ids).then(res=>{
console.log(res,'ressss')
return
if(res.status == 200) {
this.isSeach = false;
const listData = []
list.forEach((item, index) => {
res.result.some(con => {
if (con.id == item.contentId) {
item.info = con;
con.eventTime = item.eventTime
listData.push(con)
if(typeof item.info.majorType == 'string') {
item.info.majorType = item.info.majorType.split(',');
}
return true;
} else {
return false;
}
});
});
listData.forEach(item=>{
item.info = {};
item.deleted=false;
item.authorInfo = {
aid: "",
name: "",
orgInfo: "",
avatar: "",
sex: null
}
item.isAll = false;
})
setTimeout(() => {
this.numIsFalse = false
}, 3000);
this.getCaseUserData(listData);
this.caseList.list = listData
console.log(listData,'this.caseList.list')
}
})
},
// getTags() {
// this.searchTags = [];
// let caseData = deepClone(this.queryCondition);
@@ -1760,7 +1850,7 @@ export default {
margin-bottom: 10px;
font-size: 18px;
max-width: 400px;
min-width: 300px;
min-width: 260px;
height: 67px;
background: #DDEDFF;
border-radius: 8px;
@@ -2184,7 +2274,7 @@ export default {
font-size: 12px;
border-radius: 2px;
padding: 2px 4px;
margin-left: 20px;
margin-left: 15px;
}
}
@@ -2407,9 +2497,9 @@ export default {
.text{
// color: #fff;
}
.png{
background: url('../../../assets/images/case/Frame(17).png') no-repeat;
}
// .png{
// background: url('../../../assets/images/case/Frame(17).png') no-repeat;
// }
}
.png{
width: 18px;
@@ -2447,7 +2537,7 @@ export default {
.png{
width: 20px;
height: 20px;
background: url('../../../assets/images/case/Frame(17).png') no-repeat;
background: url('../../../../public/images/browse.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
@@ -2472,9 +2562,9 @@ export default {
.text{
// color: #fff;
}
.png{
background: url('../../../assets/images/case/Frame(4).png') no-repeat;
}
// .png{
// background: url('../../../assets/images/case/Frame(4).png') no-repeat;
// }
}
.png{
width: 18px;
@@ -2512,7 +2602,7 @@ export default {
.png{
width: 18px;
height: 18px;
background: url('../../../assets/images/case/Frame(4).png') no-repeat;
background: url('../../../../public/images/collect.png') no-repeat;
background-size: 100%;
margin-right: 9px;
}
@@ -2573,6 +2663,12 @@ export default {
.case-info {
.case-info-cont {
.case_text{
font-size: 14px;
font-weight: 400;
color: #666666;
margin-bottom: 8px;
}
.case-info-title {
font-size: 15px;
color: #333;