<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>