parent
12fe818f6f
commit
553e108b46
@ -0,0 +1,10 @@
|
|||||||
|
import httpService from "@/request"
|
||||||
|
|
||||||
|
// 话题列表
|
||||||
|
export function topicList(params) {
|
||||||
|
return httpService({
|
||||||
|
url: `/user/topic/list`,
|
||||||
|
method: 'get',
|
||||||
|
params: params,
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,313 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="content">
|
||||||
|
<div class="cardTitle">动态信息</div>
|
||||||
|
<div class="content">
|
||||||
|
<span class="title">动态内容</span>
|
||||||
|
<a-row>
|
||||||
|
<a-col class="text-content">{{ detailData.content }}</a-col>
|
||||||
|
<a-col class="img-box">
|
||||||
|
<!-- <img
|
||||||
|
:src="$ImgUrl(img.url)"
|
||||||
|
class="contentImg"
|
||||||
|
v-for="(img, index) in detailData.imgList"
|
||||||
|
:key="index"
|
||||||
|
/> -->
|
||||||
|
<img src="https://img0.baidu.com/it/u=2560936835,1792581374&fm=253&fmt=auto&app=138&f=JPEG?w=658&h=403" class="contentImg" alt="">
|
||||||
|
<img src="https://img0.baidu.com/it/u=2560936835,1792581374&fm=253&fmt=auto&app=138&f=JPEG?w=658&h=403" class="contentImg" alt="">
|
||||||
|
<img src="https://img0.baidu.com/it/u=2560936835,1792581374&fm=253&fmt=auto&app=138&f=JPEG?w=658&h=403" class="contentImg" alt="">
|
||||||
|
<img src="https://img0.baidu.com/it/u=2560936835,1792581374&fm=253&fmt=auto&app=138&f=JPEG?w=658&h=403" class="contentImg" alt="">
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="4">
|
||||||
|
<span class="title">发布者</span>
|
||||||
|
<a-card style="width: 60%;margin:10px;border-radius:4px;height:190px;text-align:center">
|
||||||
|
<div><a-avatar :size="64" icon="user" /></div>
|
||||||
|
<div class="text-content" style="margin-top:20px">{{detailData.createName}}</div>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="20">
|
||||||
|
<span class="title">其他信息</span>
|
||||||
|
<a-card style="width: 60%;margin:10px;border-radius:4px;height:190px">
|
||||||
|
<a-descriptions layout="vertical">
|
||||||
|
<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>
|
||||||
|
</a-card>
|
||||||
|
</a-col>
|
||||||
|
<a-col>
|
||||||
|
<div class="title">关联话题</div>
|
||||||
|
<div class='topic-box'>
|
||||||
|
<a-button class='topic'>#{{detailData.content}}</a-button>
|
||||||
|
<a-button class='topic'>#{{detailData.content}}</a-button>
|
||||||
|
<a-button class='topic'>#{{detailData.content}}</a-button>
|
||||||
|
<a-button class='topic'>#{{detailData.content}}</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,
|
||||||
|
} from "@/api/operation/dynamic";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
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.detailData = this.$route.params.data;
|
||||||
|
console.log(this.detailData);
|
||||||
|
this.getComment();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getComment() {
|
||||||
|
let res = await commentList({
|
||||||
|
pageNum: this.pagination.current,
|
||||||
|
size: this.pagination.pageSize,
|
||||||
|
});
|
||||||
|
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) {
|
||||||
|
console.log(data);
|
||||||
|
this.selectedRowKeys = data;
|
||||||
|
},
|
||||||
|
handleTableChange(pagination) {
|
||||||
|
console.log(pagination);
|
||||||
|
const pager = { ...this.pagination };
|
||||||
|
pager.current = pagination.current;
|
||||||
|
pager.pageSize = pagination.pageSize;
|
||||||
|
this.pagination = pager;
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
Actions(data) {
|
||||||
|
console.log(data);
|
||||||
|
console.log(this.selectedRowKeys);
|
||||||
|
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>
|
@ -0,0 +1,124 @@
|
|||||||
|
export const formItem = [
|
||||||
|
{
|
||||||
|
type: 'input',
|
||||||
|
label:'话题标题',
|
||||||
|
prop:'title',
|
||||||
|
placeholder:'请输入标题'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label:'状态',
|
||||||
|
prop:'status',
|
||||||
|
option:[{ id:1,name:'启用中'},{ id:2,name:'禁用中'}],
|
||||||
|
placeholder:'请选择状态'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label:'是否公开',
|
||||||
|
prop:'isPublic',
|
||||||
|
placeholder:'请选择',
|
||||||
|
option:[{ id:1,name:'是'},{ id:0,name:'否'}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'select',
|
||||||
|
label:'是否评论',
|
||||||
|
prop:'isRating',
|
||||||
|
placeholder:'请选择',
|
||||||
|
option:[{ id:1,name:'是'},{ id:0,name:'否'}]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
export const columns = [
|
||||||
|
{
|
||||||
|
title: "话题标题",
|
||||||
|
dataIndex: "title",
|
||||||
|
width: "12%",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "内容",
|
||||||
|
dataIndex: "content",
|
||||||
|
width: "16%",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "状态",
|
||||||
|
dataIndex: "status",
|
||||||
|
width: "10%",
|
||||||
|
customRender: function (status) {
|
||||||
|
switch (status) {
|
||||||
|
case 1:
|
||||||
|
return '启用中'
|
||||||
|
case 2:
|
||||||
|
return '禁用中'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "是否公开",
|
||||||
|
dataIndex: "isPublic",
|
||||||
|
width: "9%",
|
||||||
|
customRender: function (isPublic) {
|
||||||
|
switch (isPublic) {
|
||||||
|
case 1:
|
||||||
|
return '是'
|
||||||
|
case 0:
|
||||||
|
return '否'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "是否可以评论",
|
||||||
|
dataIndex: "isRating",
|
||||||
|
width: "10%",
|
||||||
|
customRender: function (isRating) {
|
||||||
|
switch (isRating) {
|
||||||
|
case 1:
|
||||||
|
return '是'
|
||||||
|
case 0:
|
||||||
|
return '否'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "用户类型",
|
||||||
|
dataIndex: "userType",
|
||||||
|
width: "10%",
|
||||||
|
customRender: function (userType) {
|
||||||
|
switch (userType) {
|
||||||
|
case 1:
|
||||||
|
return '住户'
|
||||||
|
case 2:
|
||||||
|
return '物业'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "发布人",
|
||||||
|
dataIndex: "createName",
|
||||||
|
width: "8%",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "发布时间",
|
||||||
|
dataIndex: "createDate",
|
||||||
|
width: "12%",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "是否开启租赁",
|
||||||
|
dataIndex: "isEnableLease",
|
||||||
|
scopedSlots: { customRender: "switch" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "操作",
|
||||||
|
dataIndex: "action",
|
||||||
|
key: "action",
|
||||||
|
width: "180",
|
||||||
|
fixed: "right",
|
||||||
|
scopedSlots: { customRender: "action" },
|
||||||
|
},
|
||||||
|
]
|
||||||
|
export const pagination = {
|
||||||
|
current: 1,
|
||||||
|
total: 0,
|
||||||
|
pageSize: 10,
|
||||||
|
showTotal: (total) => `共 ${total} 条`,
|
||||||
|
showSizeChanger: true,
|
||||||
|
showQuickJumper: true,
|
||||||
|
}
|
@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="cardTitle">社区话题</div>
|
||||||
|
<searchForm :formItem="formItem" @getSearch="getData"></searchForm>
|
||||||
|
<a-table
|
||||||
|
:columns="columns"
|
||||||
|
:data-source="tableData"
|
||||||
|
:pagination="pagination"
|
||||||
|
:scroll="{ x: 1400 }"
|
||||||
|
@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" @click="del([row.id])">删除</a>
|
||||||
|
</a-space>
|
||||||
|
</span>
|
||||||
|
<span slot="switch" slot-scope="switchV, row">
|
||||||
|
<a-switch
|
||||||
|
:checked="switchV === 1"
|
||||||
|
@change="handleEnable(row)"
|
||||||
|
></a-switch>
|
||||||
|
</span>
|
||||||
|
</a-table>
|
||||||
|
<div class="action">
|
||||||
|
<a-dropdown :disabled='!hasSelected'>
|
||||||
|
<a-menu slot="overlay" @click="handleMenuClick">
|
||||||
|
<a-menu-item key="1"> 批量删除 </a-menu-item>
|
||||||
|
<a-menu-item key="2"> 2nd item </a-menu-item>
|
||||||
|
</a-menu>
|
||||||
|
<a-button> 批量操作 <a-icon type="down" /> </a-button>
|
||||||
|
</a-dropdown>
|
||||||
|
<span style="margin-left: 8px">
|
||||||
|
<template v-if="hasSelected">
|
||||||
|
{{ `已选择 ${selectedRowKeys.length} 条` }}
|
||||||
|
</template>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { topicList } from "@/api/operation/dynamic/topic.js";
|
||||||
|
import { formItem, columns, pagination } from "./depend/config";
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tableData: [],
|
||||||
|
searchForm: {},
|
||||||
|
formItem,
|
||||||
|
columns,
|
||||||
|
pagination,
|
||||||
|
// 选择的index
|
||||||
|
selectedRowKeys: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getData(data) {
|
||||||
|
this.searchForm = data;
|
||||||
|
let res = await topicList({
|
||||||
|
pageNum: this.pagination.current,
|
||||||
|
size: this.pagination.pageSize,
|
||||||
|
});
|
||||||
|
this.tableData = res.data.rows;
|
||||||
|
this.pagination.total = res.data.total;
|
||||||
|
},
|
||||||
|
selectionChoosed(data) {
|
||||||
|
console.log(data);
|
||||||
|
this.selectedRowKeys = data;
|
||||||
|
},
|
||||||
|
handleMenuClick(data) {
|
||||||
|
console.log(data);
|
||||||
|
},
|
||||||
|
handleTableChange(pagination) {
|
||||||
|
console.log(pagination);
|
||||||
|
const pager = { ...this.pagination };
|
||||||
|
pager.current = pagination.current;
|
||||||
|
pager.pageSize = pagination.pageSize;
|
||||||
|
this.pagination = pager;
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
hasSelected() {
|
||||||
|
return this.selectedRowKeys.length > 0;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
</style>
|
Loading…
Reference in new issue