@@ -145,7 +145,7 @@
@@ -154,7 +154,7 @@
@@ -173,9 +173,7 @@ import vCharts from "vue-echarts";
import changshaMap from "@/assets/data/changsha.json";
import * as echarts from "echarts/core";
import moment from "moment";
-import {getCaseVerifData, getCaseVerifTrend} from "@/api/datav";
-import {getGobalRecentlyTrendByMonth} from "@/api/data/basicScreen.ts";
-import {getAllCaseVerifCount} from "@/api/screen/CaseVerif.ts";
+import {getAllCaseVerificationCount, getCaseVerificationRank, getCaseVerificationTrend, getCaseSourceRateAndDealSituation, getCaseVerificationMap, getCaseProblemProperty, getConfinementAndPause} from "@/api/screen/CaseVerif.ts";
const currentYear = new Date().getFullYear();
const years = ref([currentYear.toString(), (currentYear - 1).toString(), (currentYear - 2).toString()]); // 年份列表
@@ -185,127 +183,38 @@ const time = ref([
moment().format("YYYY-MM-DD"),
]);
+
+
+const fxsjBarList = ref([]);
+const jsdwBarList = ref([]);
+
const overview = ref({
total: 0,
confirmed: 0, // 查实案件数
- investigateAndPunish: 0, // 查处问题(个)
- accountablePeopleNumber: 0, // 问责人次
- accountableDepartNumber: 0, // 问责单位数、
- confirmedRate: 0, // 查实率
+ dealCasePro: 0, // 查处问题(个)
+ punishPre: 0, // 问责人次
+ punishOrg: 0, // 问责单位数、
+ Rate: 0, // 查实率
});
-let gobalTempMapVoList = [
+let gobalTempMapVoList = ref([
{
"name": "浏阳市局",
- "totalPro": 93,
- "checkedPro": 11,
- "dealPro": 8,
- "dealPersonCount": 7,
- "orgCount": 9,
+ "total": 93,
+ "confirmed": 11,
+ "dealCasePro": 8,
+ "punishPre": 7,
+ "punishOrg": 9,
"rate": "12%"
- },
- {
- "name": "长沙县局",
- "totalPro": 192,
- "checkedPro": 33,
- "dealPro": 33,
- "dealPersonCount": 22,
- "orgCount": 11,
- "rate": "17%"
- },
- {
- "name": "开福分局",
- "totalPro": 174,
- "checkedPro": 63,
- "dealPro": 60,
- "dealPersonCount": 32,
- "orgCount": 13,
- "rate": "36%"
- },
- {
- "name": "芙蓉分局",
- "totalPro": 175,
- "checkedPro": 30,
- "dealPro": 30,
- "dealPersonCount": 24,
- "orgCount": 17,
- "rate": "17%"
- },
- {
- "name": "雨花分局",
- "totalPro": 214,
- "checkedPro": 32,
- "dealPro": 32,
- "dealPersonCount": 27,
- "orgCount": 12,
- "rate": "15%"
- },
- {
- "name": "天心分局",
- "totalPro": 179,
- "checkedPro": 34,
- "dealPro": 21,
- "dealPersonCount": 16,
- "orgCount": 14,
- "rate": "19%"
- },
- {
- "name": "岳麓分局",
- "totalPro": 234,
- "checkedPro": 25,
- "dealPro": 10,
- "dealPersonCount": 9,
- "orgCount": 10,
- "rate": "11%"
- },
- {
- "name": "宁乡分局",
- "totalPro": 68,
- "checkedPro": 9,
- "dealPro": 9,
- "dealPersonCount": 11,
- "orgCount": 8,
- "rate": "13%"
- },
- {
- "name": "望城分局",
- "totalPro": 78,
- "checkedPro": 21,
- "dealPro": 8,
- "dealPersonCount": 9,
- "orgCount": 5,
- "rate": "27%"
- },
+ }
+]);
-];
-const fxsjBarList = ref([]);
-const jsdwBarList = ref([]);
-const zfbaPieList = ref([]);
-const fwglPieList = ref([]);
const jjjgPieList = ref([]);
-const ajlyPieList = ref([]);
-const ajhcqxList = ref([]);
-const temp = ref({
- tempCheckedCaseTotal: 0,
- tempDealPro: 0,
- tempDealPre: 0,
- tempDealOrg: 0,
- tempRate: 0,
-})
-
-// setTimeout(() => {
-// temp.value={
-// tempCheckedCaseTotal: 292,
-// tempDealPro: 285,
-// tempDealPre: 223,
-// tempDealOrg: 93,
-// tempRate: 18,
-// }
-// }, 1000);
-//
+
// region 事件||监听
const handleCommand = (year) => {
selectedYear.value = year; // 更新当前选中的年份
+ getProTrendList(selectedYear.value);
};
watch(time, () => {
getData();
@@ -315,30 +224,102 @@ watch(time, () => {
+// region 所有函数
+const getRankList = async(timeValue) => {
+ const res = await getCaseVerificationRank(timeValue);
+ fxsjBarList.value = res.fxsjRankList
+ jsdwBarList.value = res.jsdwRankList
+}
-
-function getData() {
- getCaseVerifData(time.value).then((data) => {
- // overview.value = data.overview;
- fxsjBarList.value = data.fxsjBarList;
- jsdwBarList.value = data.jsdwBarList;
- zfbaPieList.value = data.zfbaPieList;
- fwglPieList.value = data.fwglPieList;
- jjjgPieList.value = data.jjjgPieList;
- ajlyPieList.value = data.ajlyPieList;
+const getCaseProblemPropertyList = async(timeValue) => {
+ const res = await getCaseProblemProperty(timeValue);
+ zfbaPieOption.value.series[0].data = res.zfbaPieList;
+ fwglPieOption.value.series[0].data = res.fwglPieList;
+}
+const getOverview = async(timeValue)=>{
+ const res = await getAllCaseVerificationCount(timeValue)
+ overview.value = res.overview
+}
+const getMapIcon = async(timeValue)=> {
+ const res = await getCaseVerificationMap(timeValue);
+ const mappedData = res.caseVerificationMapList.map(item => {
+ let name;
+ switch (item.name) {
+ case '长沙县局':
+ name = '长沙县';
+ break;
+ case '芙蓉分局':
+ name = '芙蓉区';
+ break;
+ case '天心分局':
+ name = '天心区';
+ break;
+ case '岳麓分局':
+ name = '岳麓区';
+ break;
+ case '开福分局':
+ name = '开福区';
+ break;
+ case '雨花分局':
+ name = '雨花区';
+ break;
+ case '望城分局':
+ name = '望城区';
+ break;
+ case '宁乡市局':
+ name = '宁乡市';
+ break;
+ case '浏阳市局':
+ name = '浏阳市';
+ break;
+ case '高新分局':
+ name = '高新区';
+ break;
+ default:
+ name = item.name;
+ break;
+ }
+ return {
+ ...item,
+ originalName: item.name, // 添加原始名称
+ name: name,
+ value: item.total,
+ };
});
+ gobalTempMapVoList.value = mappedData
+ option.value.series[0].data = mappedData;
+}
+const getProTrendList= async(year) => {
+ const res = await getCaseVerificationTrend(year);
+ const temp = res.proTrendList;
+ const categories = temp.map(item => item.name);
+ const values = temp.map(item => item.value);
+ proTrend.value.xAxis.data = categories;
+ proTrend.value.series[0].data = values;
+}
+const getCaseSourceAndDeal = async (timeValue)=>{
+ const res = await getCaseSourceRateAndDealSituation(timeValue);
+ ajlyPieOption.value.series[0].data = res.caseSourceRateList
+ wzclPieOption.value.series[0].data = res.dealSituationPieList
+}
+
+const getConfinementAndPauseList = async (timeValue)=>{
+ const res = await getConfinementAndPause(timeValue);
+ jbcloption.value.series[0].data = res.jbclList;
+ dzcloption.value.series[0].data = res.dzclList;
+}
+// endregion
- getCaseVerifTrend(time.value, 12).then((data) => {
- ajhcqxList.value = data.ajhcqsList;
- // console.log(ajhcqxList.value)
- });
- getAllCaseVerifCount(time.value).then((data) => {
- overview.value = data.overview;
- console.log(overview.value)
- })
+function getData() {
+ getRankList(time.value);
+ getCaseProblemPropertyList(time.value)
+ getOverview(time.value);
+ getMapIcon(time.value);
+ getProTrendList(selectedYear.value);
+ getCaseSourceAndDeal(time.value);
}
watch(time, () => {
@@ -348,46 +329,7 @@ onMounted(() => {
getData();
});
-const zfbaPieOption = computed(() => {
- return {
- tooltip: {
- trigger: "item",
- },
- series: [
- {
- type: "pie",
- radius: ["40%", "70%"],
- label: {
- color: "#fff",
- },
- data: zfbaPieList.value,
- },
- ],
- };
-});
-const fwglPieOption = computed(() => {
- return {
- tooltip: {
- trigger: "item",
- },
- series: [
- {
- type: "pie",
- radius: ["40%", "70%"],
- label: {
- color: "#fff",
- },
- data: [
- {value: 4, name: "交警执法"},
- {value: 3, name: "态度生硬"},
- {value: 3, name: "户政业务"},
- {value: 2, name: "监所管理"},
- ],
- },
- ],
- };
-});
const jjjgPieOption = computed(() => {
return {
@@ -407,61 +349,11 @@ const jjjgPieOption = computed(() => {
};
});
-const ajlyPieOption = computed(() => {
- return {
- tooltip: {
- trigger: "item",
- },
- series: [
- {
- type: "pie",
- radius: ["40%", "70%"],
- label: {
- color: "#fff",
- },
- data: [
- {name: "12389", value: 843},
- {name: "网络投诉", value: 711},
- {name: "信件投诉", value: 29},
- {name: "其他投诉", value: 3},
- {name: "值班来电", value: 3},
- ],
- },
- ],
- };
-});
-
-const wzclPieOption = computed(() => {
- return {
- tooltip: {
- trigger: "item",
- },
- series: [
- {
- type: "pie",
- radius: ["40%", "70%"],
- label: {
- color: "#fff",
- },
- data: [
- {name: "通报批评", value: 167},
- {name: "未处置人", value: 54},
- {name: "工作提醒", value: 17},
- {name: "批评教育", value: 9},
- {name: "提醒谈话", value: 21},
- {name: "禁闭", value: 2},
- {name: "责令检查", value: 2},
- {name: "党纪处分", value: 1},
- ],
- },
- ],
- };
-});
echarts.registerMap("changsha", changshaMap);
-const option = {
+const option = ref({
geo: {
// 是上面注册时的名字哦,registerMap('名字保持一致')
map: "changsha",
@@ -470,18 +362,18 @@ const option = {
trigger: 'item',
formatter: function (params) {
console.log(params)
- const dataItem = gobalTempMapVoList.find(item => item.name.includes(params.name.substring(0, 2)));
- if (dataItem) {
+ const dataItem = gobalTempMapVoList.value.find(item => item.name.includes(params.name.substring(0, 2)));
+ if (dataItem ) {
return `
`;
@@ -514,9 +406,9 @@ const option = {
type: "piecewise",
bottom: 10,
pieces: [
- {gte: 85, lte: 100, label: "问题数低于500"},
- {gte: 65, lte: 85, label: "问题数低于1000"},
- {gte: 0, lte: 65, label: "问题数低于1000"},
+ {gte: 0, lte: 65, label: "问题数低于500"},
+ {gte: 65, lte: 85, label: "问题数介于500-1000"},
+ {gte: 85, lte: 100, label: "问题数高于1000"},
],
right: 10, // 右边距
realtime: false,
@@ -526,7 +418,7 @@ const option = {
},
calculable: true,
inRange: {
- color: ["#D34343", "#F6A149", "#4987F6"],
+ color: ["#4987F6","#F6A149", "#D34343" ],
},
},
series: [
@@ -535,7 +427,6 @@ const option = {
type: "map",
map: "changsha",
hoverAnimation: true,
-
label: {
show: true,
color: "white",
@@ -543,11 +434,11 @@ const option = {
itemStyle: {
areaColor: "#02215E", // 这里将地图区域的颜色修改为红色
},
+ data: gobalTempMapVoList.value,
},
],
-};
-
-const option1 = ref({
+});
+const proTrend = ref({
grid: {
left: '5%', // 图表距离容器左边的距离
right: '2%', // 图表距离容器右边的距离
@@ -605,12 +496,73 @@ const option1 = ref({
},
]),
},
- data: [175, 101, 158, 141, 177, 162, 108, 166, 197, 104],
+ data: [],
+ },
+ ],
+});
+
+const ajlyPieOption = ref({
+ series: [
+ {
+ type: "pie",
+ radius: ["40%", "70%"],
+ label: {
+ color: "#fff",
+ },
+ data: [],
+ },
+ ],
+ tooltip: {
+ trigger: "item",
+ },
+});
+const wzclPieOption = ref({
+ series: [
+ {
+ type: "pie",
+ radius: ["40%", "70%"],
+ label: {
+ color: "#fff",
+ },
+ data: [],
+ },
+ ],
+ tooltip: {
+ trigger: "item",
+ },
+});
+const zfbaPieOption = ref({
+ series: [
+ {
+ type: "pie",
+ radius: ["40%", "70%"],
+ label: {
+ color: "#fff",
+ },
+ data: [],
},
],
+ tooltip: {
+ trigger: "item",
+ },
+});
+const fwglPieOption = ref({
+ series: [
+ {
+ type: "pie",
+ radius: ["40%", "70%"],
+ label: {
+ color: "#fff",
+ },
+ data: [],
+ },
+ ],
+ tooltip: {
+ trigger: "item",
+ },
});
-const option4 = {
+const jbcloption = ref({
tooltip: {
trigger: "item",
},
@@ -622,20 +574,44 @@ const option4 = {
color: "#fff",
},
data: [
- {value: 14, name: "工作饮酒"},
- {value: 11, name: "违规办案"},
- {value: 3, name: "涉嫌违纪"},
- {value: 2, name: "违反“三个规定”"},
- {value: 12, name: "违反生活纪律、工作纪律"},
- {value: 8, name: "违规接受管理服务对象宴请"},
- {value: 2, name: "酒后驾车、涉嫌违法"},
- {value: 2, name: "执法乱作为"},
- {value: 3, name: "为落实请示报告制度"},
+ // {value: 14, name: "工作饮酒"},
+ // {value: 11, name: "违规办案"},
+ // {value: 3, name: "涉嫌违纪"},
+ // {value: 2, name: "违反“三个规定”"},
+ // {value: 12, name: "违反生活纪律、工作纪律"},
+ // {value: 8, name: "违规接受管理服务对象宴请"},
+ // {value: 2, name: "酒后驾车、涉嫌违法"},
+ // {value: 2, name: "执法乱作为"},
+ // {value: 3, name: "为落实请示报告制度"},
],
},
],
-};
-
+});
+const tzcloption = ref({
+ tooltip: {
+ trigger: "item",
+ },
+ series: [
+ {
+ type: "pie",
+ radius: ["40%", "70%"],
+ label: {
+ color: "#fff",
+ },
+ data: [
+ // {value: 14, name: "工作饮酒"},
+ // {value: 11, name: "违规办案"},
+ // {value: 3, name: "涉嫌违纪"},
+ // {value: 2, name: "违反“三个规定”"},
+ // {value: 12, name: "违反生活纪律、工作纪律"},
+ // {value: 8, name: "违规接受管理服务对象宴请"},
+ // {value: 2, name: "酒后驾车、涉嫌违法"},
+ // {value: 2, name: "执法乱作为"},
+ // {value: 3, name: "为落实请示报告制度"},
+ ],
+ },
+ ],
+});
const colors = [
{
@@ -651,6 +627,7 @@ const colors = [
percentage: 40,
},
];
+
diff --git a/src/views/datav/Gobal.vue b/src/views/datav/Gobal.vue
index 5495e98..4490c48 100644
--- a/src/views/datav/Gobal.vue
+++ b/src/views/datav/Gobal.vue
@@ -79,6 +79,7 @@
style="height: 360px"
:option="option"
autoresize
+ @click="handleClick"
/>
@@ -145,6 +146,8 @@ import {
} from "@/api/data/basicScreen.ts";
// region 各种变量
+const router = useRouter();
+
const activeOrgTab = ref("1");
const fxsjlist = ref([]); // 分县市区机构问题排名
const jsdwlist = ref([]); // 局属单位机构问题排名
@@ -174,7 +177,7 @@ const gobalTempMapVoList = ref([
"reviewPro": 11
}
]); // 地图临时数据
-const router = useRouter();
+
const currentYear = new Date().getFullYear();
const years = ref([currentYear.toString(), (currentYear - 1).toString(), (currentYear - 2).toString()]); // 年份列表
const selectedYear = ref('2024'); // 当前选中的年份
@@ -232,7 +235,7 @@ const option = ref({
tooltip: {
trigger: 'item',
formatter: function (params) {
- console.log(params);
+ // console.log(params);
const dataItem = gobalTempMapVoList.value.find(item => item.name.includes(params.name.substring(0, 2)));
if (dataItem) {
return `
@@ -478,6 +481,19 @@ const handleCommand = (year) => {
watch(time, () => {
getData();
});
+
+const handleClick = (params) => {
+ const departId = params.data.departId;
+ const { name } = params.data;
+ alert("部门id:"+departId);
+ alert("部门名字:"+name);
+ const url = router.resolve({
+ path: "/datav/sub1",
+ query: { departId: departId },
+ }).href;
+ window.open(url, "_blank");
+}
+
// endregion
diff --git a/src/views/datav/MailVisits.vue b/src/views/datav/MailVisits.vue
index 1cc3022..4a8bf5d 100644
--- a/src/views/datav/MailVisits.vue
+++ b/src/views/datav/MailVisits.vue
@@ -7,7 +7,7 @@
-
+
{{ overview.firstMail }}
@@ -17,7 +17,7 @@
-
+
{{ overview.secondMail }}
@@ -27,6 +27,16 @@
+
+
+
+ {{ overview.secondMail }}
+
+
+ 领导接访数
+
+
+
@@ -55,6 +65,16 @@
/>
+
+
+
+
+
@@ -79,6 +99,16 @@
/>
+
+
+
+
+
@@ -96,6 +126,7 @@
+