<template>
|
<div class="page_talk">
|
<v-header
|
title="议事投票"
|
:bar="bar"
|
search
|
@on-search="onSearch"
|
></v-header>
|
<div class="add">
|
<el-button type="primary" size="small" @click.stop="onAdd"
|
>新增</el-button
|
>
|
</div>
|
<div class="tab">
|
<v-tool-table :trs="trs" :tds="tds">
|
<template v-slot:contentType="{ scope }">
|
{{
|
["", "社区议事", "院落议事", "党群议事", "居民议事", "其他"][
|
scope.contentType
|
]
|
}}
|
</template>
|
<template v-slot:status="{ scope }">
|
<span v-if="scope.status == 1">未开始</span>
|
<span v-if="scope.status == 2">进行中</span>
|
<span v-if="scope.status == 3">待公布</span>
|
<span v-if="scope.status == 4">已公布</span>
|
<span v-if="scope.status == 5">已发布</span>
|
</template>
|
<template v-slot:btn="item">
|
<div class="table_flex">
|
<span class="col_primary" @click="onSend(item.scope)">回复</span>
|
<span class="col_primary" @click="onDel(item.scope.id)">删除</span>
|
<br />
|
<!--
|
<span class="col_primary" @click="edit(item.scope)">修改</span> -->
|
<!-- <span class="col_primary" @click="onDetail(item.scope.id)">查看</span>
|
<span class="col_primary" @click="result(item.scope.id)">公布结果</span> -->
|
<!-- 未开始 -->
|
<span
|
v-if="item.scope.status == 1"
|
class="col_primary"
|
@click="edit(item.scope)"
|
>修改</span
|
>
|
<!-- 进行中 -->
|
<div v-if="item.scope.status == 2">
|
<span class="col_primary" @click="onDetailSta(item.scope.id)"
|
>查看统计</span
|
>
|
</div>
|
<!-- 待公布 -->
|
<div v-if="item.scope.status == 3">
|
<span
|
class="col_primary"
|
@click="onDetailSta(item.scope.id, item.scope.type)"
|
>查看统计</span
|
>
|
<span class="col_primary" @click="result(item.scope.id, 1)"
|
>公布结果</span
|
>
|
</div>
|
<!-- 已发布 -->
|
<div v-if="item.scope.status == 5">
|
<span
|
class="col_primary"
|
@click="onDetail(item.scope.id, item.scope.type)"
|
>查看</span
|
>
|
<span class="col_primary" @click="edit(item.scope)">修改</span>
|
</div>
|
<!-- 已公布 -->
|
<div v-if="item.scope.status == 4">
|
<span
|
class="col_primary"
|
@click="onDetailSta(item.scope.id, item.scope.type)"
|
>查看统计</span
|
>
|
<span class="col_primary" @click="result(item.scope.id, 2)"
|
>修改公布</span
|
>
|
</div>
|
</div>
|
</template>
|
<template v-slot:num="item">
|
<div class="table_flex">
|
<span class="col_info" @click="onComment(item.scope.id)">{{
|
item.scope.commentNum
|
}}</span>
|
</div>
|
</template>
|
<template v-slot:type="item">
|
<b>{{ ["", "议事", "投票"][+item.scope.type] }}</b>
|
</template>
|
</v-tool-table>
|
</div>
|
<v-tool-page :item="paged" @on-page="onPage"></v-tool-page>
|
</div>
|
</template>
|
|
<script>
|
import { mapState } from "vuex";
|
export default {
|
props: {},
|
components: {},
|
data() {
|
return {
|
bar: [
|
{
|
title: "关键词",
|
name: "subject",
|
plac: "请输入主题、发布人等关键词进行查看",
|
width: "350px !important"
|
},
|
{ title: "发布时间", name: "time", type: "times" },
|
{
|
title: "状态",
|
name: "status",
|
type: "select",
|
plac: "请选择",
|
list: ["未开始", "进行中", "待公布", "已公布", "已发布"].map(
|
(r, v) => {
|
return { label: r, value: v + 1 };
|
}
|
)
|
},
|
{
|
title: "议事内容",
|
name: "contentType",
|
type: "select",
|
plac: "请选择",
|
list: [
|
{ label: "社区议事", value: "1" },
|
{ label: "院落议事", value: "2" },
|
{ label: "党群议事", value: "3" },
|
{ label: "居民议事", value: "4" },
|
{ label: "其他", value: "5" }
|
]
|
}
|
],
|
trs: [
|
{ text: "序号", val: "index", width: "50px" },
|
{ text: "主题", val: "discussSubject" },
|
{ text: "类型", val: "btn", slot: "type" },
|
{ text: "议事内容", val: "btn", slot: "contentType" },
|
{ text: "状态", val: "btn", slot: "status" },
|
{ text: "浏览量", val: "viewsNum" },
|
{ text: "点赞量", val: "signNum" },
|
{ text: "评论数(条)", val: "btn", slot: "num" },
|
{ text: "发布人", val: "userName" },
|
{ text: "发布时间", val: "createAt" },
|
{ text: "操作", val: "btn", width: "150px" }
|
],
|
tds: [],
|
paged: { page: 0, total: 0, r: 0, limit: 10 },
|
os: {},
|
search: {}
|
};
|
},
|
computed: {
|
...mapState({ vuex_page: "pageReset" })
|
},
|
watch: {
|
vuex_page: {
|
handler(n) {
|
if (n.page === this.$route.path) {
|
// this.paged.page = 1;
|
this.init();
|
}
|
},
|
deep: true
|
}
|
},
|
methods: {
|
onDetailSta(v, type) {
|
this.$router.push(`/add_talk_statistics?id=${v}&type=${type}`);
|
},
|
onComment(v) {
|
this.$router.push(this.$nav.url("/act_talk_comment/" + v));
|
},
|
onDetail(v, type) {
|
this.$router.push(this.$nav.url("/act_talk_detail/" + v + "/" + type));
|
},
|
onDel(i) {
|
this.$js.model("", "确定要删除该议事投票吗?删除后将无法恢复!", res => {
|
if (res) {
|
this.$api.del("discuss?id=" + i, { id: i }, e => {
|
demo.toast("删除成功");
|
this.init();
|
});
|
}
|
});
|
},
|
onSend(v) {
|
this.$store.dispatch("setFixed", {
|
event: "add",
|
data: {
|
type: "talk-send",
|
data: { id: v.id, userId: v.userId }
|
},
|
time: Date.now()
|
});
|
},
|
result(v, type) {
|
this.$store.dispatch("setFixed", {
|
event: "add",
|
data: {
|
type: "talk-result",
|
data: { id: v, type: type }
|
},
|
time: Date.now()
|
});
|
},
|
onAdd() {
|
this.$router.push("/add_talk");
|
// this.$store.dispatch("setFixed", {
|
// event: "add",
|
// data: {
|
// type: "talk-add",
|
// },
|
// time: Date.now(),
|
// });
|
},
|
edit(v) {
|
this.$store.dispatch("setFixed", {
|
event: "add",
|
data: {
|
type: "talk-edit",
|
data: { item: v }
|
},
|
time: Date.now()
|
});
|
},
|
onSearch(v) {
|
if (v.time && v.time.length && v.time[1]) {
|
v.begin = v.time[0];
|
v.end = v.time[1];
|
} else {
|
v.begin = "";
|
v.end = "";
|
}
|
this.search = demo.copy(v);
|
delete this.search.time;
|
this.paged.page = 1;
|
this.init();
|
},
|
// 分页点击
|
onPage(v) {
|
if (v.page === this.paged.page && v.page && !v.reset) {
|
return 0;
|
}
|
this.paged.page = v.page;
|
this.paged.limit = v.limit;
|
this.init();
|
},
|
// 获取数据
|
init() {
|
let v = demo.copy(
|
Object.assign(this.os, this.search, {
|
pageNum: this.paged.page,
|
pageSize: this.paged.limit
|
})
|
);
|
this.$api.post("pagediscuss", v, e => {
|
this.paged.total = e.total;
|
this.paged.r++;
|
this.tds = e.records || [];
|
e.records.map((item, index) => {
|
item.index = (this.paged.page - 1) * this.paged.limit + index + 1;
|
});
|
});
|
}
|
},
|
mounted() {}
|
};
|
</script>
|
<style lang="less" scoped>
|
.page_talk {
|
overflow-y: auto;
|
.tab,
|
.add {
|
margin-bottom: 10px;
|
}
|
}
|
</style>
|