Browse Source

feat--审计督察大屏

master
parent
commit
177468a1f6
  1. 7
      src/api/data/aduit.ts
  2. 337
      src/views/datav/AuditSuper.vue

7
src/api/data/aduit.ts

@ -7,9 +7,10 @@ export function getWorkDynamics(times) {
});
}
export function getAuditNegativeVo(times){
return request.get({
url: `/datav/audit/getAuditNegativeVo?beginTime=${times[0]}&endTime=${times[1]}`
export function getAuditNegativeVo(body){
return request.post({
url: `/datav/audit/getAuditNegativeVo`,
body
})
}

337
src/views/datav/AuditSuper.vue

@ -7,41 +7,207 @@
<el-row :gutter="16">
<el-col :span="6">
<datav-card title="审计整改结果"
sub-title="已整改问题数/查处问题数"
>
<datav-card>
<datav-tabs
type="bottom-button"
v-model="auditSuperRankTab"
ref="auditSuperRankTabs"
v-model="activeAuditType"
size="small"
@tab-change="handleAuditTypeChange"
>
<template
v-for="item in dictData"
:key="item.dictValue"
>
<datav-tab-item
:label="item.dictLabel"
:name="item.dictValue"
>
<datav-tabs type="bottom-button">
<datav-tab-item
label="分县市局"
name="1"
>
<datav-tab-item label="分县市局" name="1">
<el-row class="mb-32">
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.projectNumber }}
</div>
<div class="descriptions_label">
审计单位/项目
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.auditAmount }}
</div>
<div class="descriptions_label">
审计总金额万元
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.auditSjAmount }}
</div>
<div class="descriptions_label">
审减/问题金额万元
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.negativeNumber }}
</div>
<div class="descriptions_label">
查处问题数
</div>
</div>
</el-col>
<el-col :span="4">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.accountableNumber }}
</div>
<div class="descriptions_label">
追责问责数
</div>
</div>
</el-col>
</el-row>
<el-scrollbar height="350px">
<datav-chart-bar
:data="
fxsjList
"
size="small"
:data="fxData"
unit="%"
title="审计整改结果"
remark-font-size="12px"
spanClass="right-aligned"
sub-title="已整改问题数/查处问题数"
:color="colors"
/>
</el-scrollbar>
</datav-tab-item>
<datav-tab-item label="局属单位" name="2">
<datav-tab-item
label="局属单位"
name="2"
>
<el-row class="mb-32">
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.projectNumber }}
</div>
<div class="descriptions_label">
审计单位/项目
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.auditAmount }}
</div>
<div class="descriptions_label">
审计总金额万元
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.auditSjAmount }}
</div>
<div class="descriptions_label">
审减/问题金额万元
</div>
</div>
</el-col>
<el-col :span="5">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.negativeNumber }}
</div>
<div class="descriptions_label">
查处问题数
</div>
</div>
</el-col>
<el-col :span="4">
<div class="descriptions_cell text-center">
<div class="descriptions_content">
{{ leftOverview.accountableNumber }}
</div>
<div class="descriptions_label">
追责问责数
</div>
</div>
</el-col>
</el-row>
<el-scrollbar height="350px">
<datav-chart-bar
size="small"
:data="jsData"
unit="%"
remark-font-size="12px"
spanClass="right-aligned"
:data="jsdwList"
size="large"
title="审计整改结果"
sub-title="已整改问题数/查处问题数"
:color="colors"
/>
</el-scrollbar>
</datav-tab-item>
</datav-tabs>
</datav-tab-item>
</template>
</datav-tabs>
</datav-card>
<!-- <datav-card title="审计整改结果"-->
<!-- sub-title="已整改问题数/查处问题数"-->
<!-- >-->
<!-- <datav-tabs-->
<!-- type="bottom-button"-->
<!-- v-model="auditSuperRankTab"-->
<!-- ref="auditSuperRankTabs"-->
<!-- >-->
<!-- <datav-tab-item label="分县市局" name="1">-->
<!-- <el-scrollbar height="350px">-->
<!-- <datav-chart-bar-->
<!-- size="small"-->
<!-- :data="fxData"-->
<!-- unit="%"-->
<!-- remark-font-size="12px"-->
<!-- spanClass="right-aligned"-->
<!-- :color="colors"-->
<!-- />-->
<!-- </el-scrollbar>-->
<!-- </datav-tab-item>-->
<!-- <datav-tab-item label="局属单位" name="2">-->
<!-- <el-scrollbar height="350px">-->
<!-- <datav-chart-bar-->
<!-- size="small"-->
<!-- :data="jsData"-->
<!-- unit="%"-->
<!-- remark-font-size="12px"-->
<!-- spanClass="right-aligned"-->
<!-- :color="colors"-->
<!-- />-->
<!-- </el-scrollbar>-->
<!-- </datav-tab-item>-->
<!-- </datav-tabs>-->
<!-- </datav-card>-->
<datav-card title="审计项目类型">
<v-charts
style="height: 300px"
@ -168,6 +334,7 @@ import { workDynamicColorMapping } from "@/enums/workDynamicColorMapping.js";
import { getAuditOverview, getAuditProblems } from '@/api/datav'
import { onMounted } from "vue";
import {mapOrgNameMapping} from "@/enums/orgMapping.js";
import useCatchStore from "@/stores/modules/catch.ts";
const messages = ref([]);
const time = ref([
moment().startOf("year").format("YYYY-MM-DD"),
@ -178,6 +345,22 @@ watch(time, () => {
getData();
});
const activeAuditType = ref("");
const fxsjList = ref([]); //
const jsdwList = ref([]); //
const leftOverview = ref({});
const catchStore = useCatchStore();
const dictData = computed(() => {
return (catchStore.getDictProblemSources()
.find(item => item.id === "26")?.children || [])
.map(item => ({
dictLabel: item.label?.trim(),
dictValue: item.id
}));
});
const overview = ref({
negativeNumber: 0,
accountableNumber: 0,
@ -204,9 +387,22 @@ const problemOptions = ref({
});
onMounted(() => {
console.log("******")
console.log(dictData)
getData()
})
watch(
dictData,
(val) => {
if (val.length > 0 && !activeAuditType.value) {
activeAuditType.value = val[0].dictValue;
getData();
}
},
{ immediate: true }
);
function getData() {
getOverviewFun();
getAuditProblems(time.value).then(data => {
@ -224,11 +420,24 @@ function getData() {
const fxData =ref([])
const jsData =ref([])
watch(activeAuditType, () => {
getAuditNegativeVoFun()
},{deep:true})
const getAuditNegativeVoFun =async ()=>{
const res = await getAuditNegativeVo(time.value);
if(res){
fxData.value=res.fxData;
jsData.value=res.jsData;
if (!activeAuditType.value) return;
const body = {
beginTime: time.value[0],
endTime: time.value[1],
auditType: activeAuditType.value,
};
const res = await getAuditNegativeVo(body);
if (res) {
fxsjList.value = res.fxData || [];
jsdwList.value = res.jsData || [];
leftOverview.value = res.leftOverview || {};
}
}
@ -290,7 +499,6 @@ const getAuditTrendFun = async (year = selectedYear.value) => {
const auditSuperRankTab = ref('1');
const auditMapData = ref([
{
@ -314,28 +522,34 @@ const option = ref({
const dataItem = auditMapData.value.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.reportProjectNumber}</span></li>
<li>查处问题数 <span>${dataItem.checkProNumber}</span></li>
<li>追责问责数 <span>${dataItem.rushProNumber}</span></li>
<li>整改问题数 <span>${dataItem.rectifyNumber}</span></li>
<ul class="tooltip-ul">
<li>审计单位/项目数<span>${dataItem.projectNumber ?? "-"}</span></li>
<li>审计总金额<span>${dataItem.auditAmount ?? "-"}</span></li>
<li>审减金额<span>${dataItem.auditSjAmount ?? "-"}</span></li>
<li>问题金额<span>${dataItem.auditWtAmount ?? "-"}</span></li>
<li>查出问题数<span>${dataItem.negativeNumber ?? "-"}</span></li>
<li>追责问责数<span>${dataItem.accountableNumber ?? "-"}</span></li>
</ul>
</div>
</div>`;
} else {
return `<div class="tooltip">
return `
<div class="tooltip">
<div class="tooltip-title">${params.name}</div>
<div class="tooltip-content">
<ul class="tooltip-ul"">
<li>审计单位/项目 <span>-</span></li>
<li>查处问题数 <span>-</span></li>
<li>追责问责数 <span>-</span></li>
<li>整改问题数 <span>-</span></li>
<ul class="tooltip-ul">
<li>审计单位/项目数<span>-</span></li>
<li>审计总金额<span>-</span></li>
<li>审减金额<span>-</span></li>
<li>问题金额<span>-</span></li>
<li>查出问题数<span>-</span></li>
<li>追责问责数<span>-</span></li>
</ul>
</div>
</div>`;
@ -453,64 +667,7 @@ const option1 = ref({
},
],
});
const data1 = [
{
label: "公交分局",
value: 100,
numerator: 7,
denominator: 8,
},
{
label: "岳麓分局",
value: 100,
numerator: 2,
denominator: 2,
},
{
label: "交警支队",
value: 100,
numerator: 2,
denominator: 2,
},
{
label: "高新分局",
value: 100,
numerator: 1,
denominator: 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 = ref({
series: [
{
@ -572,7 +729,7 @@ const getAuditMapData = async ()=>{
endTime: time.value[1]
}
const res = await getAuditMap(body);
const mappedData = mapOrgNameMapping(res.auditSuperviseMapIconVoList,"checkProNumber");
const mappedData = mapOrgNameMapping(res.auditSuperviseMapIconVoList,"negativeNumber");
//
const maxItem = mappedData.reduce(
(max, item) => (Number(item.value) > Number(max.value) ? item : max),

Loading…
Cancel
Save