Browse Source

维权抚慰地图卡片

main
parent
commit
66a556d456
  1. 1
      src/components/datav/chart-bar.vue
  2. 2
      src/components/datav/header.vue
  3. 8
      src/components/negative/add.vue
  4. 18
      src/views/datav/CaseVerif.vue
  5. 160
      src/views/datav/MailVisits.vue
  6. 259
      src/views/datav/RightsComfort.vue
  7. 26
      src/views/datav/VideoInsp.vue

1
src/components/datav/chart-bar.vue

@ -130,6 +130,7 @@ function getColor(val) {
.bar-item_content {
.bar-item_content-bar {
height: 13px;
}
}
}

2
src/components/datav/header.vue

@ -16,7 +16,7 @@
</router-link>
<!-- <router-link to="/datav/jwpy" v-slot="{ isActive }">-->
<div @click="goToBaidu">
<router-link to="/" v-slot="{ isActive }">
<router-link to="" v-slot="{ isActive }">
<span>民意感知</span>
<img :src="isActive ? Img2 : Img1" alt=""/>
</router-link>

8
src/components/negative/add.vue

@ -37,7 +37,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item-ext
<el-form-item
label="业务类别"
prop="businessTypeCode"
:rules="{
@ -86,7 +86,7 @@
:value="item.dictValue"
/>
</el-select>
</el-form-item-ext>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="form.problemSourcesCode === ProblemSources.ZXDC">
@ -141,7 +141,7 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item-ext
<el-form-item
label="涉嫌问题"
content="梳理出13个业务类别和18种涉嫌问题这个结合事情的简要描述来判断一般情况下可与问题来源对应<br />
信访投诉督察支队<br />
@ -185,7 +185,7 @@
:value="item.dictValue"
/>
</el-select>
</el-form-item-ext>
</el-form-item>
</el-col>
<el-col :span="12">

18
src/views/datav/CaseVerif.vue

@ -122,7 +122,7 @@
</datav-card>
<datav-card>
<datav-tabs>
<datav-tab-item label="停职处理情况" name="1">
<datav-tab-item label="禁闭处理情况" name="1">
<div class="mb-40">
<v-charts
style="height: 340px"
@ -543,13 +543,15 @@ const option4 = {
color: "#fff",
},
data: [
{value: 311, name: "其他"},
{value: 735, name: "违反公安部“九个一律”"},
{value: 580, name: "违反保密工作纪律"},
{value: 484, name: "涉嫌泄露国家、警务秘密"},
{value: 300, name: "违反“三个规定”"},
{value: 300, name: "违反生活纪律"},
{value: 11, name: "涉嫌违纪违法"},
{value: 14, name: "工作饮酒"},
{value: 11, name: "违规办案"},
{value: 3, name: "涉嫌违纪"},
{value: 2, name: "违反“三个规定”"},
{value: 12, name: "违反生活纪律、工作纪律"},
{value: 8, name: "违规接受管理服务对象宴请"},
{value: 2, name: "酒后驾车、涉嫌违法"},
{value: 2, name: "执法乱作为"},
{value: 3, name: "为落实请示报告制度"},
],
},
],

160
src/views/datav/MailVisits.vue

