我的收藏回答

This commit is contained in:
zhaofang
2022-10-29 16:06:37 +08:00
parent d92be97960
commit aa565056fc
5 changed files with 201 additions and 19 deletions

View File

@@ -28,7 +28,7 @@
</div> </div>
<div> <div>
<interactBar :type="3" :readonly="true" :data="item" :views="false" :shares="false"></interactBar> <interactBar :type="3" :readonly="true" :data="item.cases" :views="false" :shares="false"></interactBar>
</div> </div>

View File

@@ -472,6 +472,8 @@ export default {
postData.title=this.data.name; postData.title=this.data.name;
}else if(this.type==60){ }else if(this.type==60){
postData.title=this.data.content; postData.title=this.data.content;
} else if(this.type==5){
postData.title='收藏回答';
} else { } else {
postData.title=this.data.title; postData.title=this.data.title;
} }

View File

@@ -0,0 +1,123 @@
<template>
<div class="answer-list">
<ul>
<li class="answer-list-index" v-for="item in items" :key="item.id">
<!-- <p class="portal-summary-text" style="margin-bottom:18px">
<span v-if="!personal || isFollow">{{item.aname}}</span>
{{item.cusInfo}}<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>
</p> -->
<h6 class="answer-title-info follow-home-title">
<span class="pointer" @click="jumpDetail(item)">{{item.qtitle || item.title}}</span>
<span class="follow-hide" style="float:right">
<el-button @click.stop="delCollectItem(item)" type="text" icon="el-icon-star-on" style="color:#8590A6">取消收藏</el-button>
<!-- <span @click="emitHide(item.id)"> <svg-icon style="margin-right: 10px;font-size:22px;padding-top: 4px;" icon-class="eyes"></svg-icon>隐藏 </span> -->
</span>
</h6>
<p class="answer-text">
{{displayAll(item)}}
<span style="color:#0B4D9D;cursor:pointer;" v-if="item.content && item.content.length>180" @click.stop="changeIsAll(item)">
{{item.isAll?'收起':'全文展开'}}
</span>
</p>
<div>
<interactBar :type="0" :data="item" :shares="false" :views="false" :readonly="true"></interactBar>
</div>
</li>
</ul>
</div>
</template>
<script>
import interactBar from "@/components/Portal/interactBar.vue";
import author from "@/components/Portal/authorInfo.vue";
import { mapGetters,mapActions } from 'vuex';
export default{
name:"answerList",
components: {
interactBar,
// timeShow,
author
},
props:{
items:{
type:Array,
default:()=>[]
},
},
computed: {
...mapGetters(['userInfo']),
},
data(){
return{
answerList:[]
}
},
methods:{
delCollectItem(item) {
this.$confirm('您确定要取消收藏吗?', '取消提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
this.$emit('confirm', item);
// apiFavorites.del(item){
// console.log(this.$parent,"我拿到的父组件")
// }
})
.catch(() => {});
},
jumpDetail(item){
this.$router.push('/qa/answer?id='+item.qid)
},
emitHide(id) {
this.$emit('hideIndex',id)
},
displayAll(item) {
if (!item.isAll && item.content && item.content.length > 180) {
return item.content.slice(0, 180) + "...";
}
return item.content;
},
//展示全部
changeIsAll(item) {
item.isAll = !item.isAll;
},
}
}
</script>
<style lang="scss" scoped>
.answer-list{
ul{
margin: 0;
}
.answer-list-index{
padding: 30px 0;
border-bottom: 1px solid rgba($color: #999999, $alpha: 0.2) !important;
::v-deep .interact-bar-btns{
.interact-bar-btn{
text-align: right;
min-width: 78px !important;
margin-right: 0;
}
}
}
.answer-title-info{
margin: 0;
margin-bottom: 16px;
}
.answer-text{
margin-bottom: 18px;
font-size: 14px;
word-break:break-all;
color: #333330;
line-height: 20px;
}
}
</style>

View File

@@ -81,7 +81,7 @@
<div class="answer-time"> <div class="answer-time">
<div> <!--之前显示时间的位置--> </div> <div> <!--之前显示时间的位置--> </div>
<div style="margin-right: 10px;"> <div style="margin-right: 10px;">
<interactBar :type="5" :data="item" :favorites="false" :comments="false" :shares="false" :views="false"></interactBar> <interactBar :type="5" :data="item" :comments="false" :shares="false" :views="false"></interactBar>
</div> </div>
</div> </div>
<div class="answer-boot"> <div class="answer-boot">

View File

@@ -41,6 +41,7 @@
<note-list v-if="item.type==6" @confirm="confirm" :list="[item]"></note-list> <note-list v-if="item.type==6" @confirm="confirm" :list="[item]"></note-list>
<article-items v-if="item.type==2" @confirm="confirm" :items="[item]"></article-items> <article-items v-if="item.type==2" @confirm="confirm" :items="[item]"></article-items>
<qa-items v-if="item.type==4" :items="[item]" @confirm="confirm" :collect="true" :share="false" :remove="false" :edit="false"></qa-items> <qa-items v-if="item.type==4" :items="[item]" @confirm="confirm" :collect="true" :share="false" :remove="false" :edit="false"></qa-items>
<answer-items v-if="item.type==5" :items="[item]" @confirm="confirm"></answer-items>
</div> </div>
<!-- v-if="courseList.count>courseList.pageSize" --> <!-- v-if="courseList.count>courseList.pageSize" -->
<div v-if="dataList.list.length > 0" style="text-align: center;margin-top:57px"> <div v-if="dataList.list.length > 0" style="text-align: center;margin-top:57px">
@@ -172,23 +173,10 @@
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="问" name="qa"> <el-tab-pane label="问" name="qa">
<div> <div>
<!-- <div style="padding-bottom: 10px;">
<div style="display: flex;justify-content:flex-start;">
<div style="padding: 0px 5px;">
<el-select v-model="qaList.resolve" style="width: 110px;" clearable>
<el-option label="未解决" :value="false"></el-option>
<el-option label="已解决" :value="true"></el-option>
</el-select>
</div>
<div style="padding: 0px 5px;"><el-input placeholder="关键词搜索" v-model="qaList.title"></el-input></div>
<div style="padding: 0px 5px;"><el-button @click="findQa" icon="el-icon-search" type="primary" >搜索</el-button></div>
</div>
</div> -->
<qa-items :items="qaList.list" @confirm="confirm" :collect="true" :share="false" :remove="false" :edit="false"></qa-items> <qa-items :items="qaList.list" @confirm="confirm" :collect="true" :share="false" :remove="false" :edit="false"></qa-items>
</div> </div>
<!-- v-if="qaList.count>qaList.pageSize" -->
<div v-if="qaList.list.length > 0" style="text-align: center;margin-top:57px"> <div v-if="qaList.list.length > 0" style="text-align: center;margin-top:57px">
<el-pagination <el-pagination
background background
@@ -208,6 +196,29 @@
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="回答" name="answer">
<div>
<answer-items :items="answerList.list" @confirm="confirm"></answer-items>
</div>
<div v-if="answerList.list.length > 0" style="text-align: center;margin-top:57px">
<el-pagination
background
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="answerList.pageIndex"
:page-sizes="[10, 20, 30, 40]"
:page-size="answerList.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="answerList.count"
></el-pagination>
</div>
<div v-else>
<div v-if="answerList.list.length == 0">
<div v-if="isSearh" class="zan-wu">没有查询到相关内容</div>
<div v-else class="zan-wu">暂无数据</div>
</div>
</div>
</el-tab-pane>
</el-tabs> </el-tabs>
<div style="height: 100px;text-align: center;"></div> <div style="height: 100px;text-align: center;"></div>
</div> </div>
@@ -220,6 +231,7 @@ import courseItems from '@/components/Course/collectItem.vue';
import caseItems from '@/components/Case/collectList.vue'; import caseItems from '@/components/Case/collectList.vue';
import noteList from '@/components/HomePage/favoritesNote.vue' import noteList from '@/components/HomePage/favoritesNote.vue'
import qaItems from '@/components/Qa/favoritesQaList.vue'; import qaItems from '@/components/Qa/favoritesQaList.vue';
import answerItems from '@/components/Qa/answerList.vue';
import apiFavorite from '@/api/modules/favorites.js'; import apiFavorite from '@/api/modules/favorites.js';
import apiUser from '@/api/system/user.js'; import apiUser from '@/api/system/user.js';
import apiNote from '@/api/phase2/note.js'; import apiNote from '@/api/phase2/note.js';
@@ -228,7 +240,7 @@ import courseImage from '@/components/Course/courseImage.vue';
import {cutFullName} from "@/utils/tools.js"; import {cutFullName} from "@/utils/tools.js";
export default { export default {
name: 'myShareIndex', name: 'myShareIndex',
components: { articleItems, courseItems, qaItems, courseImage,caseItems,noteList}, components: { articleItems, courseItems, qaItems, courseImage,caseItems,noteList,answerItems},
data() { data() {
return { return {
isSearh:false, isSearh:false,
@@ -248,6 +260,12 @@ export default {
label: '录播课' label: '录播课'
} }
], ],
answerList:{
pageIndex: 1,
pageSize: 10,
count: 0,
list: []
},
qaList: { qaList: {
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
@@ -306,6 +324,9 @@ export default {
if (this.tabName == 'course') { if (this.tabName == 'course') {
this.findCourse(); this.findCourse();
} }
if (this.tabName == 'answer') {
this.findAnswer();
}
if (this.tabName == 'all') { if (this.tabName == 'all') {
this.findAll(); this.findAll();
} }
@@ -336,6 +357,9 @@ export default {
if (this.tabName == 'all') { if (this.tabName == 'all') {
this.findAll(); this.findAll();
} }
if (this.tabName == 'answer') {
this.findAnswer();
}
}, },
resData() { resData() {
this.qaList.pageIndex = 1; this.qaList.pageIndex = 1;
@@ -370,6 +394,9 @@ export default {
if (tab.name == 'all') { if (tab.name == 'all') {
this.findAll(); this.findAll();
} }
if (this.tabName == 'answer') {
this.findAnswer();
}
}, },
//分页点击事件 //分页点击事件
handleSizeChange(value) { handleSizeChange(value) {
@@ -396,6 +423,10 @@ export default {
this.dataList.pageSize = value; this.dataList.pageSize = value;
this.findAll(); this.findAll();
} }
if (this.tabName == 'answer') {
this.answerList.pageSize = value;
this.findAnswer();
}
}, },
//分页点击事件 //分页点击事件
handleCurrentChange(value) { handleCurrentChange(value) {
@@ -423,10 +454,33 @@ export default {
this.dataList.pageIndex = value; this.dataList.pageIndex = value;
this.findAll(); this.findAll();
} }
if (this.tabName == 'answer') {
this.answerList.pageIndex = value;
this.findAnswer();
}
},
findAnswer() {
let query = {
pageIndex:this.answerList.pageIndex,
pageSize:this.answerList.pageSize,
// dataType:1,
// orderType 排序顺序 顺序倒叙
// orderField 排序字段
keyword: this.keyword.trim()
}
apiFavorite.findAnswerPage(query).then(res=>{
if(res.status==200){
res.result.list.forEach(item=>{
item.isAll = false;
})
this.answerList.count = res.result.count;
this.answerList.list = res.result.list;
}
})
}, },
findNote() { findNote() {
let query = { let query = {
paegIndex:this.noteList.pageIndex, pageIndex:this.noteList.pageIndex,
pageSize:this.noteList.pageSize, pageSize:this.noteList.pageSize,
dataType:1, dataType:1,
// orderType 排序顺序 顺序倒叙 // orderType 排序顺序 顺序倒叙
@@ -749,7 +803,7 @@ export default {
}, },
confirm(item) { confirm(item) {
let id = ''; let id = '';
if(item.type){ if(item.favoriteId){
id = item.favoriteId; id = item.favoriteId;
} else { } else {
id = item.id; id = item.id;
@@ -775,6 +829,9 @@ export default {
if (this.tabName == 'all') { if (this.tabName == 'all') {
this.findAll(); this.findAll();
} }
if (this.tabName == 'answer') {
this.findAnswer();
}
} else { } else {
this.$message.error(res.message); this.$message.error(res.message);
} }