You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

322 lines
7.5 KiB

<template>
<div>
<div class="content">
<div class="cardTitle">动态信息</div>
<div class="content">
<a-row>
<a-col>
<a-card>
<a-descriptions layout="vertical" :column="4">
<a-descriptions-item label="发布人">
{{ detailData.createName }}
</a-descriptions-item>
<a-descriptions-item label="动态内容">
{{ detailData.content }}
</a-descriptions-item>
<a-descriptions-item label="浏览数量">
{{ detailData.views }}
</a-descriptions-item>
<a-descriptions-item label="点赞数量">
{{ detailData.likes }}
</a-descriptions-item>
<a-descriptions-item label="发布时间">
{{ detailData.createDate }}
</a-descriptions-item>
<a-descriptions-item label="是否公开">
{{ detailData.isPublic === 1 ? "是" : "否" }}
</a-descriptions-item>
<a-descriptions-item label="是否可评论">
{{ detailData.isComment === 1 ? "是" : "否" }}
</a-descriptions-item>
<a-descriptions-item label="点赞数">
{{ detailData.likes }}
</a-descriptions-item>
<a-descriptions-item label="浏览量">
{{ detailData.views }}
</a-descriptions-item>
</a-descriptions>
</a-card>
</a-col>
<a-col class="img-box">
<div class="title" v-if="detailData.imgList.length>0"></div>
<img
:src="$ImgUrl(img.url)"
class="contentImg"
v-for="(img, index) in detailData.imgList"
:key="index"
/>
</a-col>
<a-col>
<div class="title">关联话题</div>
<div class="topic-box">
<a-button
class="topic"
v-for="item in detailData.topicTags"
:key="item.id"
>#{{ item.title }}</a-button
>
</div>
</a-col>
</a-row>
</div>
</div>
<div class="content">
<div class="cardTitle">评论列表</div>
<a-table
:columns="columns"
:data-source="tableData"
:pagination="pagination"
:scroll="{ x: 1200 }"
@change="handleTableChange"
:row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: selectionChoosed,
}"
:row-key="
(record, index) => {
return record.id;
}
"
>
<span slot="action" slot-scope="text, row">
<a-space>
<a
class="ant-dropdown-link"
v-if="row.isDelete === 1"
@click="del([row.id])"
>删除</a
>
<a
class="ant-dropdown-link"
v-if="row.isDelete === 0"
@click="recover([row.id])"
>恢复</a
>
</a-space>
</span>
</a-table>
<div style="margin-bottom: 16px" class="action">
<!-- 批量操作 -->
<a-select
type="primary"
v-model="activeAction"
:disabled="!hasSelected"
:loading="loading"
style="width: 120px"
@change="Actions"
placeholder="请选择操作"
>
批量
<a-select-option v-for="item in ActionsList" :key="item.value">
{{ item.label }}
</a-select-option>
</a-select>
<span style="margin-left: 8px">
<template v-if="hasSelected">
{{ ` ${selectedRowKeys.length} ` }}
</template>
</span>
</div>
</div>
</div>
</template>
<script>
import {
commentList,
commentRecover,
commentDel,
dynamicInfo,
} from "@/api/operation/dynamic";
export default {
data() {
return {
id: undefined,
detailData: {},
tableData: [],
selectedRowKeys: [],
activeAction: undefined,
loading: false,
ActionsList: [
{
value: 1,
label: "批量删除",
},
{
value: 2,
label: "批量恢复",
},
],
pagination: {
current: 1,
total: 0,
pageSize: 10,
showTotal: (total) => `${total}`,
showSizeChanger: true,
showQuickJumper: true,
},
columns: [
{
title: "评论内容",
width: "20%",
dataIndex: "content",
},
{
title: "评论人名称",
width: "15%",
dataIndex: "createName",
},
{
title: "评论人时间",
width: "15%",
dataIndex: "createDate",
},
{
title: "点赞数",
width: "12%",
dataIndex: "likes",
},
{
title: "是否删除",
width: "15%",
dataIndex: "isDelete",
customRender: function (isDelete) {
switch (isDelete) {
case 1:
return "否";
case 0:
return "是";
}
},
},
{
title: "操作",
dataIndex: "action",
key: "action",
width: "150",
fixed: "right",
scopedSlots: { customRender: "action" },
},
],
};
},
mounted() {
this.id = this.$route.params.data;
this.getComment();
this.getData();
},
methods: {
async getData() {
let res = await dynamicInfo({
communityDynamicId: this.id,
});
console.log(res.data)
this.detailData = res.data;
},
async getComment() {
let res = await commentList({
pageNum: this.pagination.current,
size: this.pagination.pageSize,
dynamicId: this.id,
});
this.tableData = res.data.rows;
this.pagination.total = res.data.total;
},
del(ids) {
console.log(ids);
this.$confirm({
title: "是否删除",
// okText:'删除',
// cancelText:'取消',
icon: "delete",
onOk: async () => {
let res = await commentDel({ commentIds: ids });
if (res.code === 200) {
this.$message.success(res.msg);
this.getComment();
} else {
this.$message.error(res.msg);
}
},
});
},
recover(ids) {
this.$confirm({
title: "是否恢复",
// okText:'删除',
// cancelText:'取消',
icon: "undo",
onOk: async () => {
let res = await commentRecover({ commentIds: ids });
if (res.code === 200) {
this.$message.success(res.msg);
this.getComment();
} else {
this.$message.error(res.msg);
}
},
});
},
selectionChoosed(data) {
this.selectedRowKeys = data;
},
handleTableChange(pagination) {
const pager = { ...this.pagination };
pager.current = pagination.current;
pager.pageSize = pagination.pageSize;
this.pagination = pager;
this.getData();
this.getComment();
},
Actions(data) {
this.activeAction = undefined;
if (data === 1) {
this.del(this.selectedRowKeys);
} else {
this.recover(this.selectedRowKeys);
}
},
},
computed: {
hasSelected() {
return this.selectedRowKeys.length > 0;
},
},
};
</script>
<style lang="less" scoped>
.action {
margin-top: -50px;
}
.title {
color: #000000a6;
font-weight: 500;
line-height: 19px;
}
.text-content {
color: #000000d9;
font-weight: 400;
line-height: 22px;
font-size: 16px;
}
.contentImg {
width: 168px;
height: 92px;
border-radius: 4px;
margin: 10px;
}
.img-box {
display: flex;
justify-content: flex-start;
}
.topic-box {
display: flex;
justify-content: flex-start;
}
.topic {
margin: 5px;
border-radius: 44px;
}
</style>