@ -7,7 +7,7 @@
<el-col :span="6">
<datav-card title="初访重访情况">
<el-row class="mb-32">
<el-col :span="8">
<el-col :span="12">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.firstMail }}
@ -17,7 +17,7 @@
</div>
</div>
</el-col>
<el-col :span="8">
<el-col :span="12">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.secondMail }}
@ -27,16 +27,6 @@
</div>
</div>
</el-col>
<el-col :span="8">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.leaderReceiveMail }}
</div>
<div class="descriptions_label">
领导接访
</div>
</div>
</el-col>
</el-row>
<datav-card>
<datav-tabs v-model="activeTab">
@ -65,15 +55,6 @@
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="领导接访" name="3">
<el-scrollbar height="300px">
<datav-chart-bar
:data="fxsjLeaderViewMailList"
:max="11"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
<datav-tab-item label="部委支队" name="2">
@ -98,15 +79,6 @@
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="领导接访" name="3">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="bwzdLeaderViewMailList"
:max="11"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
</datav-tabs>
@ -208,110 +180,33 @@
</el-col>
<el-col :span="6">
<datav-card title="缠访集访情况">
<el-row class="mb-32">
<el-col :span="8">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.leaderViewMail }}
</div>
<div class="descriptions_label">
领导督办
</div>
</div>
</el-col>
<el-col :span="8">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.tangleMail }}
</div>
<div class="descriptions_label">
缠访闹访
</div>
</div>
</el-col>
<el-col :span="8">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ overview.massMail }}
</div>
<div class="descriptions_label">
群体集访
</div>
</div>
</el-col>
</el-row>
<datav-card title="领导接访情况">
<datav-card>
<datav-tabs v-model="activeTabRight">
<datav-tab-item label="分县市局" name="1">
<datav-tabs
v-model="activeMailTabRight"
v-model="activeTabRight"
type="bottom-button"
>
<datav-tab-item label="领导督办" name="1">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="缠访闹访" name="2">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
:max="11"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="群体集访" name="3">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
:max="11"
<datav-tab-item label="分县市局" name="1">
<el-scrollbar height="450px">
<datav-chart-bar
:data="fxsjLeaderViewMailList"
size="large"
:labelWidth="50"
sub-title="数量"
/>
</el-scrollbar>
</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">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="缠访闹访" name="2">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
:max="11"
size="large"
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="群体集访" name="3">
<el-scrollbar height="300px">
<datav-chart-bar-mail
:data="xx"
<el-scrollbar height="450px">
<datav-chart-bar
:data="bwzdLeaderViewMailList"
:max="11"
:labelWidth="50"
size="large"
sub-title="数量"
/>
</el-scrollbar>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
</datav-tabs>
</datav-card>
</datav-card>
@ -577,6 +472,22 @@ const time = ref([
moment().format("YYYY-MM-DD"),
]);
const temp1=[{
label:'张三',
value: '1'
}]
const temp2=[{
label:'李四',
value: '1'
}]
/**
* 信访趋势
* @type {Ref<UnwrapRef<string>, UnwrapRef<string> | string>}
@ -799,13 +710,6 @@ const colors = [
}
/*
<!-- <datav-tab-item label="局长信箱" name="3">-->
<!-- <v-charts-->
<!-- style="width: 105%; height: 300px; "-->
<!-- :option="option1"-->
<!-- autoresize-->
<!-- />-->
<!-- </datav-tab-item>-->*/
</style>

259
src/views/datav/RightsComfort.vue

