Browse Source

审计督察地图卡片

main
parent
commit
e8ad61e6d8
  1. 17
      src/components/datav/chart-bar.vue
  2. 16
      src/components/datav/header.vue
  3. 6
      src/router/routes.ts
  4. 16
      src/style/public.scss
  5. 97
      src/views/datav/AuditSuper.vue
  6. 1
      src/views/datav/CaseVerif.vue
  7. 53
      src/views/datav/SceneInsp.vue

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

@ -5,7 +5,6 @@
</div> </div>
<div> <div>
<div <div
class="flex v-center bar-item wrap between" class="flex v-center bar-item wrap between"
v-for="item in data" v-for="item in data"
:size="size" :size="size"
@ -24,11 +23,12 @@
}" }"
></div> ></div>
</div> </div>
<span >{{ item.value + props.unit }}</span> <span :class="spanClass">{{ item.value + props.unit }}</span>
<span <span
class="bar-item_remark text-right ml-8" class="bar-item_remark text-right ml-8"
v-if="item.denominator" v-if="item.denominator"
style="min-width: 40px" style="min-width: 50px; "
:style="{ fontSize: props.remarkFontSize }"
> >
<span class="text-success">{{ item.numerator }}</span> <span class="text-success">{{ item.numerator }}</span>
<span>/</span> <span>/</span>
@ -73,7 +73,8 @@ const props = defineProps({
type: String, type: String,
default: "left", default: "left",
}, },
remarkFontSize: {type: String, default: "10px",},
spanClass: { type: String, default: "", },
}); });
const max = ref(100); const max = ref(100);
@ -85,7 +86,6 @@ watch(
); );
function getMax() { function getMax() {
if (props.unit !== "%") { if (props.unit !== "%") {
max.value = Math.max(...props.data.map((item) => item.value)); max.value = Math.max(...props.data.map((item) => item.value));
@ -136,6 +136,7 @@ function getColor(val) {
&[size="small"] { &[size="small"] {
font-size: 12px; font-size: 12px;
.bar-item_content { .bar-item_content {
width: calc(100% - 180px); width: calc(100% - 180px);
} }
@ -191,4 +192,10 @@ function getColor(val) {
} }
} }
} }
.right-aligned {
text-align: right;
width: 60px;
}
</style> </style>

16
src/components/datav/header.vue

@ -14,10 +14,14 @@
<span>案件核查</span> <span>案件核查</span>
<img :src="isActive ? Img2 : Img1" alt=""/> <img :src="isActive ? Img2 : Img1" alt=""/>
</router-link> </router-link>
<router-link to="/datav/jwpy" v-slot="{ isActive }"> <!-- <router-link to="/datav/jwpy" v-slot="{ isActive }">-->
<span>警务评议</span> <div @click="goToBaidu">
<router-link to="/" v-slot="{ isActive }">
<span>民意感知</span>
<img :src="isActive ? Img2 : Img1" alt=""/> <img :src="isActive ? Img2 : Img1" alt=""/>
</router-link> </router-link>
</div>
</nav> </nav>
<h1> <h1>
<router-link to="/datav/gobal"> <router-link to="/datav/gobal">
@ -48,6 +52,14 @@
<script setup> <script setup>
import Img1 from '/imgs/datav/base.png' import Img1 from '/imgs/datav/base.png'
import Img2 from '/imgs/datav/base_active.png' import Img2 from '/imgs/datav/base_active.png'
const goToBaidu = () => {
window.open('http://65.47.6.114:8001/police-service/map-index.html?FPID=920507&ticket=dcZcPz0WPEoQaOb14HmRETDQjFL8cKgYSW6OyR0mQcLt-eHJ7HSQn2WDxilMwCaXGOxS3LZx1p9Is1b7yOM7BVoU1o0IVRwDT1on2yQK8JU=', '_blank');
//
isActive.value = true;
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
header { header {

6
src/router/routes.ts

@ -52,7 +52,11 @@ export const routes = [
}, },
{ {
path: '/datav/jwpy', path: '/datav/jwpy',
component: () => import('@/views/datav/Jwpy.vue'), // component: () => import('@/views/datav/Jwpy.vue'),
beforeEnter: (to, from, next) => {
window.open('www.baidu.com', '_blank');
next(false); // 阻止路由的正常内部跳转
}
}, },
{ {
path: '/datav/lmgz', path: '/datav/lmgz',

16
src/style/public.scss

@ -26,16 +26,19 @@ h2 {
font-size: 24px; font-size: 24px;
font-weight: 500; font-weight: 500;
} }
h3 { h3 {
color: var(--primary-color); color: var(--primary-color);
font-size: 20px; font-size: 20px;
font-weight: 500; font-weight: 500;
margin: 20px 0; margin: 20px 0;
} }
h4 { h4 {
font-size: 18px; font-size: 18px;
font-weight: 500; font-weight: 500;
} }
h5 { h5 {
color: var(--primary-color); color: var(--primary-color);
font-size: 16px; font-size: 16px;
@ -110,6 +113,7 @@ svg+span {
.flex-inline.gap-4 { .flex-inline.gap-4 {
gap: 4px; gap: 4px;
} }
.flex.gap, .flex.gap,
.flex-inline.gap { .flex-inline.gap {
gap: 8px; gap: 8px;
@ -134,6 +138,7 @@ svg+span {
.text-small { .text-small {
font-size: 12px; font-size: 12px;
} }
.text-center { .text-center {
text-align: center; text-align: center;
} }
@ -253,6 +258,7 @@ svg+span {
.mt-16 { .mt-16 {
margin-top: 16px; margin-top: 16px;
} }
.mt-18 { .mt-18 {
margin-top: 18px; margin-top: 18px;
} }
@ -272,6 +278,7 @@ svg+span {
.mb-0 { .mb-0 {
margin-bottom: 0; margin-bottom: 0;
} }
.mb-3 { .mb-3 {
margin-bottom: 3px; margin-bottom: 3px;
} }
@ -328,10 +335,12 @@ svg+span {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
--label-width: 100px; --label-width: 100px;
.col { .col {
margin-bottom: 12px; margin-bottom: 12px;
} }
} }
.col { .col {
--gap-width: 10px; --gap-width: 10px;
@ -341,15 +350,19 @@ svg+span {
&.col-6 { &.col-6 {
width: 25%; width: 25%;
} }
&.col-8 { &.col-8 {
width: 33.3%; width: 33.3%;
} }
&.col-12 { &.col-12 {
width: 50%; width: 50%;
} }
&.col-18 { &.col-18 {
width: 75%; width: 75%;
} }
&.col-24 { &.col-24 {
width: 100%; width: 100%;
} }
@ -403,9 +416,11 @@ svg+span {
left: 50%; left: 50%;
transform: translate(-50%, -50%); transform: translate(-50%, -50%);
} }
.h100 { .h100 {
height: 100%; height: 100%;
} }
.h-280 { .h-280 {
height: 280px; height: 280px;
} }
@ -417,6 +432,7 @@ svg+span {
color: #888; color: #888;
} }
} }
.content { .content {
padding: 16px; padding: 16px;
white-space: pre-wrap; white-space: pre-wrap;

97
src/views/datav/AuditSuper.vue

@ -8,21 +8,18 @@
<datav-card title="审计整改结果" sub-title="已整改问题数/查出问题数"> <datav-card title="审计整改结果" sub-title="已整改问题数/查出问题数">
<el-scrollbar height="350px"> <el-scrollbar height="350px">
<datav-chart-bar <datav-chart-bar
:size="small" :size="small"
:data="data1" :data="data1"
unit="%" unit="%"
/> remark-font-size="12px"
spanClass="right-aligned"
/>
</el-scrollbar> </el-scrollbar>
<div class="flex tab-title flex center mt-20" style="margin-bottom: 20px">
<!-- <div class="tab-title-item active">-->
<!-- 分县市局-->
<!-- </div>-->
<!-- <div class="tab-title-item">局属单位</div>-->
</div>
</datav-card> </datav-card>
@ -123,36 +120,39 @@
<el-scrollbar height="470px"> <el-scrollbar height="470px">
<div class="message"> <div class="message">
<div class="message-title">整改通知</div> <div class="message-title">工作简报</div>
<div class="message-content">食药环支队 <div class="message-content">
根据全省公安机关执法活动财物审计三年全覆盖工作方案长沙市公安局关于推进执法活动财物审计全覆盖的实施方案要求警务督察支队审计处派出审计组对食药环支队2022年1月至2023年12月办理的刑事行政案件执法活动财物管理情况进行了审计</div> 为强化队伍纪律作风监督给严打整治雷霆行动及即将到来的国庆节安保维稳工作提供强有力的纪律监督保障9月25日20时至23时市局警务督察支队安排6个现场督察组对干部民警共计119人开展集中酒精吹气测试
</div>
<div class="message-footer flex end"> <div class="message-footer flex end">
<span>2024年8月26日</span> <span>2024-09-27 10:32</span>
</div> </div>
</div> </div>
<div class="message" type="warning"> <div class="message" type="warning">
<div class="message-title">整改通知</div> <div class="message-title">工作简报</div>
<div class="message-content"> <div class="message-content">
警务督察支队审计处派出审计组对刑侦支队2022年1月至2023年12月办理的刑事行政案件执法活动财物管理情况进行了审计 为持续抓好六项规定贯彻执行扎实做好中秋佳节前队伍纪律作风监督9月3日20时至22时市局警务督察支队联合机关党委以及来支队跟班学习的督察专干组成6个督察组对干部民警辅警共计112人开展集中酒精吹气测试
</div> </div>
<div class="message-footer flex end"> <div class="message-footer flex end">
<span>2024年8月26日</span> <span>2024-09-06 16:23</span>
</div> </div>
</div> </div>
<div class="message" type="success"> <div class="message" type="success">
<div class="message-title">审计公示</div> <div class="message-title">工作简报</div>
<div class="message-content">食药环支队 <div class="message-content">
根据全省公安机关执法活动财物审计三年全覆盖工作方案长沙市公安局关于推进执法活动财物审计全覆盖的实施方案要求警务督察支队审计处派出审计组对食药环支队2022年1月至2023年12月办理的刑事行政案件执法活动财物管理情况进行了审计</div> 为强化队伍纪律作风监督夏季治安打击整治行动及党的二十届三中全会安保维稳工作提供强有力地纪律监督保障7月11日晚市局警务督察支队联合机关党委派出6个现场督察组对干部民警辅警共计111人开展集中酒精吹气测试
</div>
<div class="message-footer flex end"> <div class="message-footer flex end">
<span>2024年8月26日</span> <span>2024-07-15 14:39</span>
</div> </div>
</div> </div>
<div class="message" type="success"> <div class="message" type="success">
<div class="message-title">审计公示</div> <div class="message-title">工作简报</div>
<div class="message-content">食药环支队 <div class="message-content">
根据市局领导指示受政治部委托按照长沙市公安局领导经济责任审计规定的要求警务督察支队审计处派出审计组对吴驰同志担任长沙市公安局高新区分局东方红派出所所长期间的经济责任履行情况进行离任审计</div> 为督促各参战警力切实履职拧紧责任链条保障周杰伦演唱会安全顺利进行根据市局统一部署2024年5月30日至6月2日由警务督察支队牵头统筹参战单位督察力量对全市公安机关周杰伦演唱会安全保卫工作开展全方位督导检查
</div>
<div class="message-footer flex end"> <div class="message-footer flex end">
<span>2024年5月16日</span> <span>2024-06-06 09:04</span>
</div> </div>
</div> </div>
</el-scrollbar> </el-scrollbar>
@ -377,44 +377,59 @@ const option1 = ref({
const data1 = [ const data1 = [
{ {
label: "芙蓉分局", label: "芙蓉分局",
value: 100, value: "100",
numerator: 1, rate: "100",
denominator: 1, numerator: "1",
denominator: "1",
}, },
{ {
label: "雨花分局", label: "雨花分局",
value: 91, value: "91",
numerator: 220, rate: "91",
numerator: "220",
denominator: 240, denominator: 240,
}, },
{ {
label: "高新分局", label: "高新分局",
value: 90, value: 90,
rate: 90,
numerator: 140, numerator: 140,
denominator: 155, denominator: 155,
}, },
{ {
label: "宁乡市局", label: "宁乡市局",
value: 83, value: 83,
rate: 83,
numerator: 194, numerator: 194,
denominator: 232, denominator: 232,
}, },
{ {
label: "开福分局", label: "开福分局",
value: 73, value: 73,
rate: 73,
numerator: 137,
denominator: 186,
},
{
label: "开福分局",
value: 73,
rate: 73,
numerator: 137, numerator: 137,
denominator: 186, denominator: 186,
}, },
{ {
label: "岳麓分局", label: "岳麓分局",
value: 0, value: 0,
numerator: 0, numerator: 0,
rate: 0,
denominator: 11, denominator: 11,
}, },
]; ];
// setTimeout(() => {
// data1.values().forEach((item) => {
// console.log(item.label);
// });
// }, 1000);
const data2 = [ const data2 = [
{ {
@ -543,9 +558,6 @@ const option5 = {
}; };
const option22 = { const option22 = {
series: [ series: [
{ {
@ -567,7 +579,20 @@ const option22 = {
}; };
const colors = [
{
color: "linear-gradient( 270deg, #FB002D 0%, #822232 100%)",
percentage: 80,
},
{
color: "linear-gradient( 270deg, #FFB90E 0%, #71501D 100%)",
percentage: 60,
},
{
color: "linear-gradient( 270deg, #63E700 0%, #19674C 100%)",
percentage: 40,
},
];
</script> </script>
@ -675,6 +700,8 @@ const option22 = {
margin-bottom: 10px; margin-bottom: 10px;
} }
} }
</style> </style>

1
src/views/datav/CaseVerif.vue

@ -14,6 +14,7 @@
<datav-chart-bar <datav-chart-bar
:data="fxsjBarList" :data="fxsjBarList"
size="large" size="large"
:color="colors"
/> />
</el-scrollbar> </el-scrollbar>
</datav-tab-item> </datav-tab-item>

53
src/views/datav/SceneInsp.vue

@ -255,6 +255,59 @@ import {getAllSupervisionNotifyCount, getChangedRank, getSupervisionTrend} from
import {getGobalRecentlyTrendByMonth} from "@/api/data/basicScreen.ts"; import {getGobalRecentlyTrendByMonth} from "@/api/data/basicScreen.ts";
const data1 = ref([]); const data1 = ref([]);
// const data1 = ref([
//
// ]);
// setTimeout(() => {
// data1.value=[
// {
// label: "",
// value: "100",
// rate:"100",
// numerator: "1",
// denominator: "1",
// },
// {
// label: "",
// value: "91",
// rate:"91",
// numerator: "220",
// denominator: "240",
// },
// {
// label: "",
// value: 90,
// rate:90,
// numerator: 140,
// denominator: 155,
// },
// {
// label: "",
// value: 83,
// rate:83,
// numerator: 194,
// denominator: 232,
// },
// {
// label: "",
// value: 73,
// rate:73,
// numerator: 137,
// denominator: 186,
// },
// {
// label: "",
// value: 0,
// numerator: 0,
// rate:0,
// denominator: 11,
// },
// ]
// },2000)
const activeTabLeft = ref("3"); const activeTabLeft = ref("3");
// //
const rankOverview = ref({ const rankOverview = ref({

Loading…
Cancel
Save