Browse Source

信访大屏1.0

main
parent
commit
61d3b31543
  1. 8
      src/api/datav.ts
  2. 260
      src/views/datav/MailVisits.vue

8
src/api/datav.ts

@ -6,6 +6,14 @@ export function getCaseVerifData(times) {
}); });
} }
export function getMailVisitsData(times) {
return request.get({
url: `/datav/mailVisits?beginTime=${times[0]}&endTime=${times[1]}`
});
}
export function getRightsComfortData(times) { export function getRightsComfortData(times) {
return request.get({ return request.get({
url: `/datav/rightsComfort?beginTime=${times[0]}&endTime=${times[1]}` url: `/datav/rightsComfort?beginTime=${times[0]}&endTime=${times[1]}`

260
src/views/datav/MailVisits.vue

@ -1,7 +1,7 @@
<template> <template>
<el-scrollbar height="100vh"> <el-scrollbar height="100vh">
<div class="wrapper"> <div class="wrapper">
<datav-header /> <datav-header/>
<main> <main>
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="6"> <el-col :span="6">
@ -10,7 +10,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
6259 {{ overview.firstMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
初信初访 初信初访
@ -20,7 +20,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
988 {{ overview.secondMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
重复信访 重复信访
@ -30,7 +30,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
2120 {{ overview.leaderReceiveMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
领导接访 领导接访
@ -38,18 +38,72 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<datav-card >
<datav-tabs v-model="activeTab">
<datav-tab-item label="分县市局" name="1">
<datav-tabs
v-model="activeMailTab"
type="bottom-button"
>
<datav-tab-item label="初信初访" name="1">
<datav-chart-bar <datav-chart-bar
sub-title="办结率" :data="fxsjFirstMailList"
:data="data1" size="large"
/> />
<div class="flex tab-title flex center mt-20" style="margin-bottom: 20px"> </datav-tab-item>
<div class="tab-title-item active"> <datav-tab-item label="重复信访" name="2">
初信初访 <datav-chart-bar
</div> :data="fxsjRepeatMailList"
<div class="tab-title-item">重复信访</div> :max="11"
<div class="tab-title-item">领导接访</div> size="large"
</div> />
</datav-tab-item>
<datav-tab-item label="领导接访" name="3">
<datav-chart-bar
:data="fxsjLeaderViewMailList"
:max="11"
size="large"
/>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
<datav-tab-item label="部委支队" name="2">
<datav-tabs
v-model="activeTab"
type="bottom-button"
>
<datav-tab-item label="初信初访" name="1">
<datav-chart-bar
:data="bwzdFirstMailList"
size="large"
/>
</datav-tab-item>
<datav-tab-item label="重复信访" name="2">
<datav-chart-bar
:data="bwzdRepeatMailList"
:max="11"
size="large"
/>
</datav-tab-item>
<datav-tab-item label="领导接访" name="3">
<datav-chart-bar
:data="bwzdLeaderViewMailList"
:max="11"
size="large"
/>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
</datav-tabs>
</datav-card>
</datav-card> </datav-card>
<datav-card title="信访问题类型"> <datav-card title="信访问题类型">
<v-charts <v-charts
style="height: 300px" style="height: 300px"
@ -65,27 +119,27 @@
</div> </div>
<div class="flex gap-42"> <div class="flex gap-42">
<datav-statistic <datav-statistic
:value="7247" :value="overview.total"
title="信访总件数" title="信访总件数"
style="width: 20%" style="width: 20%"
/> />
<datav-statistic <datav-statistic
:value="562" :value="overview.countryMail"
title="国家信访" title="国家信访"
style="width: 20%" style="width: 20%"
/> />
<datav-statistic <datav-statistic
:value="1463" :value="overview.policeMail"
title="公安部信访" title="公安部信访"
style="width: 20%" style="width: 20%"
/> />
<datav-statistic <datav-statistic
:value="5153" :value="overview.commissionerMail"
title="局长信箱" title="局长信箱"
style="width: 20%" style="width: 20%"
/> />
<datav-statistic <datav-statistic
:value="39" :value="overview.numMail"
title="12337信访" title="12337信访"
style="width: 20%" style="width: 20%"
/> />
@ -109,7 +163,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
25 {{ overview.leaderViewMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
领导督办 领导督办
@ -119,7 +173,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
21 {{ overview.tangleMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
缠访闹访 缠访闹访
@ -129,7 +183,7 @@
<el-col :span="8"> <el-col :span="8">
<div class="descriptions_cell text-center"> <div class="descriptions_cell text-center">
<div class="descriptions_content"> <div class="descriptions_content">
126 {{ overview.massMail }}
</div> </div>
<div class="descriptions_label"> <div class="descriptions_label">
群体集访 群体集访
@ -137,18 +191,74 @@
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
<!-- <datav-chart-bar-->
<!-- sub-title="数量"-->
<!-- :data="data3"-->
<!-- :max="7"-->
<!-- />-->
<datav-card >
<datav-tabs v-model="activeTabRight">
<datav-tab-item label="分县市局" name="1">
<datav-tabs
v-model="activeMailTabRight"
type="bottom-button"
>
<datav-tab-item label="领导督办" name="1">
<datav-chart-bar <datav-chart-bar
sub-title="数量" :data="fxsjFirstMailList"
:data="data3" size="large"
:max="7"
/> />
<div class="flex tab-title flex center mt-20" style="margin-bottom: 20px"> </datav-tab-item>
<div class="tab-title-item active"> <datav-tab-item label="缠访闹访" name="2">
领导督办 <datav-chart-bar
</div> :data="fxsjRepeatMailList"
<div class="tab-title-item">缠访闹访</div> :max="11"
<div class="tab-title-item">群体集访</div> size="large"
</div> />
</datav-tab-item>
<datav-tab-item label="群体集访" name="3">
<datav-chart-bar
:data="jsdwBarList"
:max="11"
size="large"
/>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
<datav-tab-item label="部委支队" name="2">
<datav-tabs
v-model="activeMailTabRight"
type="bottom-button"
>
<datav-tab-item label="领导督办" name="1">
<datav-chart-bar
:data="fxsjFirstMailList"
size="large"
/>
</datav-tab-item>
<datav-tab-item label="缠访闹访" name="2">
<datav-chart-bar
:data="fxsjRepeatMailList"
:max="11"
size="large"
/>
</datav-tab-item>
<datav-tab-item label="群体集访" name="3">
<datav-chart-bar
:data="jsdwBarList"
:max="11"
size="large"
/>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
</datav-tabs>
</datav-card>
</datav-card> </datav-card>
<datav-card title="追责问责情况"> <datav-card title="追责问责情况">
<v-charts <v-charts
@ -163,10 +273,14 @@
</div> </div>
</el-scrollbar> </el-scrollbar>
</template> </template>
<script setup> <script setup>
import vCharts from "vue-echarts"; import vCharts from "vue-echarts";
import changshaMap from "@/assets/data/changsha.json"; import changshaMap from "@/assets/data/changsha.json";
import * as echarts from "echarts/core"; import * as echarts from "echarts/core";
import {getMailVisitsData} from "@/api/datav";
import moment from "moment/moment.js";
echarts.registerMap("changsha", changshaMap); echarts.registerMap("changsha", changshaMap);
const option = { const option = {
@ -179,9 +293,9 @@ const option = {
type: "piecewise", type: "piecewise",
bottom: 10, bottom: 10,
pieces: [ pieces: [
{ gte: 85, lte: 100, label: "信访总件数>300" }, {gte: 85, lte: 100, label: "信访总件数>300"},
{ gte: 65, lte: 85, label: "信访总件数>200" }, {gte: 65, lte: 85, label: "信访总件数>200"},
{ gte: 0, lte: 65, label: "信访总件数0-200" }, {gte: 0, lte: 65, label: "信访总件数0-200"},
], ],
right: 10, // right: 10, //
realtime: false, realtime: false,
@ -311,8 +425,6 @@ const data1 = [
numerator: 641, numerator: 641,
denominator: 720, denominator: 720,
}, },
{ {
name: "望城分局", name: "望城分局",
value: 85, value: 85,
@ -413,12 +525,12 @@ const option2 = {
color: "#fff", color: "#fff",
}, },
data: [ data: [
{ value: 311, name: "慢作为" }, {value: 311, name: "慢作为"},
{ value: 735, name: "意见建议" }, {value: 735, name: "意见建议"},
{ value: 580, name: "违法违纪违规" }, {value: 580, name: "违法违纪违规"},
{ value: 484, name: "乱作为" }, {value: 484, name: "乱作为"},
{ value: 300, name: "其他" }, {value: 300, name: "其他"},
{ value: 300, name: "不作为" }, {value: 300, name: "不作为"},
], ],
}, },
], ],
@ -433,16 +545,68 @@ const option3 = {
color: "#fff", color: "#fff",
}, },
data: [ data: [
{ value: 21, name: "其他" }, {value: 21, name: "其他"},
{ value: 33, name: "通报批评" }, {value: 33, name: "通报批评"},
{ value: 56, name: "责令检查" }, {value: 56, name: "责令检查"},
{ value: 31, name: "考核降级" }, {value: 31, name: "考核降级"},
{ value: 120, name: "组织处理" }, {value: 120, name: "组织处理"},
{ value: 32, name: "党纪处分" }, {value: 32, name: "党纪处分"},
], ],
}, },
], ],
}; };
const activeTab = ref("1");
const activeMailTab = ref("1");
const activeTabRight=ref("1");
const activeMailTabRight=ref("1");
//
const overview = ref({
total: 0,
countryMail: 0,
policeMail: 0,
commissionerMail: 0,
numMail: 0,
firstMail: 0,
secondMail: 0,
leaderReceiveMail: 0,
leaderViewMail: 0,
tangleMail: 0,
massMail: 0,
});
//
const fxsjFirstMailList = ref([]);
const fxsjRepeatMailList = ref([]);
const fxsjLeaderViewMailList= ref([]);
//
const bwzdFirstMailList = ref([]);
const bwzdRepeatMailList = ref([]);
const bwzdLeaderViewMailList= ref([]);
const time = ref([
moment().startOf("year").format("YYYY-MM-DD"),
moment().format("YYYY-MM-DD"),
]);
function getData() {
getMailVisitsData(time.value).then((data) => {
overview.value = data.overview;
fxsjFirstMailList.value = data.fxsjFirstMailList;
fxsjRepeatMailList.value = data.fxsjRepeatMailList;
fxsjLeaderViewMailList.value = data.fxsjLeaderViewMailList;
bwzdFirstMailList.value = data.bwzdFirstMailList;
bwzdRepeatMailList.value = data.bwzdRepeatMailList;
bwzdLeaderViewMailList.value = data.bwzdLeaderViewMailList;
});
}
watch(time, () => {
getData();
})
onMounted(() => {
getData();
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/style/datav.scss"; @import "@/style/datav.scss";

Loading…
Cancel
Save