|
|
|
|
@ -1,108 +1,115 @@
|
|
|
|
|
<template> |
|
|
|
|
<div class="container"> |
|
|
|
|
<el-tabs> |
|
|
|
|
<el-tab-pane label="所队"> |
|
|
|
|
<header> |
|
|
|
|
<el-form :label-width="114"> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="三级单位"> |
|
|
|
|
<depart-tree-select |
|
|
|
|
v-model="query.departId" |
|
|
|
|
:check-strictly="false" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="单位简称"> |
|
|
|
|
<el-input v-model="query.departName" placeholder="请输入" /> |
|
|
|
|
</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-row> |
|
|
|
|
</el-form> |
|
|
|
|
<div class="mb-25 flex end"> |
|
|
|
|
<div> |
|
|
|
|
<el-button type="primary" @click="getList"> |
|
|
|
|
<template #icon> |
|
|
|
|
<icon name="el-icon-Search" /> |
|
|
|
|
</template> |
|
|
|
|
查询</el-button |
|
|
|
|
> |
|
|
|
|
<el-button @click="reset">重置</el-button> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
</header> |
|
|
|
|
<div class="table-container"> |
|
|
|
|
<el-table :data="list"> |
|
|
|
|
<el-table-column label="单位名称"> |
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
<span |
|
|
|
|
>{{ row.parentDepartName }}/{{ |
|
|
|
|
row.departName |
|
|
|
|
}}</span |
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column |
|
|
|
|
label="民警人数" |
|
|
|
|
prop="policeSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="协辅警人数" |
|
|
|
|
prop="auxSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="查实问题涉及人数" |
|
|
|
|
prop="verifyPoliceSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="查实问题数" |
|
|
|
|
prop="verifySize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<header> |
|
|
|
|
<el-form :label-width="114"> |
|
|
|
|
<el-row> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="单位类型"> |
|
|
|
|
<el-select v-model="query.departLevel"> |
|
|
|
|
<el-option value="3" label="所队"></el-option> |
|
|
|
|
</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-table-column label="操作"> |
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
link |
|
|
|
|
@click="handleShowProfile(row)" |
|
|
|
|
>问题画像</el-button |
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex end mt-8"> |
|
|
|
|
<el-pagination |
|
|
|
|
@size-change="getList" |
|
|
|
|
@current-change="getList" |
|
|
|
|
:current-page="query.current" |
|
|
|
|
:page-sizes="[9, 18, 36]" |
|
|
|
|
v-model:page-size="query.size" |
|
|
|
|
v-model:current-page="query.current" |
|
|
|
|
layout="total, sizes, prev, pager, next" |
|
|
|
|
:total="total" |
|
|
|
|
v-if="list.length" |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="三级单位"> |
|
|
|
|
<depart-tree-select |
|
|
|
|
v-model="query.departId" |
|
|
|
|
:check-strictly="false" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
<el-col :span="6"> |
|
|
|
|
<el-form-item label="单位简称"> |
|
|
|
|
<el-input |
|
|
|
|
v-model="query.departName" |
|
|
|
|
placeholder="请输入" |
|
|
|
|
/> |
|
|
|
|
</el-form-item> |
|
|
|
|
</el-col> |
|
|
|
|
</el-row> |
|
|
|
|
</el-form> |
|
|
|
|
<div class="mb-25 flex end"> |
|
|
|
|
<div> |
|
|
|
|
<el-button type="primary" @click="getList"> |
|
|
|
|
<template #icon> |
|
|
|
|
<icon name="el-icon-Search" /> |
|
|
|
|
</template> |
|
|
|
|
查询</el-button |
|
|
|
|
> |
|
|
|
|
</el-pagination> |
|
|
|
|
<el-button @click="reset">重置</el-button> |
|
|
|
|
</div> |
|
|
|
|
</el-tab-pane> |
|
|
|
|
</el-tabs> |
|
|
|
|
</div> |
|
|
|
|
</header> |
|
|
|
|
<div class="table-container" v-loading="mainLoading"> |
|
|
|
|
<el-table :data="list"> |
|
|
|
|
<el-table-column label="单位名称"> |
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
<span |
|
|
|
|
>{{ row.parentDepartName }}/{{ |
|
|
|
|
row.departName |
|
|
|
|
}}</span |
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
<el-table-column |
|
|
|
|
label="民警人数" |
|
|
|
|
prop="policeSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="协辅警人数" |
|
|
|
|
prop="auxSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="查实问题涉及人数" |
|
|
|
|
prop="verifyPoliceSize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
<el-table-column |
|
|
|
|
label="查实问题数" |
|
|
|
|
prop="verifySize" |
|
|
|
|
align="center" |
|
|
|
|
width="160" |
|
|
|
|
/> |
|
|
|
|
|
|
|
|
|
<el-table-column label="操作"> |
|
|
|
|
<template #default="{ row }"> |
|
|
|
|
<el-button |
|
|
|
|
type="primary" |
|
|
|
|
link |
|
|
|
|
@click="handleShowProfile(row)" |
|
|
|
|
>问题画像</el-button |
|
|
|
|
> |
|
|
|
|
</template> |
|
|
|
|
</el-table-column> |
|
|
|
|
</el-table> |
|
|
|
|
</div> |
|
|
|
|
<div class="flex end mt-8"> |
|
|
|
|
<el-pagination |
|
|
|
|
@size-change="getList" |
|
|
|
|
@current-change="getList" |
|
|
|
|
:current-page="query.current" |
|
|
|
|
:page-sizes="[9, 18, 36]" |
|
|
|
|
v-model:page-size="query.size" |
|
|
|
|
v-model:current-page="query.current" |
|
|
|
|
layout="total, sizes, prev, pager, next" |
|
|
|
|
:total="total" |
|
|
|
|
v-if="list.length" |
|
|
|
|
> |
|
|
|
|
</el-pagination> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
<el-dialog title="单位问题画像" v-model="show" width="85vw" top="2vh"> |
|
|
|
|
@ -115,7 +122,7 @@
|
|
|
|
|
style="width: 300px" |
|
|
|
|
/> |
|
|
|
|
</div> |
|
|
|
|
<el-button type="primary">查询</el-button> |
|
|
|
|
<el-button type="primary" @click="getProfileData">查询</el-button> |
|
|
|
|
</header> |
|
|
|
|
<main v-loading="loading"> |
|
|
|
|
<el-row class="mb-20"> |
|
|
|
|
@ -327,22 +334,31 @@ import vCharts from "vue-echarts";
|
|
|
|
|
import { |
|
|
|
|
listDepartNegative, |
|
|
|
|
getDepartProfile, |
|
|
|
|
listNegativeMonthly |
|
|
|
|
listNegativeMonthly, |
|
|
|
|
} from "@/api/sensitivePerception/profileDepart"; |
|
|
|
|
import { listNegative } from "@/api/work/negative"; |
|
|
|
|
import { InspectCase } from "@/enums/dictEnums"; |
|
|
|
|
import moment from "moment"; |
|
|
|
|
|
|
|
|
|
const query = ref({ |
|
|
|
|
current: 1, |
|
|
|
|
size: 10, |
|
|
|
|
departLevel: "3", |
|
|
|
|
crtTime: [ |
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
const list = ref<any[]>([]); |
|
|
|
|
const total = ref(0); |
|
|
|
|
|
|
|
|
|
const mainLoading = ref(false); |
|
|
|
|
function getList() { |
|
|
|
|
mainLoading.value = true; |
|
|
|
|
listDepartNegative(query.value).then((data) => { |
|
|
|
|
list.value = data.records; |
|
|
|
|
total.value = data.total; |
|
|
|
|
mainLoading.value = false; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -350,6 +366,11 @@ function reset() {
|
|
|
|
|
query.value = { |
|
|
|
|
current: 1, |
|
|
|
|
size: 10, |
|
|
|
|
departLevel: "3", |
|
|
|
|
crtTime: [ |
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
], |
|
|
|
|
}; |
|
|
|
|
getList(); |
|
|
|
|
} |
|
|
|
|
@ -413,20 +434,26 @@ const barOption = ref({
|
|
|
|
|
], |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async function handleShowProfile(row) { |
|
|
|
|
activeRow.value = row; |
|
|
|
|
loading.value = true; |
|
|
|
|
show.value = true; |
|
|
|
|
await getProfileData(); |
|
|
|
|
listNegativeMonthly(row.departId).then(data => { |
|
|
|
|
barOption.value.xAxis.data = data.months |
|
|
|
|
barOption.value.series[0].data = data.values |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
watch(activeRow, async () => { |
|
|
|
|
time.value = [ |
|
|
|
|
moment().startOf("year").format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
moment().format("YYYY-MM-DD HH:mm:ss"), |
|
|
|
|
]; |
|
|
|
|
await getProfileData(); |
|
|
|
|
listNegativeMonthly(row.departId).then((data) => { |
|
|
|
|
barOption.value.xAxis.data = data.months; |
|
|
|
|
barOption.value.series[0].data = data.values; |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
const time = ref([]); |
|
|
|
|
async function getProfileData() { |
|
|
|
|
loading.value = true; |
|
|
|
|
negativeQuery.value.involveDepartId = activeRow.value.departId; |
|
|
|
|
getNegativeList(); |
|
|
|
|
const data = await getDepartProfile(activeRow.value.departId, { |
|
|
|
|
|