From c78fbb33808f2d99b93a9f50581b4a2d43db64c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=AF=E5=B0=8F=E7=8E=8B=E5=91=80=5C24601?= <819653817@qq.com> Date: Mon, 3 Mar 2025 16:52:09 +0800 Subject: [PATCH] =?UTF-8?q?12345=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/smartExcel/cpts/picture-add.vue | 45 +- .../modules/base/smartExcel/sharedSpace.vue | 59 ++- .../modules/shequzhili/analysis/index.vue | 469 +++++++++++++----- .../shequzhili/eventHandling/index.vue | 3 +- 4 files changed, 411 insertions(+), 165 deletions(-) diff --git a/src/views/modules/base/smartExcel/cpts/picture-add.vue b/src/views/modules/base/smartExcel/cpts/picture-add.vue index e2034b0a7..0200b1388 100644 --- a/src/views/modules/base/smartExcel/cpts/picture-add.vue +++ b/src/views/modules/base/smartExcel/cpts/picture-add.vue @@ -6,8 +6,8 @@ - + @@ -18,14 +18,17 @@ - + - - - - - + + + @@ -33,8 +36,7 @@
取 消 - 确 定 + 确 定
@@ -61,6 +63,14 @@ export default { data() { return { + orgOptionProps: { + multiple: true, + value: 'orgId', + label: 'orgName', + children: 'subOrgList', + checkStrictly: true + }, + orgOptions: [], fileList:[], sharingScopeList: [ { @@ -87,7 +97,7 @@ formType:"add", formData: { - + agencyIdArray: [], coverPicture:"", albumName:"", sharedScope:"" @@ -107,6 +117,11 @@ }, methods: { + filter(node, keyword) { + console.log('data111', node, keyword) + return node.data.agencyName.includes(keyword) + + }, async listServerOrg() { const url = "/data/aggregator/org/agencyAllTree"; const { data, code, msg } = await requestPost(url, { @@ -114,7 +129,7 @@ }); if (code === 0) { this.total = data.total || 0; - this.pictureList = data.list + this.orgOptions = data } else { this.$message.error(msg); } @@ -163,7 +178,7 @@ if(!this.formData.coverPicture){ return this.$message.error("请上传封面图片") } - if(!this.formData.sharedScope){ + if(!this.formData.agencyIdArray){ return this.$message.error("请选择共享范围") } this.addActivity() @@ -225,7 +240,7 @@ albumName: [ { required: true, message: '请输入图片集名称', trigger: 'blur' } ], - sharedScope: [ + agencyIdArray: [ { required: true, message: '请选择共享范围', trigger: 'blur' } ], coverPicture: [ diff --git a/src/views/modules/base/smartExcel/sharedSpace.vue b/src/views/modules/base/smartExcel/sharedSpace.vue index 91d248c50..9e7b62cdd 100644 --- a/src/views/modules/base/smartExcel/sharedSpace.vue +++ b/src/views/modules/base/smartExcel/sharedSpace.vue @@ -85,6 +85,7 @@ import exportShared from "./cpts/export-shared.vue" import dataSharing from "./cpts/data-sharing.vue" import pictureCollection from "./cpts/picture-collection.vue" + import * as echarts from "echarts"; export default { components: { exportShared,dataSharing,pictureCollection,shareExcel}, @@ -331,37 +332,53 @@ } - .yellow{ + + .yellow { color: #ddaa5d; } - .blue{ + + .blue { color: #4e89ec; } - .red{ + + .red { color: #fc2b3b; } - .green{ + + .green { color: #2fcbbd; } + .f-align_item { - width: 100px; - padding: 10px; - cursor: pointer; - font-size: 16px; - } + width: 100px; + padding: 10px; + cursor: pointer; + font-size: 16px; + } - .f-align_item.active { - width: 100px; - color: blue; - /* 点击时的文字颜色 */ - font-weight: bold; - border-bottom: 5px solid blue; - /* 点击时的下划线 */ - } + .f-align_item.active { + width: 100px; + color: blue; + /* 点击时的文字颜色 */ + font-weight: bold; + border-bottom: 5px solid blue; + /* 点击时的下划线 */ + } - .f-align_item span { - color: black; - /* 默认文字颜色 */ - } + .f-align_item span { + color: black; + /* 默认文字颜色 */ + } + .chart-container { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + } + + .chart { + width: 100%; + height: 350px; + } \ No newline at end of file diff --git a/src/views/modules/shequzhili/analysis/index.vue b/src/views/modules/shequzhili/analysis/index.vue index ebf155404..a7ec66f9d 100644 --- a/src/views/modules/shequzhili/analysis/index.vue +++ b/src/views/modules/shequzhili/analysis/index.vue @@ -110,40 +110,40 @@
-
{{ analysisList.total}}
-
办结件数 - 描述图标 -
-
{{ analysisList.total}}
-
未办结件数 - 描述图标 -
-
{{ analysisList.total}}
-
按时办结数 - 描述图标 -
-
{{ analysisList.total}}
-
超期办结数 - 描述图标 -
+
{{ analysisList.total}}
+
办结件数 + 描述图标 +
+
{{ analysisList.total}}
+
未办结件数 + 描述图标 +
+
{{ analysisList.total}}
+
按时办结数 + 描述图标 +
+
{{ analysisList.total}}
+
超期办结数 + 描述图标 +
- +
退件/不合规申请件
{{ analysisList.total}}
-
退件数 +
退件数 描述图标
-
{{ analysisList.total}}
+
{{ analysisList.total}}
正常退件数 描述图标 @@ -183,7 +183,7 @@
- +

事件类型统计

@@ -199,136 +199,208 @@ -
-
-

部门科室工单量统计

- - +
+
{{ item.label }}
+
+
+
+
+ + - + - + - + + - - + + + + + + + + + + + + + + + +
- -
-

社区工单量统计

- - + + - + - + - - + + + + + - - + + + + + + + + + + + + +
- - -
-

存在主要问题

-

➤ 同地点同类型事件重复投诉

+
+
+
- - - - - - - - - - - - 查看更多 - -
-

➤ 同一人员重复投诉

- - - - - - - - - - - - 查看更多
-

➤ 同一区域不同类型投诉

+

存在主要问题

- - - - - - - - - - - - 查看更多 - -
-

➤ 同一工单追加内容投诉

+
+
+

➤ 同地点同类型事件重复投诉

+ + + + + + + + + + +
+
+

➤ 同一人员重复投诉

+ + + + + + + + + + + + +
+
+
+
+

➤ 同一区域不同类型投诉

+ + + + + + + + + + + +
+
+

➤ 同一工单追加内容投诉

+ + + + + + + + + + +
- - - - - - - - - - - 查看更多
@@ -393,6 +465,17 @@ export default { components: {TableRow,formList,eventInfo,areaSameList,mobileList,areaNoSameList,addComplainList}, data() { return { + selectedIndex:0, + titleList:[ + { + value:0, + label:'部门科室办件情况' + }, + { + value:1, + label:'社区办件情况' + }, + ], starttime: "", endtime: "", level: 1, @@ -418,7 +501,8 @@ export default { departHotline: "", hotDemand: "", }, - addressData: [], + addressData: [ + ], mobileData: [], addressMobileData: [], addComplainData: [], @@ -723,8 +807,109 @@ export default { this.EventCategoryAnalysis(); this.EventCate(); this.getCategoryTree() + this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); }, methods: { + initChart(url) { + this.$http.get(url).then(({ data: { data } }) => { + const chartDom = this.$refs.chart; + const myChart = echarts.init(chartDom); + const departmentNames = [ + { name: "部门A1", xiangying: "87.43", banjie: "64.22", zuizhong: "54", manyi: "200" }, + { name: "部门A2", xiangying: "45.31", banjie: "85.49", zuizhong: "78", manyi: "180" }, + { name: "部门A3", xiangying: "92.10", banjie: "48.56", zuizhong: "80", manyi: "250" }, + { name: "部门A4", xiangying: "76.32", banjie: "92.78", zuizhong: "85", manyi: "190" }, + { name: "部门A5", xiangying: "54.89", banjie: "77.34", zuizhong: "93", manyi: "210" }, + { name: "部门A6", xiangying: "80.45", banjie: "61.23", zuizhong: "88", manyi: "170" }, + { name: "部门A7", xiangying: "67.21", banjie: "90.12", zuizhong: "95", manyi: "220" }, + { name: "部门A8", xiangying: "48.76", banjie: "85.45", zuizhong: "78", manyi: "160" }, + { name: "部门A9", xiangying: "59.88", banjie: "73.67", zuizhong: "82", manyi: "230" }, + { name: "部门A10", xiangying: "88.34", banjie: "68.4", zuizhong: "89", manyi: "240" }, + { name: "部门A11", xiangying: "71.90", banjie: "80.1", zuizhong: "77", manyi: "195" }, + { name: "部门A12", xiangying: "64.78", banjie: "94.0", zuizhong: "92", manyi: "260" }, + { name: "部门A13", xiangying: "90.12", banjie: "79.3", zuizhong: "85", manyi: "280" }, + { name: "部门A14", xiangying: "53.34", banjie: "88.67", zuizhong: "76", manyi: "275" }, + { name: "部门A15", xiangying: "75.45", banjie: "69.87", zuizhong: "82", manyi: "245" }, + { name: "部门A16", xiangying: "66.78", banjie: "71.45", zuizhong: "79", manyi: "210" }, + { name: "部门A17", xiangying: "82.34", banjie: "95.23", zuizhong: "91", manyi: "265" }, + { name: "部门A18", xiangying: "77.98", banjie: "84.65", zuizhong: "89", manyi: "255" }, + { name: "部门A19", xiangying: "58.67", banjie: "75.34", zuizhong: "81", manyi: "190" }, + { name: "部门A20", xiangying: "63.22", banjie: "72.34", zuizhong: "88", manyi: "285" } + ]; + let xData = departmentNames.map(item => item.name) + let xiangying = departmentNames.map(item => item.xiangying) + console.log(xiangying,"dsfll;dsfj"); + let banjie = departmentNames.map(item => item.banjie) + let zuizhong = departmentNames.map(item => item.zuizhong) + let manyi = departmentNames.map(item => item.manyi) + const option = { + tooltip: { trigger: "axis" }, + legend: { + bottom: -5, + data: ["响应率", "按时办结率", "最终解决率", "最终满意率"], + }, + xAxis: { + type: "category", + data: xData, + }, + yAxis: { + type: "value", + name: "占比(%)", + max: 100, + }, + series: [ + { + name: "响应率", type: "bar", barWidth: 20, data:xiangying, color: "#3B82F6" + }, + { name: "按时办结率", type: "bar", barWidth: 20, data: banjie, color: "#22C55E" }, + { name: "最终解决率", type: "bar", barWidth: 20, data:zuizhong, color: "#FACC15" }, + { name: "最终满意率", type: "bar", barWidth: 20, data:manyi, color: "#FB923C" }, + ], + grid: { left: "3%", right: "4%", bottom: "10%", containLabel: true }, + dataZoom: [ + { + type: "slider", // 滚动条 + realtime:true, + show: true, + start: 0, // 默认显示起点 + end: 50, // 默认显示 50% + // height:normalFontSize(12), + // width:normalFontSize(112), + // xAxisIndex: [0], // 绑定 X 轴 + handleSize: 0, // 隐藏手柄 + backgroundColor: "transparent", // 背景透明 + fillerColor: "transparent", // 选中部分透明 + borderColor: "transparent", // 无边框 + dataBackground: { + lineStyle: { + color: "transparent", // 无边界线 + width: 0 + } + } + }, + { + type: "inside", // 鼠标滚轮控制 + xAxisIndex: [0], + }, + ], + }; + myChart.setOption(option); + window.addEventListener("resize", () => myChart.resize()); + }); + + + }, + randomData() { + return Array(10).fill(0).map(() => Math.floor(Math.random() * 20) + 80); + }, + selectItem(index) { + this.selectedIndex = index; // 选中点击的项 + if(index===0){ + this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); + }else{ + this.initChart("/actual/base/residentIntegrity/resiCategoryStats/byOrg/query4Org"); + } + }, onEventNum(data){ if (data=="resolve") { this.$router.push({ name: 'eventHandling',params:{params:data} }); @@ -750,7 +935,6 @@ export default { }, initEcharts() { - if(this.categoryCountShow){ this.categoryPie= echarts.init(document.getElementById("categoryPie")); this.categoryPie.setOption(this.categoryPieOption); @@ -1405,6 +1589,37 @@ thead { transform: translateY(-50%); } +.f-align_item { + cursor: pointer; + font-size: 16px; + margin-right: 20px; + line-height: 32px; +} + +.f-align_item.active { + line-height: 32px; + color: #427ee0; + /* 点击时的文字颜色 */ + font-weight: bold; + border-bottom: 2px solid #427ee0; + margin-right: 20px + /* 点击时的下划线 */ +} + +.f-align_item span { + color: black; + /* 默认文字颜色 */ +} +.chart-container { + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} +.chart { + width: 100%; + height: 350px; +} \ No newline at end of file diff --git a/src/views/modules/shequzhili/eventHandling/index.vue b/src/views/modules/shequzhili/eventHandling/index.vue index 6c98fc876..cc98f4baa 100644 --- a/src/views/modules/shequzhili/eventHandling/index.vue +++ b/src/views/modules/shequzhili/eventHandling/index.vue @@ -122,7 +122,7 @@ 查看 - 办理 + 办理 退件 @@ -627,7 +627,6 @@ export default { if (this.eventTypeCheck) { this.formData.secondIdList = this.eventTypeCheck } - const { pageSize, pageNo, formData } = this; // 创建新的 formData 对象,保留原始值 const newFormData = { ...formData };