|
|
|
@ -12,14 +12,13 @@ |
|
|
|
> |
|
|
|
> |
|
|
|
<datav-tab-item label="分县市局" name="1"> |
|
|
|
<datav-tab-item label="分县市局" name="1"> |
|
|
|
<datav-chart-bar |
|
|
|
<datav-chart-bar |
|
|
|
:data="data1" |
|
|
|
:data="fxsjBarList" |
|
|
|
:max="11" |
|
|
|
|
|
|
|
size="large" |
|
|
|
size="large" |
|
|
|
/> |
|
|
|
/> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
<datav-tab-item label="局属单位" name="2"> |
|
|
|
<datav-tab-item label="局属单位" name="2"> |
|
|
|
<datav-chart-bar |
|
|
|
<datav-chart-bar |
|
|
|
:data="data1" |
|
|
|
:data="jsdwBarList" |
|
|
|
:max="11" |
|
|
|
:max="11" |
|
|
|
size="large" |
|
|
|
size="large" |
|
|
|
/> |
|
|
|
/> |
|
|
|
@ -30,16 +29,24 @@ |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tab-item label="执法办案" name="1"> |
|
|
|
<datav-tab-item label="执法办案" name="1"> |
|
|
|
<v-charts |
|
|
|
<v-charts |
|
|
|
style="height: 340px" |
|
|
|
style="height: 320px" |
|
|
|
:option="option2" |
|
|
|
:option="zfbaPieOption" |
|
|
|
autoresize |
|
|
|
autoresize |
|
|
|
/> |
|
|
|
/> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
<datav-tab-item label="服务管理" name="2"> |
|
|
|
<datav-tab-item label="服务管理" name="2"> |
|
|
|
|
|
|
|
<v-charts |
|
|
|
|
|
|
|
style="height: 320px" |
|
|
|
|
|
|
|
:option="fwglPieOption" |
|
|
|
|
|
|
|
autoresize |
|
|
|
|
|
|
|
/> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
<datav-tab-item label="警纪警规" name="3"> |
|
|
|
<datav-tab-item label="警纪警规" name="3"> |
|
|
|
|
|
|
|
<v-charts |
|
|
|
|
|
|
|
style="height: 320px" |
|
|
|
|
|
|
|
:option="jjjgPieOption" |
|
|
|
|
|
|
|
autoresize |
|
|
|
|
|
|
|
/> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tabs> |
|
|
|
</datav-tabs> |
|
|
|
</datav-card> |
|
|
|
</datav-card> |
|
|
|
@ -80,13 +87,13 @@ |
|
|
|
/> |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<v-charts |
|
|
|
<v-charts |
|
|
|
style="height: 400px" |
|
|
|
style="height: 420px" |
|
|
|
:option="option" |
|
|
|
:option="option" |
|
|
|
autoresize |
|
|
|
autoresize |
|
|
|
/> |
|
|
|
/> |
|
|
|
<datav-card title="查处问题趋势"> |
|
|
|
<datav-card title="查处问题趋势"> |
|
|
|
<v-charts |
|
|
|
<v-charts |
|
|
|
style="height: 280px" |
|
|
|
style="height: 320px" |
|
|
|
:option="option1" |
|
|
|
:option="option1" |
|
|
|
autoresize |
|
|
|
autoresize |
|
|
|
/> |
|
|
|
/> |
|
|
|
@ -96,11 +103,13 @@ |
|
|
|
<datav-card> |
|
|
|
<datav-card> |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tab-item label="案件来源占比" name="1"> |
|
|
|
<datav-tab-item label="案件来源占比" name="1"> |
|
|
|
<v-charts |
|
|
|
<div class="mb-40"> |
|
|
|
style="height: 340px" |
|
|
|
<v-charts |
|
|
|
:option="option3" |
|
|
|
style="height: 340px" |
|
|
|
autoresize |
|
|
|
:option="ajlyPieOption" |
|
|
|
/> |
|
|
|
autoresize |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
<datav-tab-item label="问责处理情况" name="2"> |
|
|
|
<datav-tab-item label="问责处理情况" name="2"> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
@ -109,11 +118,13 @@ |
|
|
|
<datav-card> |
|
|
|
<datav-card> |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tabs v-model="activeTab"> |
|
|
|
<datav-tab-item label="停职处理情况" name="1"> |
|
|
|
<datav-tab-item label="停职处理情况" name="1"> |
|
|
|
<v-charts |
|
|
|
<div class="mb-40"> |
|
|
|
style="height: 340px" |
|
|
|
<v-charts |
|
|
|
:option="option4" |
|
|
|
style="height: 340px" |
|
|
|
autoresize |
|
|
|
:option="option4" |
|
|
|
/> |
|
|
|
autoresize |
|
|
|
|
|
|
|
/> |
|
|
|
|
|
|
|
</div> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
<datav-tab-item label="禁闭处理情况" name="2"> |
|
|
|
<datav-tab-item label="禁闭处理情况" name="2"> |
|
|
|
</datav-tab-item> |
|
|
|
</datav-tab-item> |
|
|
|
@ -129,10 +140,13 @@ |
|
|
|
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 moment from 'moment' |
|
|
|
import moment from "moment"; |
|
|
|
import { getCaseVerifData } from '@/api/datav' |
|
|
|
import { getCaseVerifData } from "@/api/datav"; |
|
|
|
|
|
|
|
|
|
|
|
const time = ref([moment().startOf('year').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) |
|
|
|
const time = ref([ |
|
|
|
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD"), |
|
|
|
|
|
|
|
moment().format("YYYY-MM-DD"), |
|
|
|
|
|
|
|
]); |
|
|
|
|
|
|
|
|
|
|
|
const overview = ref({ |
|
|
|
const overview = ref({ |
|
|
|
total: 0, |
|
|
|
total: 0, |
|
|
|
@ -140,19 +154,95 @@ const overview = ref({ |
|
|
|
investigateAndPunish: 0, |
|
|
|
investigateAndPunish: 0, |
|
|
|
accountablePeopleNumber: 0, |
|
|
|
accountablePeopleNumber: 0, |
|
|
|
accountableDepartNumber: 0, |
|
|
|
accountableDepartNumber: 0, |
|
|
|
confirmedRate: 0 |
|
|
|
confirmedRate: 0, |
|
|
|
}) |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const fxsjBarList = ref([]); |
|
|
|
|
|
|
|
const jsdwBarList = ref([]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const zfbaPieList = ref([]); |
|
|
|
|
|
|
|
const fwglPieList = ref([]); |
|
|
|
|
|
|
|
const jjjgPieList = ref([]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const ajlyPieList = ref([]); |
|
|
|
function getData() { |
|
|
|
function getData() { |
|
|
|
getCaseVerifData(time.value).then(data => { |
|
|
|
getCaseVerifData(time.value).then((data) => { |
|
|
|
overview.value = data.overview |
|
|
|
overview.value = data.overview; |
|
|
|
}) |
|
|
|
fxsjBarList.value = data.fxsjBarList; |
|
|
|
|
|
|
|
jsdwBarList.value = data.jsdwBarList; |
|
|
|
|
|
|
|
zfbaPieList.value = data.zfbaPieList; |
|
|
|
|
|
|
|
fwglPieList.value = data.fwglPieList; |
|
|
|
|
|
|
|
jjjgPieList.value = data.jjjgPieList; |
|
|
|
|
|
|
|
ajlyPieList.value = data.ajlyPieList; |
|
|
|
|
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
watch(time, () => { |
|
|
|
getData() |
|
|
|
getData(); |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
onMounted(() => { |
|
|
|
|
|
|
|
getData(); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const zfbaPieOption = computed(() => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: zfbaPieList.value, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const fwglPieOption = computed(() => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: fwglPieList.value, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const jjjgPieOption = computed(() => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: jjjgPieList.value, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const ajlyPieOption = computed(() => { |
|
|
|
|
|
|
|
return { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: ajlyPieList.value, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
echarts.registerMap("changsha", changshaMap); |
|
|
|
echarts.registerMap("changsha", changshaMap); |
|
|
|
const option = { |
|
|
|
const option = { |
|
|
|
@ -160,7 +250,6 @@ const option = { |
|
|
|
// 是上面注册时的名字哦,registerMap('名字保持一致') |
|
|
|
// 是上面注册时的名字哦,registerMap('名字保持一致') |
|
|
|
map: "changsha", |
|
|
|
map: "changsha", |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
visualMap: { |
|
|
|
visualMap: { |
|
|
|
type: "piecewise", |
|
|
|
type: "piecewise", |
|
|
|
bottom: 10, |
|
|
|
bottom: 10, |
|
|
|
@ -192,9 +281,7 @@ const option = { |
|
|
|
color: "white", |
|
|
|
color: "white", |
|
|
|
}, |
|
|
|
}, |
|
|
|
itemStyle: { |
|
|
|
itemStyle: { |
|
|
|
normal: { |
|
|
|
areaColor: "#02215E", // 这里将地图区域的颜色修改为红色 |
|
|
|
areaColor: "#02215E", // 这里将地图区域的颜色修改为红色 |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
], |
|
|
|
], |
|
|
|
@ -261,108 +348,6 @@ const option1 = ref({ |
|
|
|
], |
|
|
|
], |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
const data1 = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "开福分局", |
|
|
|
|
|
|
|
value: 11, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "芙蓉分局", |
|
|
|
|
|
|
|
value: 9, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "岳麓分局", |
|
|
|
|
|
|
|
value: 7, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "雨花分局", |
|
|
|
|
|
|
|
value: 4, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "望城分局", |
|
|
|
|
|
|
|
value: 3, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "浏阳市局", |
|
|
|
|
|
|
|
value: 3, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "长沙县局", |
|
|
|
|
|
|
|
value: 1, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const data2 = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "开福分局", |
|
|
|
|
|
|
|
value: 9700, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "芙蓉分局", |
|
|
|
|
|
|
|
value: 9021, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "岳麓分局", |
|
|
|
|
|
|
|
value: 8512, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "雨花分局", |
|
|
|
|
|
|
|
value: 8021, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "望城分局", |
|
|
|
|
|
|
|
value: 7111, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "浏阳市局", |
|
|
|
|
|
|
|
value: 6622, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "长沙县局", |
|
|
|
|
|
|
|
value: 6221, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const option2 = { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: [ |
|
|
|
|
|
|
|
{ value: 311, name: "违规办案" }, |
|
|
|
|
|
|
|
{ value: 735, name: "不作为" }, |
|
|
|
|
|
|
|
{ value: 580, name: "乱作为" }, |
|
|
|
|
|
|
|
{ value: 484, name: "慢作为" }, |
|
|
|
|
|
|
|
{ value: 300, name: "暴力执法" }, |
|
|
|
|
|
|
|
{ value: 300, name: "执法不规范" }, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const option3 = { |
|
|
|
|
|
|
|
series: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
type: "pie", |
|
|
|
|
|
|
|
radius: ["40%", "70%"], |
|
|
|
|
|
|
|
label: { |
|
|
|
|
|
|
|
color: "#fff", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
data: [ |
|
|
|
|
|
|
|
{ value: 311, name: "自办" }, |
|
|
|
|
|
|
|
{ value: 735, name: "13489" }, |
|
|
|
|
|
|
|
{ value: 580, name: "队领导交办" }, |
|
|
|
|
|
|
|
{ value: 484, name: "局领导交办" }, |
|
|
|
|
|
|
|
{ value: 300, name: "公安部领导交办" }, |
|
|
|
|
|
|
|
{ value: 300, name: "市局主要领导交办" }, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const option4 = { |
|
|
|
const option4 = { |
|
|
|
series: [ |
|
|
|
series: [ |
|
|
|
{ |
|
|
|
{ |
|
|
|
|