From c8df773aa4741d63a140e69ca0e45b3bb10cb73f Mon Sep 17 00:00:00 2001 From: yzw <2431960323@qq.com> Date: Fri, 2 Dec 2022 14:46:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=8C=E6=88=90=E6=89=80?= =?UTF-8?q?=E6=9C=89=E4=BA=BA=E6=89=8D=E7=9B=98=E7=82=B9=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/person.js | 8 + src/views/person/person_review.vue | 307 +++++++++++++++++++++++++++-- 2 files changed, 299 insertions(+), 16 deletions(-) diff --git a/src/api/person.js b/src/api/person.js index 8114b09..73da75b 100644 --- a/src/api/person.js +++ b/src/api/person.js @@ -32,6 +32,14 @@ export function getReviewEducation(params) { }) } +export function getReviewParty(params) { + return request({ + url: '/person/review/party', + method: 'get', + params + }) +} + export function getReviewPerformance(params) { return request({ url: '/person/review/performance', diff --git a/src/views/person/person_review.vue b/src/views/person/person_review.vue index 29d2441..00ad7ae 100644 --- a/src/views/person/person_review.vue +++ b/src/views/person/person_review.vue @@ -115,14 +115,6 @@ -
-
员工专业统计
-
-
-
-
-
-
员工学校统计
@@ -156,6 +148,63 @@
+ + + + +
+
+

员工党务信息统计

+
+ +
+
员工政治面貌统计
+
+
+
+
+
+

+ 恩施卷烟厂的员工中群众占比最多,达40.21%;其次是中共党员,占比32.09%; +

+
+
+
+ +
+
员工党龄统计
+
+
+
+
+
+

+ 恩施卷烟厂党员员工的党龄大致可分为两簇,一簇党龄区间为1~17,另一簇党龄为19~32。 +

+
+
+
+ +
+
历年优秀党员统计
+
+
+
+
+
+

+ 历年优秀党员评选中,2021年获得优秀党员荣誉的员工最多,达40人。 +

+

从人数变化率来看,也是2021年变化率最大,较2020年提升了近30%。

+
+
+
@@ -455,11 +504,6 @@
- -
-

最后一屏

-

这是最后一屏

-
@@ -491,6 +535,11 @@ export default { workSchoolData: {}, schoolCategory: ["211", "985"], + // 党务 + partyFaceData: [], + partyYearData: {}, + partyExcellentData: {}, + // 绩效 fullYearRange: [0, 0], fullCheckData: null, @@ -631,11 +680,11 @@ export default { "#1bbc9b", "#4BBFC3", "#f3a694", + "#8ba3c7", "#99bcac", "#e5a84b", "#c4c97d", "#94784f", - "#8ba3c7", ], // navigation: true, // navigationTooltips: ["人口", "二", "三", "四"], @@ -671,10 +720,10 @@ export default { // 学位 this.showDegreeBar(); } else if (destination == 3) { - // 专业 - } else if (destination == 4) { // 学校 this.showFullSchoolPie(); + } else if (destination == 4) { + // 专业 } } }, @@ -682,6 +731,7 @@ export default { }); // 初始化echarts + // 人口 let chartDom = document.getElementById("pic_gender"); this.genderChart = echarts.init(chartDom); chartDom = document.getElementById("pic_age"); @@ -692,6 +742,7 @@ export default { this.regionChart = echarts.init(chartDom); chartDom = document.getElementById("pic_region_city"); this.regionCityChart = echarts.init(chartDom); + // 教育 chartDom = document.getElementById("pic_full_edu"); this.fullEduChart = echarts.init(chartDom); chartDom = document.getElementById("pic_work_edu"); @@ -702,6 +753,14 @@ export default { this.fullSchoolChart = echarts.init(chartDom); chartDom = document.getElementById("pic_work_school"); this.workSchoolChart = echarts.init(chartDom); + // 党 + chartDom = document.getElementById("pic_party_face"); + this.partyFaceChart = echarts.init(chartDom); + chartDom = document.getElementById("pic_party_year"); + this.partyYearChart = echarts.init(chartDom); + chartDom = document.getElementById("pic_party_excellent"); + this.partyExcellentChart = echarts.init(chartDom); + // 绩效 chartDom = document.getElementById("pic_full_check"); this.fullCheckChart = echarts.init(chartDom); chartDom = document.getElementById("pic_middle_check"); @@ -710,22 +769,26 @@ export default { this.enshiAdvanceChart = echarts.init(chartDom); chartDom = document.getElementById("pic_center_advance"); this.centerAdvanceChart = echarts.init(chartDom); + // 阵容 chartDom = document.getElementById("pic_work_year"); this.workYearChart = echarts.init(chartDom); chartDom = document.getElementById("pic_professional"); this.pSkillChart = echarts.init(chartDom); chartDom = document.getElementById("pic_vocational"); this.vSkillChart = echarts.init(chartDom); + // 创新 chartDom = document.getElementById("pic_center_innovation"); this.centerInnovationChart = echarts.init(chartDom); chartDom = document.getElementById("pic_enshi_innovation"); this.enshiInnovationChart = echarts.init(chartDom); chartDom = document.getElementById("pic_paper"); this.paperChart = echarts.init(chartDom); + // 活动 chartDom = document.getElementById("pic_person_activity"); this.personActivityChart = echarts.init(chartDom); chartDom = document.getElementById("pic_activity"); this.activityChart = echarts.init(chartDom); + // 事务 chartDom = document.getElementById("pic_person_meeting"); this.personMeetingChart = echarts.init(chartDom); chartDom = document.getElementById("pic_meeting"); @@ -919,6 +982,70 @@ export default { } ); + // 请求党数据 + personApi.getReviewParty().then( + (res) => { + let resData = res.data; + // 处理政治面貌 + let partyFaceData = resData["政治面貌"]; + let tempArr = []; + for (let key in partyFaceData) { + tempArr.push({ name: key, value: partyFaceData[key] }); + } + this.partyFaceData = tempArr; + this.showPartyFaceChart(); + // 处理党龄 + let partyYearData = resData["党龄"]; + let maxAge = 0, + categoryData = [], + valueData = []; + for (let i in partyYearData) { + if (parseInt(i) > maxAge) { + maxAge = i; + } + } + for (let i = 1; i <= maxAge; i++) { + categoryData.push(i); + if (i in partyYearData) { + valueData.push(partyYearData[i]); + } else { + valueData.push(0); + } + } + this.partyYearData = { + category: categoryData, + value: valueData, + }; + this.showPartyYearData(); + // 处理历年优秀 + let partyExcellentData = resData["历年优秀"]; + (categoryData = []), (valueData = []); + let rateData = [], + preValue = 0; + for (let key in partyExcellentData) { + let curValue = partyExcellentData[key]; + let rate = 0.0; + if (preValue != 0) { + rate = ((curValue - preValue) / preValue) * 100; + rate = Number(rate.toFixed(2)); + } + preValue = curValue; + rateData.push(rate); + categoryData.push(key); + valueData.push(curValue); + } + this.partyExcellentData = { + category: categoryData, + value: valueData, + rate: rateData, + }; + this.showPartyExcellentChart(); + }, + (err) => { + console.log("error", err); + } + ); + // 请求绩效数据 personApi.getReviewPerformance().then( (res) => { @@ -2817,6 +2944,154 @@ export default { }; this.projectChart.setOption(option); }, + showPartyFaceChart() { + let option = { + title: { + text: "员工政治面貌分布饼图", + left: "center", + y: "1%", + }, + tooltip: { + trigger: "item", + }, + legend: { + left: "center", + y: "10%", + }, + series: [ + { + name: "政治面貌", + type: "pie", + radius: "50%", + data: this.partyFaceData, + emphasis: { + itemStyle: { + shadowBlur: 10, + shadowOffsetX: 0, + shadowColor: "rgba(0, 0, 0, 0.5)", + }, + }, + }, + ], + }; + option && this.partyFaceChart.setOption(option); + }, + showPartyYearData() { + let option = { + title: { + text: "员工党龄分布条状图", + left: "center", + y: "1%", + }, + tooltip: { + trigger: "axis", + axisPointer: { + type: "shadow", + }, + }, + // legend: {}, + grid: { + left: "3%", + right: "8%", + bottom: "3%", + containLabel: true, + }, + xAxis: { + type: "value", + name: "人数", + }, + yAxis: { + type: "category", + name: "入党年岁", + data: this.partyYearData["category"], + }, + series: [ + { + name: "人数", + type: "bar", + data: this.partyYearData["value"], + }, + ], + }; + this.partyYearChart.setOption(option); + }, + showPartyExcellentChart() { + let option = { + title: {}, + tooltip: { + trigger: "axis", + axisPointer: { + type: "cross", + crossStyle: { + color: "#999", + }, + }, + }, + legend: {}, + xAxis: [ + { + type: "category", + data: this.partyExcellentData["category"], + axisPointer: { + type: "shadow", + }, + }, + ], + yAxis: [ + { + type: "value", + name: "优秀人数", + axisLabel: { + formatter: "{value} 人", + }, + }, + { + type: "value", + name: "变化率", + axisLabel: { + formatter: "{value} %", + }, + }, + ], + dataZoom: [ + { + show: true, + start: 0, + end: 100, + }, + { + type: "inside", + start: 0, + end: 100, + }, + ], + series: [ + { + name: "历年优秀", + type: "bar", + tooltip: { + valueFormatter: function (value) { + return value + " 人"; + }, + }, + data: this.partyExcellentData["value"], + }, + { + name: "变化率", + type: "line", + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value + " %"; + }, + }, + data: this.partyExcellentData["rate"], + }, + ], + }; + + this.partyExcellentChart.setOption(option); + }, }, };