|
|
|
@ -133,10 +133,11 @@ 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/moment.js"; |
|
|
|
import moment from "moment/moment.js"; |
|
|
|
import { getWorkDynamics,getAuditNegativeVo } from "@/api/data/aduit.ts"; |
|
|
|
import {getWorkDynamics, getAuditNegativeVo, getAuditMap} from "@/api/data/aduit.ts"; |
|
|
|
import { workDynamicColorMapping } from "@/enums/workDynamicColorMapping.js"; |
|
|
|
import { workDynamicColorMapping } from "@/enums/workDynamicColorMapping.js"; |
|
|
|
import { getAuditOverview, getAuditProblems } from '@/api/datav' |
|
|
|
import { getAuditOverview, getAuditProblems } from '@/api/datav' |
|
|
|
import { onMounted } from "vue"; |
|
|
|
import { onMounted } from "vue"; |
|
|
|
|
|
|
|
import {mapOrgNameMapping} from "@/enums/orgMapping.js"; |
|
|
|
const messages = ref([]); |
|
|
|
const messages = ref([]); |
|
|
|
const time = ref([ |
|
|
|
const time = ref([ |
|
|
|
moment().startOf("year").format("YYYY-MM-DD"), |
|
|
|
moment().startOf("year").format("YYYY-MM-DD"), |
|
|
|
@ -189,6 +190,8 @@ function getData() { |
|
|
|
}); |
|
|
|
}); |
|
|
|
getWorkDynamicsData(); |
|
|
|
getWorkDynamicsData(); |
|
|
|
getAuditNegativeVoFun(); |
|
|
|
getAuditNegativeVoFun(); |
|
|
|
|
|
|
|
getAuditMapData(); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const fxData =ref([]) |
|
|
|
const fxData =ref([]) |
|
|
|
@ -203,71 +206,82 @@ const getAuditNegativeVoFun =async ()=>{ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
const auditSuperRankTab = ref('1'); |
|
|
|
const auditSuperRankTab = ref('1'); |
|
|
|
let gobalTempMapVoList = [ |
|
|
|
// let auditMapData = [ |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "天心分局", |
|
|
|
// name: "天心分局", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 0, |
|
|
|
// checkPro: 0, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 0, |
|
|
|
// changed: 0, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "开福分局", |
|
|
|
// name: "开福分局", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 186, |
|
|
|
// checkPro: 186, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 137, |
|
|
|
// changed: 137, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "湘江新区", |
|
|
|
// name: "湘江新区", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 11, |
|
|
|
// checkPro: 11, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 0, |
|
|
|
// changed: 0, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "望城分局", |
|
|
|
// name: "望城分局", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 0, |
|
|
|
// checkPro: 0, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 0, |
|
|
|
// changed: 0, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "浏阳市局", |
|
|
|
// name: "浏阳市局", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 0, |
|
|
|
// checkPro: 0, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 0, |
|
|
|
// changed: 0, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
{ |
|
|
|
// { |
|
|
|
name: "长沙县局", |
|
|
|
// name: "长沙县局", |
|
|
|
reviewOrg: 0, |
|
|
|
// reviewOrg: 0, |
|
|
|
checkPro: 0, |
|
|
|
// checkPro: 0, |
|
|
|
rushPro: 0, |
|
|
|
// rushPro: 0, |
|
|
|
changed: 0, |
|
|
|
// changed: 0, |
|
|
|
}, |
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// name: "芙蓉分局", |
|
|
|
|
|
|
|
// reviewOrg: 0, |
|
|
|
|
|
|
|
// checkPro: 1, |
|
|
|
|
|
|
|
// rushPro: 0, |
|
|
|
|
|
|
|
// changed: 1, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// name: "雨花分局", |
|
|
|
|
|
|
|
// reviewOrg: 0, |
|
|
|
|
|
|
|
// checkPro: 240, |
|
|
|
|
|
|
|
// rushPro: 0, |
|
|
|
|
|
|
|
// changed: 220, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// { |
|
|
|
|
|
|
|
// name: "宁乡市局", |
|
|
|
|
|
|
|
// reviewOrg: 0, |
|
|
|
|
|
|
|
// checkPro: 232, |
|
|
|
|
|
|
|
// rushPro: 194, |
|
|
|
|
|
|
|
// changed: 194, |
|
|
|
|
|
|
|
// }, |
|
|
|
|
|
|
|
// ]; |
|
|
|
|
|
|
|
const auditMapData = ref([ |
|
|
|
{ |
|
|
|
{ |
|
|
|
name: "芙蓉分局", |
|
|
|
originalName: "浏阳市局", |
|
|
|
reviewOrg: 0, |
|
|
|
name: "浏阳市", |
|
|
|
checkPro: 1, |
|
|
|
reportProjectNumber: 135, |
|
|
|
rushPro: 0, |
|
|
|
checkProNumber: 135, |
|
|
|
changed: 1, |
|
|
|
rushProNumber: 89, |
|
|
|
|
|
|
|
rectifyNumber: 152, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
]); |
|
|
|
name: "雨花分局", |
|
|
|
|
|
|
|
reviewOrg: 0, |
|
|
|
|
|
|
|
checkPro: 240, |
|
|
|
|
|
|
|
rushPro: 0, |
|
|
|
|
|
|
|
changed: 220, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
name: "宁乡市局", |
|
|
|
|
|
|
|
reviewOrg: 0, |
|
|
|
|
|
|
|
checkPro: 232, |
|
|
|
|
|
|
|
rushPro: 194, |
|
|
|
|
|
|
|
changed: 194, |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
echarts.registerMap("changsha", changshaMap); |
|
|
|
echarts.registerMap("changsha", changshaMap); |
|
|
|
const option = ref({ |
|
|
|
const option = ref({ |
|
|
|
geo: { |
|
|
|
geo: { |
|
|
|
@ -276,8 +290,7 @@ const option = ref({ |
|
|
|
tooltip: { |
|
|
|
tooltip: { |
|
|
|
trigger: "item", |
|
|
|
trigger: "item", |
|
|
|
formatter: function (params) { |
|
|
|
formatter: function (params) { |
|
|
|
console.log(params); |
|
|
|
const dataItem = auditMapData.value.find((item) => |
|
|
|
const dataItem = gobalTempMapVoList.find((item) => |
|
|
|
|
|
|
|
item.name.includes(params.name.substring(0, 2)) |
|
|
|
item.name.includes(params.name.substring(0, 2)) |
|
|
|
); |
|
|
|
); |
|
|
|
if (dataItem) { |
|
|
|
if (dataItem) { |
|
|
|
@ -286,21 +299,22 @@ const option = ref({ |
|
|
|
<div class="tooltip-title">${dataItem.name}</div> |
|
|
|
<div class="tooltip-title">${dataItem.name}</div> |
|
|
|
<div class="tooltip-content"> |
|
|
|
<div class="tooltip-content"> |
|
|
|
<ul class="tooltip-ul" > |
|
|
|
<ul class="tooltip-ul" > |
|
|
|
<li>审计单位/项目数<span>暂无</span></li> |
|
|
|
<li>审计单位/项目数<span>${dataItem.reportProjectNumber}</span></li> |
|
|
|
<li>查处问题数 <span>${dataItem.checkPro}</span></li> |
|
|
|
<li>查处问题数 <span>${dataItem.checkProNumber}</span></li> |
|
|
|
<li>追责问责数 <span>暂无</span></li> |
|
|
|
<li>追责问责数 <span>${dataItem.rushProNumber}</span></li> |
|
|
|
<li>整改问题数 <span>${dataItem.changed}</span></li> |
|
|
|
<li>整改问题数 <span>${dataItem.rectifyNumber}</span></li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div>`; |
|
|
|
</div>`; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return `<div class="tooltip"> |
|
|
|
return `<div class="tooltip"> |
|
|
|
<div class="tooltip-title">${dataItem.name}</div> |
|
|
|
<div class="tooltip-title">${params.name}</div> |
|
|
|
<div class="tooltip-content"> |
|
|
|
<div class="tooltip-content"> |
|
|
|
<ul class="tooltip-ul""> |
|
|
|
<ul class="tooltip-ul""> |
|
|
|
<li>审计单位/项目 <span>0</span></li> |
|
|
|
<li>审计单位/项目 <span>-</span></li> |
|
|
|
<li>查处问题数 <span>0</span></li> |
|
|
|
<li>查处问题数 <span>-</span></li> |
|
|
|
<li>追责问责数 <span>0</span></li> |
|
|
|
<li>追责问责数 <span>-</span></li> |
|
|
|
|
|
|
|
<li>整改问题数 <span>-</span></li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div>`; |
|
|
|
</div>`; |
|
|
|
@ -529,6 +543,44 @@ function handlePerviewFile(msg) { |
|
|
|
files.value = JSON.parse(msg.files) |
|
|
|
files.value = JSON.parse(msg.files) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const getAuditMapData = async ()=>{ |
|
|
|
|
|
|
|
const body = { |
|
|
|
|
|
|
|
beginTime: time.value[0], |
|
|
|
|
|
|
|
endTime: time.value[1] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
const res = await getAuditMap(body); |
|
|
|
|
|
|
|
const mappedData = mapOrgNameMapping(res.auditSuperviseMapIconVoList,"checkProNumber"); |
|
|
|
|
|
|
|
// 总数 |
|
|
|
|
|
|
|
const maxItem = mappedData.reduce( |
|
|
|
|
|
|
|
(max, item) => (Number(item.value) > Number(max.value) ? item : max), |
|
|
|
|
|
|
|
mappedData[0] |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
const range60Percent = maxItem.value * 0.6; // 不用取整,小数也可以 |
|
|
|
|
|
|
|
const range80Percent = maxItem.value * 0.8; // 不用取整,小数也可以 |
|
|
|
|
|
|
|
console.log("============================") |
|
|
|
|
|
|
|
console.log(mappedData) |
|
|
|
|
|
|
|
auditMapData.value = mappedData; |
|
|
|
|
|
|
|
option.value.series[0].data = mappedData; |
|
|
|
|
|
|
|
option.value.visualMap.pieces = [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
gte: 0, |
|
|
|
|
|
|
|
lte: range60Percent, |
|
|
|
|
|
|
|
label: "低于最大问题数的60%", |
|
|
|
|
|
|
|
color: "#4987F6", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
gte: range60Percent, |
|
|
|
|
|
|
|
lte: range80Percent, |
|
|
|
|
|
|
|
label: "介于最大问题数的60%~80%", |
|
|
|
|
|
|
|
color: "#F6A149", |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ gte: range80Percent, label: "高于最大问题数的80%", color: "#D34343" }, |
|
|
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
</script> |
|
|
|
</script> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|