<template>
|
<div class="page_status">
|
<v-header
|
title="基层公开查询"
|
:bar="bar"
|
search
|
@on-search="onSearch"
|
@on-reset="onReset"
|
></v-header>
|
<div class="add">
|
<el-button
|
type="primary"
|
size="small"
|
@click="$router.push({ path: '/act_status_add', query: { id: 2 } })"
|
>新增</el-button
|
>
|
</div>
|
<div class="tab">
|
<v-tool-table :trs="trs" :tds="tds">
|
<template v-slot:btn="item">
|
<div class="table_flex">
|
<!-- {{item.scope.id}} -->
|
<span class="col_primary" @click="onCheck(item.scope.id)"
|
>查看</span
|
>
|
<span class="col_primary" @click="onDel(item.scope.id)">删除</span>
|
</div>
|
</template>
|
<template v-slot:zd="item">
|
<b>{{ ["否", "是"][+item.scope.isTopping] || "否" }}</b>
|
</template>
|
<template v-slot:status="item">
|
<b>{{ ["待发布", "已发布"][+item.scope.status] || "待发布" }}</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: "title" },
|
{
|
title: "状态",
|
name: "status",
|
type: "select",
|
list: [
|
{ label: "待发布", value: "0" },
|
{ value: "1", label: "已发布" }
|
]
|
},
|
{
|
title: "区域",
|
name: "communityId",
|
type: "cascaders",
|
list: [],
|
props: {
|
checkStrictly: true,
|
children: "children",
|
label: "name",
|
value: "name"
|
}
|
},
|
{ title: "发布时间", name: "time", type: "times" },
|
{
|
title: "基层公开分类",
|
name: "type",
|
type: "select",
|
list: [
|
{ label: "资金公开", value: "资金公开" },
|
{ label: "资产公开", value: "资产公开" },
|
{ label: "资源公开", value: "资源公开" },
|
{ label: "村集体经济组织项目", value: "村集体经济组织项目" }
|
]
|
}
|
],
|
trs: [
|
{ text: "序号", val: "index", width: "50px" },
|
{ text: "标题", val: "title" },
|
{ text: "社区", val: "communityName" },
|
{ text: "阅览量", val: "readNum" },
|
{ text: "基务公开分类", val: "typeName" },
|
{ text: "状态", val: "btn", slot: "status" },
|
{ text: "置顶", val: "btn", slot: "zd" },
|
{ text: "发布时间", val: "publishAt" },
|
{ text: "创建时间", val: "createAt" },
|
{ text: "操作", val: "btn" }
|
],
|
tds: [],
|
paged: { page: 0, total: 0, r: 0, limit: 10 },
|
os: {},
|
search: {},
|
communityIds: [], //筛选的所有社区数据
|
levelArr: [], //根据区域名称查询出来的chirldren数据
|
allAreaList: [], //所有的区域数据
|
originCommunityIds: [] //第一次根据区域算出来的社区id 用于重置后的重新赋值
|
};
|
},
|
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: {
|
// 置顶
|
onSearch(v) {
|
if (v.time && v.time.length && v.time[1]) {
|
v.publishAtBegin = v.time[0];
|
v.publishAtEnd = v.time[1];
|
} else {
|
v.publishAtBegin = "";
|
v.publishAtEnd = "";
|
}
|
|
//查询最后一个选择的分类比如【"区",“街道”,"社区"】
|
//如果是区,那么筛选出区下面的所有社区,如果是镇,筛选出镇下面的所有社区
|
//然后查找对应的社区数据然后用逗号拼接请求数据
|
console.log(v.communityId);
|
if (!v.communityId.length) {
|
demo.toast("请选择区域");
|
return;
|
}
|
if (v.communityId.length && v.communityId instanceof Array) {
|
this.communityIds = [];
|
this.levelArr = [];
|
let word = v.communityId[v.communityId.length - 1];
|
//根据关健字查找对应的区域
|
this.addIds(this.bar[2].list, word);
|
console.log(this.levelArr);
|
//查找出对应区域下面的所有社区
|
if (this.levelArr.length) {
|
this.addCommunityId(this.levelArr);
|
}
|
let ids = [];
|
this.communityIds.map(item => {
|
ids.push(item.streetId);
|
});
|
//逗号拼接请求数据
|
v.communityId = ids.join(",");
|
} else if (this.originCommunityIds.length) {
|
v.communityId = this.originCommunityIds;
|
}
|
|
if (!v.communityId.length) {
|
demo.toast("此区域没有社区");
|
return;
|
}
|
|
if (v.type.length) {
|
v.typeList = [v.type];
|
delete v.type;
|
}
|
|
// this.originCommunityIds
|
|
this.search = demo.copy(v);
|
delete this.search.time;
|
this.paged.page = 1;
|
this.init();
|
},
|
onReset(v) {
|
//重置的话需要重新更新
|
// this.dealData();
|
},
|
//查找出区域
|
addIds(arr, word) {
|
arr.map(item => {
|
//查找区域中和关键词相同的区域
|
if (item.name == word) {
|
//如果查找到的区域有chirld那么就返回如果没有说明没有下级或者是最底层社区
|
if (item.children) {
|
this.levelArr = item.children;
|
return;
|
} else {
|
if (item.streetId) {
|
this.communityIds.push(item);
|
}
|
}
|
} else if (item.children && item.children.length) {
|
this.addIds(item.children, word);
|
}
|
});
|
},
|
//汇集所有区域内的社区id
|
addCommunityId(arr) {
|
arr.map(item => {
|
if (item.children) {
|
this.addCommunityId(item.children);
|
} else {
|
if (item.streetId) {
|
this.communityIds.push(item);
|
}
|
}
|
});
|
},
|
|
// 分页点击
|
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() {
|
if (!this.search.typeList || !this.search.typeList.length) {
|
//传几个分类就查几个分类的数据
|
this.search.typeList = [
|
"资金公开",
|
"资产公开",
|
"资源公开",
|
"村集体经济组织项目",
|
"项目公开"
|
];
|
|
//民政局的账号需要多加三务公开
|
let account = demo.$session.get("user").account;
|
if (account == "pzhmzjsz") {
|
this.search.typeList = [
|
"资金公开",
|
"资产公开",
|
"资源公开",
|
"村集体经济组织项目",
|
"项目公开",
|
"财务公开",
|
"服务公开",
|
"党务公开"
|
];
|
}
|
}
|
let v = demo.copy(
|
Object.assign(this.os, this.search, {
|
pageNum: this.paged.page,
|
pageSize: this.paged.limit,
|
category: "2", // 3.基务公开
|
typeS: 2
|
})
|
);
|
//如果没有区域数据那么就不先更新数据
|
if (!this.bar[2].list.length) return;
|
let load = demo.loading();
|
setTimeout(() => {
|
if (load) {
|
demo.remove(load);
|
}
|
}, 30000);
|
this.$api.post("communityactivity/pagedynamic", v, e => {
|
demo.remove(load);
|
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;
|
});
|
});
|
},
|
onCheck(id) {
|
this.$router.push({
|
path: "/affairsPublicSearchDetail",
|
query: { id: id }
|
});
|
},
|
onDel(id) {
|
this.$js.model("", "是否删除动态", res => {
|
if (res) {
|
this.$api.del("communityactivity/dynamic", { id }, () => {
|
demo.toast("删除成功");
|
this.init();
|
});
|
}
|
});
|
},
|
//分类动态列表
|
queryDynamic() {
|
let param = { category: "2" };
|
param["area"] = 2;
|
this.$api.post("dyn/type/list", param, data => {
|
data.map(d => {
|
d.label = d.name;
|
d.value = d.id;
|
});
|
this.bar[4].list = data;
|
});
|
},
|
queryArea() {
|
this.$api.get(
|
"common/data/getCityTreeByCode?provinceAdcode=510000",
|
{},
|
data => {
|
this.deleteChild(data);
|
this.allAreaList = data;
|
this.dealData();
|
}
|
);
|
},
|
dealData() {
|
//获取当前账号的name比如“福田镇”,来和区域对比获取相应的chirldren区县
|
let word = demo.$session.get("user").name;
|
let account = demo.$session.get("user").account;
|
//筛选出福田镇下面的社区
|
this.addIds(this.allAreaList, word);
|
//纪委账号需要获取所有社区的id(别问为什么,接口要求的)
|
//判断有没有子社区
|
if (this.levelArr.length) {
|
//更新区域的数据
|
this.bar[2].list = [...this.levelArr];
|
//第一次获取所有的社区数据然后逗号拼接请求数据
|
this.addCommunityId(this.levelArr);
|
let ids = [];
|
this.communityIds.map(item => {
|
ids.push(item.streetId);
|
});
|
//重置之后需要保存初始状态的区域
|
this.originCommunityIds = ids.join(",");
|
this.search = { communityId: ids.join(",") };
|
this.paged.page = 1;
|
this.init();
|
}
|
//纪委账号可以查看所有区域的数据
|
else if (
|
account == "szgkjw" ||
|
account == "pzhmzjsz" ||
|
account == "pzhnyncj"
|
) {
|
this.bar[2].list = [...this.allAreaList];
|
this.paged.page = 1;
|
// this.init();
|
}
|
this.levelArr = [];
|
},
|
//循环删除chirdren没有数据的子节点
|
deleteChild(arr) {
|
arr.map(item => {
|
if (!item.children.length) {
|
delete item.children;
|
} else if (item.children.length) {
|
this.deleteChild(item.children);
|
}
|
});
|
}
|
},
|
mounted() {
|
this.queryArea();
|
//查询动态分类列表
|
// this.queryDynamic();
|
let account = demo.$session.get("user").account;
|
if (account == "pzhmzjsz") {
|
this.bar[4].list = [
|
{ label: "资金公开", value: "资金公开" },
|
{ label: "资产公开", value: "资产公开" },
|
{ label: "资源公开", value: "资源公开" },
|
{ label: "村集体经济组织项目", value: "村集体经济组织项目" },
|
{ label: "服务公开", value: "服务公开" },
|
{ label: "财务公开", value: "财务公开" },
|
{ label: "党务公开", value: "党务公开" }
|
];
|
}
|
}
|
};
|
</script>
|
|
<style lang="less" scoped>
|
.page_status {
|
overflow-y: auto;
|
.add,
|
.tab {
|
margin-bottom: 10px;
|
}
|
}
|
</style>
|