Browse Source

fix: 优化个人、单位画像

master
wxc 1 month ago
parent
commit
9b94ddc415
  1. 167
      src/components/negativeInfo/depart-dialog.vue
  2. 23
      src/views/sensitivePerception/DepartNegative.vue
  3. 190
      src/views/sensitivePerception/PoliceNegative.vue

167
src/components/negativeInfo/depart-dialog.vue

@ -20,7 +20,7 @@
<el-row class="mb-20" :gutter="20">
<el-col :span="8">
<h5>单位情况</h5>
<div class="card-item">
<div class="card-item h-220">
<el-row class="mb-10">
<el-col :span="16">
<div class="row">
@ -45,13 +45,13 @@
</div>
</div>
</el-col>
<el-col :span="8" >
<el-col :span="8">
<div class="flex center v-center">
<img
:src="`${BASE_PATH}/file/stream/${departInfo.departImg}`"
style="max-height: 96px"
v-if="departInfo.departImg1"
/>
:src="`${BASE_PATH}/file/stream/${departInfo.departImg}`"
style="max-height: 96px"
v-if="departInfo.departImg1"
/>
</div>
</el-col>
</el-row>
@ -79,60 +79,52 @@
</el-col>
<el-col :span="8">
<h5>问题情况</h5>
<div class="card-item">
<div style="min-height: 200px;" class="flex v-center w100">
<el-row class="flex v-center w100">
<el-col :span="6" class="text-center">
<div class="flex v-center w100">
<div class="w100">
<div class="text-primary" style="font-size: 34px">{{ negativeInfo.size }}</div>
<div>问题总数</div>
</div>
</div>
</el-col>
<el-col :span="18">
<el-row>
<el-col
:span="24"
class="mb-20"
v-if="negativeInfo.jcj110BusinessSize || negativeInfo.jcj110Size"
>
<description-pair
label1="110接处警量"
label2="110接处警问题数"
:value1="negativeInfo.jcj110BusinessSize"
:value2="negativeInfo.jcj110Size"
/>
</el-col>
<el-col
:span="24"
v-if="negativeInfo.jcj122BusinessSize || negativeInfo.jcj122Size"
class="mb-20"
>
<description-pair
label1="122接处警量"
label2="122接处警问题数"
:value1="negativeInfo.jcj122BusinessSize"
:value2="negativeInfo.jcj122Size"
/>
</el-col>
<el-col :span="24">
<description-pair
label1="执法办案"
label2="执法办案问题数"
:value1="negativeInfo.zfbaBusinessSize"
:value2="negativeInfo.zfbaSize"
/>
</el-col>
</el-row>
</el-col>
</el-row>
<div class="card-item h-220">
<div class="flex v-center h100">
<div style="width: 25%" class="text-center">
<div class="text-primary" style="font-size: 34px">
{{ negativeInfo.size }}
</div>
<div>问题总数</div>
</div>
<div style="width: 75%">
<div
class="mb-20"
v-if="negativeInfo.jcj110BusinessSize || negativeInfo.jcj110Size"
>
<description-pair
label1="110接处警量"
label2="110接处警问题数"
:value1="negativeInfo.jcj110BusinessSize"
:value2="negativeInfo.jcj110Size"
/>
</div>
<div
v-if="negativeInfo.jcj122BusinessSize || negativeInfo.jcj122Size"
class="mb-20"
>
<description-pair
label1="122接处警量"
label2="122接处警问题数"
:value1="negativeInfo.jcj122BusinessSize"
:value2="negativeInfo.jcj122Size"
/>
</div>
<div>
<description-pair
label1="执法办案"
label2="执法办案问题数"
:value1="negativeInfo.zfbaBusinessSize"
:value2="negativeInfo.zfbaSize"
/>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<h5>问题累计分值</h5>
<div class="flex center card-item wrap">
<div class="flex center card-item wrap h-220">
<el-progress
type="dashboard"
:percentage="100"
@ -147,7 +139,8 @@
<span
class="score-progress_score score-theme text-bold"
style="color: #19257d"
>{{ score }}</span>
>{{ score }}</span
>
</div>
</div>
</div>
@ -191,25 +184,35 @@
<el-row class="mb-20" :gutter="20">
<el-col :span="8">
<h5>个人问题排名</h5>
<div class="card-item">
<div class="card-item h-300">
<el-scrollbar max-height="300px">
<datav-chart-bar size="small" :data="policeBarList" :color="colors" :labelWidth="60" />
<datav-chart-bar
size="small"
:data="policeBarList"
:color="colors"
:labelWidth="60"
/>
<el-empty v-if="policeBarList.length === 0" />
</el-scrollbar>
</div>
</el-col>
<el-col :span="8">
<h5>问题涉及领导</h5>
<div class="card-item">
<div class="card-item h-300">
<el-scrollbar max-height="300px">
<datav-chart-bar size="small" :data="policeLeadBarList" :color="colors" :labelWidth="60" />
<datav-chart-bar
size="small"
:data="policeLeadBarList"
:color="colors"
:labelWidth="60"
/>
<el-empty v-if="policeLeadBarList.length === 0" />
</el-scrollbar>
</div>
</el-col>
<el-col :span="8">
<h5>突出问题排名</h5>
<div class="card-item">
<div class="card-item h-300">
<el-scrollbar max-height="300px">
<datav-chart-bar1
size="small"
@ -230,29 +233,17 @@
</div>
<h5>问题清单 {{ negativeList.length }}</h5>
<el-table :data="negativeList" height="500">
<el-table-column label="发现时间" prop="discoveryTime" width="160" />
<el-table-column label="发现时间" prop="discoveryTime" width="160" />
<el-table-column label="问题来源" prop="problemSources" width="150" />
<el-table-column label="业务类别" prop="businessTypeName" width="150" />
<el-table-column label="问题详情" prop="thingDesc" show-overflow-tooltip />
<el-table-column
label="问题详情"
prop="thingDesc"
show-overflow-tooltip
label="核查情况"
prop="checkStatusDesc"
show-overflow-tooltip
/>
<el-table-column
label="核查情况"
prop="checkStatusDesc"
show-overflow-tooltip
/>
<el-table-column
label="问题类型"
prop="problemType"
show-overflow-tooltip
/>
<el-table-column
label="分值"
width="100"
align="center"
>
<el-table-column label="问题类型" prop="problemType" show-overflow-tooltip />
<el-table-column label="分值" width="100" align="center">
<template #default="{ row }">
<span class="text-danger">{{ row.score }}</span>
</template>
@ -293,7 +284,7 @@ const props = defineProps({
});
const time = ref([
moment().startOf('year').format("YYYY-MM-DD HH:mm:ss"),
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"),
moment().format("YYYY-MM-DD HH:mm:ss"),
]);
const colors = [
@ -317,7 +308,7 @@ const negativeTotal = ref(0);
const problemTypeBarList = ref([]);
const score = ref(0);
const days = ref(0)
const days = ref(0);
async function getProfileData() {
loading.value = true;
@ -327,7 +318,7 @@ async function getProfileData() {
endTime: time.value.length ? time.value[1] : "",
});
score.value = Math.round(data.score);
days.value = data.days
days.value = data.days;
negativeList.value = data.negatives;
departInfo.value = data.departInfo;
negativeInfo.value = data.negativeInfo;
@ -432,7 +423,7 @@ const problemTypePieOptions = ref({
});
const policeBarList = ref([]);
const policeLeadBarList = ref([])
const policeLeadBarList = ref([]);
function getType(val) {
if (val < 60) {
@ -510,4 +501,10 @@ h5 {
padding: 16px;
min-height: 200px;
}
</style>
.h-220 {
height: 220px;
}
.h-300 {
height: 300px;
}
</style>

23
src/views/sensitivePerception/DepartNegative.vue

@ -3,6 +3,13 @@
<header>
<el-form :label-width="114">
<el-row>
<el-col :span="6">
<el-form-item label="统计时间">
<date-time-range-picker-ext
v-model="query.crtTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位类型">
<el-select v-model="query.departGroupId" clearable>
@ -34,14 +41,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="统计时间">
<date-time-range-picker-ext
v-model="query.crtTime"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位">
<depart-tree-select
@ -107,7 +106,11 @@
align="center"
width="160"
/>
<el-table-column label="风险值" align="center" width="160" prop="score"></el-table-column>
<el-table-column label="累计分值" align="center" width="160">
<template #default="{ row }">
<span>{{ Math.round(row.score) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="240">
<template #default="{ row }">
<el-button
@ -165,7 +168,7 @@ const query = ref({
size: 10,
departLevel: "3",
crtTime: [
moment().subtract(12, 'month').format("YYYY-MM-DD HH:mm:ss"),
moment().startOf('year').format("YYYY-MM-DD HH:mm:ss"),
moment().format("YYYY-MM-DD HH:mm:ss"),
],
});

190
src/views/sensitivePerception/PoliceNegative.vue

@ -3,6 +3,11 @@
<header>
<el-form :label-width="114">
<el-row>
<el-col :span="6">
<el-form-item label="统计时间">
<date-time-range-picker-ext v-model="query.crtTime" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="单位分组">
<el-select v-model="query.departGroupId" clearable>
@ -16,11 +21,6 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="统计时间">
<date-time-range-picker-ext v-model="query.crtTime" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="姓名">
<el-input v-model="query.name" placeholder="请输入" clearable />
@ -81,12 +81,12 @@
width="120"
align="center"
/>
<el-table-column
label="累计分值"
align="center"
width="160"
prop="score"
></el-table-column>
<el-table-column label="累计分值" align="center" width="160">
<template #default="{ row }">
<span>{{ Math.round(row.score) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="240">
<template #default="{ row }">
<el-button type="primary" link @click="handleShowProfile(row)"
@ -141,15 +141,15 @@
<el-row class="mb-20" :gutter="20">
<el-col :span="8">
<h5>民警基本情况</h5>
<div class="card-item">
<div class="card-item h-220">
<el-row>
<el-col :span="6">
<div class="flex v-center" style="height: 100%">
<img
v-if="policeInfo.avatarUrl"
:src="`${BASE_PATH}/file/stream/${policeInfo.avatarUrl}`"
class="police-avatar"
style="width: 94px"
<img
v-if="policeInfo.avatarUrl"
:src="`${BASE_PATH}/file/stream/${policeInfo.avatarUrl}`"
class="police-avatar"
style="width: 94px"
/>
<icon name="local-icon-police" :size="120" v-else />
</div>
@ -199,62 +199,54 @@
</el-col>
<el-col :span="8">
<h5>问题情况</h5>
<div class="card-item">
<div class="flex v-center w-100" style="min-height: 200px;">
<el-row style="width: 100%">
<el-col :span="6" class="text-center">
<div class="flex v-center w-100">
<div>
<div class="text-primary" style="font-size: 34px">{{ negativeInfo.size }}</div>
<div class="mb-10">问题总数</div>
</div>
<div class="card-item h-220">
<div class="flex v-center h100">
<div style="width: 25%" class="text-center">
<div class="text-primary" style="font-size: 34px">
{{ negativeInfo.size }}
</div>
</el-col>
<el-col :span="18">
<el-row>
<el-col
:span="24"
class="mb-20"
v-if="negativeInfo.jcj110BusinessSize || negativeInfo.jcj110Size"
>
<description-pair
label="110接处警"
label1="量"
label2="问题数"
:value1="negativeInfo.jcj110BusinessSize"
:value2="negativeInfo.jcj110Size"
/>
</el-col>
<el-col
:span="24"
v-if="negativeInfo.jcj122BusinessSize || negativeInfo.jcj122Size"
class="mb-20"
>
<description-pair
label="122接处警"
label1="量"
label2="问题数"
:value1="negativeInfo.jcj122BusinessSize"
:value2="negativeInfo.jcj122Size"
/>
</el-col>
<el-col :span="24">
<description-pair
label="执法办案"
label2="问题数"
:value1="negativeInfo.zfbaBusinessSize"
:value2="negativeInfo.zfbaSize"
/>
</el-col>
</el-row>
</el-col>
</el-row>
<div class="mb-10">问题总数</div>
</div>
<div style="width: 75%" class="text-center">
<div
v-if="negativeInfo.jcj110BusinessSize || negativeInfo.jcj110Size"
class="mb-20"
>
<description-pair
label="110接处警"
label1="量"
label2="问题数"
:value1="negativeInfo.jcj110BusinessSize"
:value2="negativeInfo.jcj110Size"
/>
</div>
<div
v-if="negativeInfo.jcj122BusinessSize || negativeInfo.jcj122Size"
class="mb-20"
>
<description-pair
label="122接处警"
label1="量"
label2="问题数"
:value1="negativeInfo.jcj122BusinessSize"
:value2="negativeInfo.jcj122Size"
/>
</div>
<div>
<description-pair
label="执法办案"
label2="问题数"
:value1="negativeInfo.zfbaBusinessSize"
:value2="negativeInfo.zfbaSize"
/>
</div>
</div>
</div>
</div>
</el-col>
<el-col :span="8">
<h5>问题累计分值</h5>
<div class="flex center card-item wrap">
<div class="flex center card-item wrap h-220">
<el-progress
type="dashboard"
:percentage="100"
@ -269,7 +261,8 @@
<span
class="score-progress_score score-theme text-bold"
style="color: #19257d"
>{{ score }}</span>
>{{ score }}</span
>
</div>
</div>
</div>
@ -301,14 +294,14 @@
</el-col>
<el-col :span="8">
<h5>突出问题排名</h5>
<div class="flex center card-item" style="width: 100%">
<datav-chart-bar1
size="small"
:data="problemTypeBarList"
:color="colors"
labelPosition="top"
/>
<el-empty v-if="problemTypeBarList.length === 0" />
<div class="flex center card-item h-320">
<datav-chart-bar1
size="small"
:data="problemTypeBarList"
:color="colors"
labelPosition="top"
/>
<el-empty v-if="problemTypeBarList.length === 0" />
</div>
</el-col>
</el-row>
@ -320,29 +313,17 @@
</div>
<h5>问题清单 {{ negativeList.length }}</h5>
<el-table :data="negativeList" height="500">
<el-table-column label="发现时间" prop="discoveryTime" width="160" />
<el-table-column label="发现时间" prop="discoveryTime" width="160" />
<el-table-column label="问题来源" prop="problemSources" width="150" />
<el-table-column label="业务类别" prop="businessTypeName" width="150" />
<el-table-column label="问题详情" prop="thingDesc" show-overflow-tooltip />
<el-table-column
label="问题详情"
prop="thingDesc"
show-overflow-tooltip
/>
<el-table-column
label="核查情况"
prop="checkStatusDesc"
show-overflow-tooltip
/>
<el-table-column
label="问题类型"
prop="problemType"
show-overflow-tooltip
label="核查情况"
prop="checkStatusDesc"
show-overflow-tooltip
/>
<el-table-column
label="分值"
width="100"
align="center"
>
<el-table-column label="问题类型" prop="problemType" show-overflow-tooltip />
<el-table-column label="分值" width="100" align="center">
<template #default="{ row }">
<span class="text-danger">{{ row.score }}</span>
</template>
@ -401,7 +382,7 @@ const query = ref({
current: 1,
size: 10,
crtTime: [
moment().startOf('year').format("YYYY-MM-DD HH:mm:ss"),
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"),
moment().format("YYYY-MM-DD HH:mm:ss"),
],
});
@ -424,7 +405,7 @@ function reset() {
current: 1,
size: 10,
crtTime: [
moment().startOf('year').format("YYYY-MM-DD HH:mm:ss"),
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"),
moment().format("YYYY-MM-DD HH:mm:ss"),
],
};
@ -493,7 +474,7 @@ async function handleShowProfile(row) {
watch(activeRow, async () => {
time.value = [
moment().startOf('year').format("YYYY-MM-DD HH:mm:ss"),
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"),
moment().format("YYYY-MM-DD HH:mm:ss"),
];
await getProfileData();
@ -508,7 +489,7 @@ const time = ref([]);
const problemTypeBarList = ref([]);
const score = ref(0);
const days = ref(0)
const days = ref(0);
async function getProfileData() {
loading.value = true;
@ -518,13 +499,13 @@ async function getProfileData() {
endTime: time.value.length ? time.value[1] : "",
});
score.value = Math.round(data.score);
days.value = data.days
days.value = data.days;
negativeList.value = data.negatives;
policeInfo.value = data.policeInfo;
negativeInfo.value = data.negativeInfo;
problemSourcesPieOptions.value.series[0].data = data.problemSourcesList;
problemTypePieOptions.value.series[0].data = data.problemTypeList;
problemTypeBarList.value = data.problemTypeBarList
problemTypeBarList.value = data.problemTypeBarList;
loading.value = false;
}
@ -613,8 +594,13 @@ h5 {
}
.card-item {
background: #f9faff;
padding: 16px;
min-height: 200px;
}
.h-220 {
height: 220px;
}
.h-320 {
height: 320px;
}
</style>

Loading…
Cancel
Save