@ -149,7 +149,89 @@ const hitPersonNumber = ref(28.1);
const comfortMoney = ref(0.0);
const punishmentSituationList = ref([]);
const comfortSituationList = ref([]);
let gobalTempMapVoList = [
{
"name": "岳麓分局",
"totalCase": 23,
"victimPer": "暂无",
"comfortPer": "19",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "芙蓉分局",
"totalCase": 20,
"victimPer": "暂无",
"comfortPer": "12",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "天心分局",
"totalCase": 20,
"victimPer": "暂无",
"comfortPer": "23",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "雨花分局",
"totalCase": 19,
"victimPer": "暂无",
"comfortPer": "16",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "浏阳市局",
"totalCase": 17,
"victimPer": "暂无",
"comfortPer": "30",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "宁乡市局",
"totalCase": 11,
"victimPer": "暂无",
"comfortPer": "0",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "开福分局",
"totalCase": 11,
"victimPer": "暂无",
"comfortPer": "4",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "望城分局",
"totalCase": 9,
"victimPer": "暂无",
"comfortPer": "0",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "长沙县局",
"totalCase": 9,
"victimPer": "暂无",
"comfortPer": "0",
"hitPro": "暂无",
"comfortMon": "暂无",
},
{
"name": "高新分局",
"totalCase": 4,
"victimPer": "暂无",
"comfortPer": "7",
"hitPro": "暂无",
"comfortMon": "暂无",
},
];
function getData() {
getRightsComfortData(time.value).then((data) => {
console.log('Received data:', data); //
@ -167,29 +249,65 @@ watch(time, () => {
onMounted(() => {
getData();
});
const option = {
const option = ref({
geo: {
// registerMap''
map: "changsha",
},
},
tooltip: {
trigger: 'item',
formatter: function (params) {
console.log(params)
const dataItem = gobalTempMapVoList.find(item => item.name.includes(params.name.substring(0, 2)));
if (dataItem) {
return `
<div class="tooltip">
<div class="tooltip-title">${dataItem.name}</div>
<div class="tooltip-content">
<ul class="tooltip-ul" >
<li>维权案件总数 <span>${dataItem.totalCase}</span></li>
<li>受侵害人数 <span>${dataItem.victimPer}</span></li>
<li>抚慰人数 <span>${dataItem.comfortPer}</span></li>
<li>打击处理人数 <span>${dataItem.hitPro}</span></li>
<li>抚慰金额 <span>${dataItem.comfortMon}</span></li>
</ul>
</div>
</div>`;
} else {
return `<div class="tooltip">
<div class="tooltip-title">${dataItem.name}</div>
<div class="tooltip-content">
<ul class="tooltip-ul"">
<li>维权案件数 <span>0</span></li>
<li>抚慰人数 <span>0</span></li>
</ul>
</div>
</div>`;
}
},
// backgroundColor: "#031577", //
// borderColor: "#0A2F86",
// borderWidth: 0, // 1
// borderRadius: 3, // 3
// shadowBlur: 0, // 8
// shadowOffsetX: 0, // 0
// shadowOffsetY: 0, // 6
},
visualMap: {
type: "piecewise",
bottom: 10,
pieces: [
{gte: 85, lte: 100, label: "数据数高于1000"},
{gte: 65, lte: 85, label: "问题数低于1000"},
{gte: 0, lte: 65, label: "问题数低于500"},
{ min: 0, max: 500, label: "问题数低于500" }, { min: 501, max: 1000, label: "问题数介于500-1000" }, { min: 1001, label: "问题数高于1000" },
],
right: 10, //
right: 10,
realtime: false,
orient: "horizontal", //
orient: "horizontal",
textStyle: {
color: "#fff", //
color: "#fff",
},
calculable: true,
inRange: {
color: ["#4987F6", "#F6A149", "#D34343"],
color: ["#4987F6", "#F6A149", "#D34343",],
},
},
series: [
@ -198,23 +316,28 @@ const option = {
type: "map",
map: "changsha",
hoverAnimation: true,
emphasis: {
areaColor: "#FFD700", //
borderColor: "#FF0000", //
borderWidth: 4 //
},
label: {
show: true,
color: "white",
},
itemStyle: {
normal: {
areaColor: "#02215E", //
areaColor: "#02215E",
borderColor: "#1773c3",
},
},
emphasis: {
areaColor: "#FFD700", //
borderColor: "#FF0000", //
borderWidth: 4 //
},
data: gobalTempMapVoList.map(item => ({
name: item.name,
value: item.totalPro // totalPro value
}))
}
],
};
})
const option1 = ref({
xAxis: {
@ -501,6 +624,108 @@ const colors = [
];
</script>
<style lang="scss" scoped>
@import "@/style/datav.scss";
:deep() {
//
.tooltip {
position: relative;
width: 169.88px;
height: 170px;
background: linear-gradient(180deg, rgba(1, 4, 87, 0.8) 0%, rgba(3, 21, 119, 0.8) 100%);
border: 1px solid #4E8FFF;
margin: -10px -10px -10px -10px;
}
//
.tooltip-title {
width: 169.88px;
height: 43px;
background: linear-gradient(180deg, rgba(1, 4, 87, 0.8) 0%, rgba(3, 21, 119, 0.8) 100%);
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
text-align: center; /* 水平居中 */
font-weight: 400;
font-size: 16px;
color: #FFFFFF;
line-height: 22px;
border-bottom: 1px solid #253755; /* 设置下边框 */
}
.tooltip-content {
width: 170px;
height: 132px;
//font-size: 11px;
margin-top: -12px;
background: linear-gradient(180deg, #010457 0%, #031577 100%);
}
.tooltip-content ul {
list-style-type: none; /* 移除默认的小圆点 */
padding: 0;
}
.tooltip-content ul li {
margin-left: 5px;
height: 25px;
color: #597AE9;
font-size: 13px;
}
// span
.tooltip-ul span {
float: right;
width: 50px;
text-align: right;
margin-right: 35px;
color: #fff;
font-size: 13px;
}
/* 小尖角 */
.tooltip::before {
content: '';
position: absolute;
top: 90px; /* 调整尖角的垂直位置 */
left: -10px; /* 调整尖角的水平位置 */
width: 0;
height: 0;
//border-top: 10px solid red; /* */
//border-bottom: 10px solid green; /* */
//border-right: 10px solid blue; /* */
}
}
.test {
width: 95px;
height: 25px;
background: #1C3472;
}
.gobal-dropdown-container {
position: absolute;
right: 20px;
top: 15px;
}
.my-gobal-yearselect {
font-size: 14px;
padding-top: 6px;
padding-left: 20px;
width: 90px;
color: #fff;
}
</style>

26
src/views/datav/VideoInsp.vue

@ -111,41 +111,41 @@
<div class="message message-error">
<div class="message-title">待处理</div>
<div>
宁乡-灰汤所-办公-值班室湖南省长沙市宁乡市公安局灰汤派出所值班室民警不在岗
芙蓉-定王台-办案区-问室 湖南省长沙市公安局芙蓉分局定王台派出所 &emsp; 民警单人询的违规问题
</div>
<div class="message-footer flex between">
<span>灰汤派出所</span>
<span>2024-09-26 09:00:13</span>
<span>芙蓉分局定王台派出所</span>
<span>2024-11-11 19:16</span>
</div>
</div>
<div class="message message-info">
<div class="message-title">待处理</div>
<div>
宁乡-灰汤所-办公-值班室湖南省长沙市宁乡市公安局灰汤派出所值班室民警不在岗
望城-管理中心-办案区-询问室湖南省长沙市望城区公安局法制大队&emsp; 民警单人询的违规问题
</div>
<div class="message-footer flex between">
<span>灰汤派出所</span>
<span>2024-09-26 09:00:13</span>
<span>望城区公安局法制大队</span>
<span>2024-11-18 11:12</span>
</div>
</div>
<div class="message">
<div class="message-title">待处理</div>
<div>
宁乡-灰汤所-办公-值班室湖南省长沙市宁乡市公安局灰汤派出所值班室民警不在岗
执法办案中心-询问室7湖南省长沙市公安局芙蓉分局蓉园派出所 &emsp;同时讯问多名嫌疑对象
</div>
<div class="message-footer flex between">
<span>灰汤派出所</span>
<span>2024-09-26 09:00:13</span>
<span>芙蓉分局蓉园派出所</span>
<span>2024-11-14 10:00</span>
</div>
</div>
<div class="message message-error">
<div class="message">
<div class="message-title">待处理</div>
<div>
宁乡-灰汤所-办公-值班室湖南省长沙市宁乡市公安局灰汤派出所值班室民警不在岗
开福-直属-执法办案管理-讯询问室湖南省长沙市公安局开福分局法制大队 &emsp;民警单人询的违规问题
</div>
<div class="message-footer flex between">
<span>灰汤派出所</span>
<span>2024-09-26 09:00:13</span>
<span>开福分局法制大队</span>
<span>2024-11-15 15:51</span>
</div>
</div>
</el-scrollbar>

Loading…
Cancel
Save