From f6d5385ef6a6158cee8277d6680a817d8c53aee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=88=98=E7=AB=8B=E6=A0=87?= <2658037827@qq.com> Date: Mon, 27 Nov 2023 09:03:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/home/homeTop2.png | Bin 0 -> 2087 bytes src/assets/images/renfang/map-right-cur.png | Bin 0 -> 4226 bytes src/assets/images/renfang/map-right-open.png | Bin 0 -> 3967 bytes src/assets/images/renfang/map-right-title.png | Bin 0 -> 3386 bytes src/assets/scss/dataBoard/table-border.scss | 66 ++++ .../dataBoard/cpts/homeDetails/index.vue | 41 ++- .../dataBoard/renfang/cpts/map-right.vue | 100 +++++ src/views/dataBoard/renfang/index.vue | 41 ++- .../visualizing/components/dangyuan.vue | 138 ++++++- .../visualizing/components/dibaorenyuan.vue | 146 ++++++++ .../visualizing/components/laonianren.vue | 137 +++++++ .../visualizing/components/shiyerenyuan.vue | 156 +++++++- .../visualizing/components/teshurenqun.vue | 331 +++++++++++++++++ .../visualizing/components/zhiyuanzhe.vue | 136 +++++++ .../dataBoard/renfang/visualizing/index.vue | 3 + .../components/Title/titleSmall.vue | 2 +- .../dataBoard/satisfactionEval/index.vue | 10 +- .../modules/SelfInspectionScore/index.vue | 26 ++ .../modules/TypesOfDissatisfaction/index.vue | 10 +- .../modules/eventAnalysis/index.vue | 348 ++++++++++++++++-- 20 files changed, 1619 insertions(+), 72 deletions(-) create mode 100644 src/assets/images/home/homeTop2.png create mode 100644 src/assets/images/renfang/map-right-cur.png create mode 100644 src/assets/images/renfang/map-right-open.png create mode 100644 src/assets/images/renfang/map-right-title.png create mode 100644 src/assets/scss/dataBoard/table-border.scss create mode 100644 src/views/dataBoard/renfang/cpts/map-right.vue create mode 100644 src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue create mode 100644 src/views/dataBoard/satisfactionEval/modules/SelfInspectionScore/index.vue diff --git a/src/assets/images/home/homeTop2.png b/src/assets/images/home/homeTop2.png new file mode 100644 index 0000000000000000000000000000000000000000..4e07421f3d5948d4e0882f9b138b6cd89815117d GIT binary patch literal 2087 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 BtX2R3 literal 0 HcmV?d00001 diff --git a/src/assets/images/renfang/map-right-cur.png b/src/assets/images/renfang/map-right-cur.png new file mode 100644 index 0000000000000000000000000000000000000000..e42cb473c8be91ba7740dccca5fd20a76dac3b99 GIT binary patch literal 4226 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 YpF}{Y?v@J`v;Y7A07*qoM6N<$g3A~ytN;K2 literal 0 HcmV?d00001 diff --git a/src/assets/images/renfang/map-right-open.png b/src/assets/images/renfang/map-right-open.png new file mode 100644 index 0000000000000000000000000000000000000000..1f150dc74cbbef5b63ade6751bf90ba14fc89b35 GIT binary patch literal 3967 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 Qp8x;=07*qoM6N<$f(`m|EdT%j literal 0 HcmV?d00001 diff --git a/src/assets/scss/dataBoard/table-border.scss b/src/assets/scss/dataBoard/table-border.scss new file mode 100644 index 000000000..5daedbab0 --- /dev/null +++ b/src/assets/scss/dataBoard/table-border.scss @@ -0,0 +1,66 @@ +.table { + + /deep/ .el-table { + border: 1px solid #225087 !important; + } + /deep/ .el-table td, + /deep/ .el-table tr { + padding: 10px 0px !important; + border: 1px solid #225087 !important; + + } + + /deep/ .el-table th>.cell { + padding: 0!important; + } + /deep/ .el-table th { + padding: 6px 14px !important; + border: 1px solid #225087 !important; + background: #0E3873; + } + + /deep/ .el-table td, + /deep/ .el-table th { + background: none !important; + } + + /deep/ .el-table td { + font-size: 14px; + font-weight: 400; + color: #FFFFFF; + text-shadow: 1px 2px 4px rgba(10, 32, 60, 0.51); + } + + /deep/ .el-table tr { + background: none !important; + background-size: 100% !important; + + + &:hover { + background-color: rgba(26, 149, 255, 0.3) !important; + } + } + + /deep/ .el-table { + background: none !important; + + &:before { + background: none !important; + } + } + + /deep/ .el-table__header-wrapper tr { + color: #A3B9DA !important; + font-size: 14px; + font-weight: 400; + opacity: 0.76; + + &:hover { + background: none !important; + } + } + + /deep/ .el-table__header-wrapper { + background: none; + } +} \ No newline at end of file diff --git a/src/views/dataBoard/cpts/homeDetails/index.vue b/src/views/dataBoard/cpts/homeDetails/index.vue index d4d93f9ef..4abb65376 100644 --- a/src/views/dataBoard/cpts/homeDetails/index.vue +++ b/src/views/dataBoard/cpts/homeDetails/index.vue @@ -52,9 +52,9 @@
- / + /
-
+
-
+
- / + /
-
+
-
+
+
+
+
+ +
+
+
+
@@ -48,6 +55,7 @@ export default { return { dyLeft: [], dyRight: [], + dyService: [], }; }, created() { @@ -77,6 +85,16 @@ export default { this.initRightCharts(); }) .catch(() => {}); + this.$http + .get("/actual/base/peopleRoomOverview/partyPie?type=2") + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } + this.dyService = dataFormatter(res.data); + this.initServiceCharts(); + }) + .catch(() => {}); }, initLeftCharts() { let div = document.getElementById("dyLeftChart"); @@ -275,7 +293,7 @@ export default { { type: "pie", radius: - this.dyRight && this.dyRight.length > 0 ? [30, 130] : [0, 0], + this.dyRight && this.dyRight.length > 0 ? [30, 130] : [0, 0], center: ["50%", "50%"], roseType: "area", itemStyle: { @@ -311,6 +329,124 @@ export default { this.myChart2.setOption(option); window.addEventListener("resize", () => this.myChart2.resize()); }, + + initServiceCharts() { + let div = document.getElementById("dyServiceChart"); + this.myChart3 = echarts.init(div); + const option = { + color: [ + "#15a7ed", + "#22b998", + "#5f6ff4", + "#a66eeb", + "#faa834", + "#fd6200", + "#fb3905", + ], + legend: { + orient: "vertical", + top: 20, + left: 10, + icon: "rect", + itemHeight: 14, + itemWidth: 14, + textStyle: { + color: "#ffffff", + rich: { + name: { + width: 80, + fontSize: 12, + color: "#dddee7", + }, + value: { + width: 30, + align: "right", + fontSize: 18, + }, + }, + }, + data: this.dyService, + formatter: (name) => { + if (this.dyService.length) { + const item = this.dyService.filter((item) => item.name === name)[0]; + return `{name|${name}}{value| ${item.value}}`; + } + }, + }, + toolbox: { + show: false, + feature: { + mark: { show: true }, + dataView: { show: true, readOnly: false }, + restore: { show: true }, + saveAsImage: { show: true }, + }, + }, + title: { + show: !this.dyService || this.dyService.length == 0, // 是否要展示“暂无数据”矢量图 + text: " {a|}", // 写入占位符a,以便后续填充内容 + x: "center", + y: "center", + subtext: "暂无数据", // 子标题 + itemGap: -10, // 设置主副标题间隔 + textStyle: { + rich: { + a: { + height: 128, // 设置图片高度 + width: 268, // 设置图片宽度 + backgroundColor: { + // 引入图片,作为背景图,填写相对路径 + image: require("@/assets/images/overview/zanwu.png"), + }, + }, + }, + }, + subtextStyle: { + // 配置副标题的文字样式 + fontSize: 12, + color: "#ffffff", + }, + }, + series: [ + { + type: "pie", + radius: + this.dyService && this.dyService.length > 0 ? [30, 130] : [0, 0], + center: ["50%", "50%"], + roseType: "area", + itemStyle: { + borderRadius: 0, + }, + top: 20, + left: -40, + label: { + position: "inside", + formatter: "{d}%", + textStyle: { + color: "#ffffff", + fontSize: 12, + }, + }, + data: this.dyService, + }, + ], + }; + this.myChart3.on("click", (e) => { + this.$router.push({ + path: "/dataBoard/renfang/resi-class-new", + query: { + org_id: this.org_id, + type_id: "aged", + type_name: "党员", + pageType: "normal", + type: "dangyuan", + cultureLevel: e.data.name, + }, + }); + }); + this.myChart3.setOption(option); + window.addEventListener("resize", () => this.myChart3.resize()); + }, }, }; diff --git a/src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue b/src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue index 8e14787db..c07a42898 100644 --- a/src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue +++ b/src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue @@ -27,6 +27,12 @@
+
+
+ +
+
+
@@ -64,6 +70,7 @@ export default { dbryData2: [], dbryData3: [], dbryData4: [], + dbryData5: [], }; }, created() { @@ -111,6 +118,16 @@ export default { this.dbryDataCharts4(); }) .catch(() => {}); + this.$http + .get("/actual/base/peopleRoomOverview/lowIncomePie?type=4") + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } + this.dbryData5 = dataFormatter(res.data); + this.dbryDataCharts5(); + }) + .catch(() => {}); }, dbryDataCharts1() { let div = document.getElementById("dbryChart1"); @@ -629,6 +646,135 @@ export default { }); window.addEventListener("resize", () => this.myChart4.resize()); }, + dbryDataCharts5() { + let div = document.getElementById("dbryChart5"); + this.myChart5 = echarts.init(div); + const option = { + color: [ + "#15a7ed", + "#22b998", + "#5f6ff4", + "#a66eeb", + "#faa834", + "#fd6200", + "#fb3905", + ], + tooltip: { + show: true, + }, + legend: { + type: "scroll", + orient: "vertical", + top: 20, + left: 10, + icon: "rect", + itemHeight: 14, + itemWidth: 14, + textStyle: { + color: "#ffffff", + rich: { + name: { + width: 90, + fontSize: 12, + color: "#dddee7", + }, + value: { + width: 30, + align: "right", + fontSize: 18, + }, + }, + }, + data: this.dbryData5, + tooltip: { + show: true, + }, + formatter: (name) => { + if (this.dbryData5.length) { + const item = this.dbryData5.filter( + (item) => item.name === name + )[0]; + return `{name|${echarts.format.truncateText( + name, + 100, + "14px Microsoft Yahei", + "…" + )}}{value| ${item.value}}`; + } + }, + }, + toolbox: { + show: false, + feature: { + mark: { show: true }, + dataView: { show: true, readOnly: false }, + restore: { show: true }, + saveAsImage: { show: true }, + }, + }, + title: { + show: !this.dbryData5 || this.dbryData5.length == 0, // 是否要展示“暂无数据”矢量图 + text: " {a|}", // 写入占位符a,以便后续填充内容 + x: "center", + y: "center", + subtext: "暂无数据", // 子标题 + itemGap: -10, // 设置主副标题间隔 + textStyle: { + rich: { + a: { + height: 126, // 设置图片高度 + width: 268, // 设置图片宽度 + backgroundColor: { + // 引入图片,作为背景图,填写相对路径 + image: require("@/assets/images/overview/zanwu.png"), + }, + }, + }, + }, + subtextStyle: { + // 配置副标题的文字样式 + fontSize: 12, + color: "#ffffff", + }, + }, + series: [ + { + type: "pie", + radius: this.dbryData5 && this.dbryData5.length > 0?[30, 130]:[0,0], + center: ["50%", "50%"], + roseType: "area", + itemStyle: { + borderRadius: 0, + }, + top: 20, + left: -40, + label: { + position: "inside", + formatter: "{d}%", + textStyle: { + color: "#ffffff", + fontSize: 12, + }, + }, + data: this.dbryData5, + }, + ], + }; + this.myChart5.setOption(option); + this.myChart5.on("click", (a, b) => { + this.$router.push({ + path: "/dataBoard/renfang/resi-class-new", + query: { + org_id: this.org_id, + type_id: "mlsp", + type_name: "服务找人", + pageType: "normal1", + type: "fuwu", + }, + }); + }); + window.addEventListener("resize", () => this.myChart5.resize()); + }, }, }; diff --git a/src/views/dataBoard/renfang/visualizing/components/laonianren.vue b/src/views/dataBoard/renfang/visualizing/components/laonianren.vue index 98902ac35..2139a48f5 100644 --- a/src/views/dataBoard/renfang/visualizing/components/laonianren.vue +++ b/src/views/dataBoard/renfang/visualizing/components/laonianren.vue @@ -13,6 +13,12 @@
+
+
+ +
+
+
@@ -48,6 +54,7 @@ export default { return { lnrLeft: [], lnrRight: [], + lnrService: [], }; }, created() { @@ -77,6 +84,16 @@ export default { this.initRightCharts(); }) .catch(() => {}); + this.$http + .get("") + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } + this.lnrService = dataFormatter(res.data); + this.initServiceCharts(); + }) + .catch(() => {}); }, initLeftCharts() { let div = document.getElementById("lnrLeftChart"); @@ -315,6 +332,126 @@ export default { this.myChart2.setOption(option); window.addEventListener("resize", () => this.myChart2.resize()); }, + initServiceCharts() { + let div = document.getElementById("lnrServiceChart"); + this.myChart3 = echarts.init(div); + const option = { + color: [ + "#15a7ed", + "#22b998", + "#5f6ff4", + "#a66eeb", + "#faa834", + "#fd6200", + "#fb3905", + ], + legend: { + orient: "vertical", + top: 20, + left: 10, + icon: "rect", + itemHeight: 14, + itemWidth: 14, + textStyle: { + color: "#ffffff", + rich: { + name: { + width: 80, + fontSize: 12, + color: "#dddee7", + }, + value: { + width: 30, + align: "right", + fontSize: 18, + }, + }, + }, + data: this.lnrService, + formatter: (name) => { + if (this.lnrService.length) { + const item = this.lnrService.filter( + (item) => item.name === name + )[0]; + return `{name|${name}}{value| ${item.value}}`; + } + }, + }, + title: { + show: !this.lnrService || this.lnrService.length == 0, // 是否要展示“暂无数据”矢量图 + text: " {a|}", // 写入占位符a,以便后续填充内容 + x: "center", + y: "center", + subtext: "暂无数据", // 子标题 + itemGap: -10, // 设置主副标题间隔 + textStyle: { + rich: { + a: { + height: 128, // 设置图片高度 + width: 268, // 设置图片宽度 + backgroundColor: { + // 引入图片,作为背景图,填写相对路径 + image: require("@/assets/images/overview/zanwu.png"), + }, + }, + }, + }, + subtextStyle: { + // 配置副标题的文字样式 + fontSize: 12, + color: "#ffffff", + }, + }, + toolbox: { + show: false, + feature: { + mark: { show: true }, + dataView: { show: true, readOnly: false }, + restore: { show: true }, + saveAsImage: { show: true }, + }, + }, + series: [ + { + type: "pie", + radius: + this.lnrService && this.lnrService.length > 0 ? [30, 130] : [0, 0], + center: ["50%", "50%"], + roseType: "area", + itemStyle: { + borderRadius: 0, + }, + top: 20, + left: -40, + label: { + position: "inside", + formatter: "{d}%", + textStyle: { + color: "#ffffff", + fontSize: 12, + }, + }, + data: this.lnrService, + }, + ], + }; + this.myChart3.on("click", (e) => { + console.log('a, b::', e); + this.$router.push({ + path: "/dataBoard/renfang/resi-class-new", + query: { + org_id: this.org_id, + type_id: "aged", + type_name: "老年人", + pageType: "normal", + type: "old", + qingk: e.data.name, + }, + }); + }); + this.myChart3.setOption(option); + window.addEventListener("resize", () => this.myChart3.resize()); + }, }, }; diff --git a/src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue b/src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue index d6633a692..433055d44 100644 --- a/src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue +++ b/src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue @@ -20,19 +20,26 @@
-
-
+
+
-
+
+ +
+
+ +
+
+
@@ -71,6 +78,7 @@ export default { syryData3: [], syryData4: [], syryData5: [], + syryData6: [], }; }, created() { @@ -129,6 +137,16 @@ export default { this.syryDataCharts5(); }) .catch(() => {}); + this.$http + .get("/actual/base/peopleRoomOverview/unemployedPie?type=5") + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } + this.syryData6 = dataFormatter(res.data); + this.syryDataCharts6(); + }) + .catch(() => {}); }, syryDataCharts1() { let div = document.getElementById("syryChart1"); @@ -782,6 +800,138 @@ export default { }); window.addEventListener("resize", () => this.myChart5.resize()); }, + + syryDataCharts6() { + let div = document.getElementById("syryChart6"); + this.myChart6 = echarts.init(div); + const option = { + color: [ + "#15a7ed", + "#22b998", + "#5f6ff4", + "#a66eeb", + "#faa834", + "#fd6200", + "#fb3905", + ], + tooltip: { + show: true, + }, + legend: { + orient: "vertical", + top: 20, + left: 10, + icon: "rect", + itemHeight: 14, + itemWidth: 14, + tooltip: { + show: true, + }, + formatter: (name) => { + if (this.syryData6.length) { + const item = this.syryData6.filter( + (item) => item.name === name + )[0]; + return `{name|${echarts.format.truncateText( + name, + 100, + "14px Microsoft Yahei", + "…" + )}}{value| ${item.value}}`; + } + }, + textStyle: { + color: "#ffffff", + rich: { + name: { + width: 90, + fontSize: 12, + color: "#dddee7", + }, + value: { + width: 60, + align: "right", + fontSize: 18, + }, + }, + }, + data: this.syryData6, + }, + toolbox: { + show: false, + feature: { + mark: { show: true }, + dataView: { show: true, readOnly: false }, + restore: { show: true }, + saveAsImage: { show: true }, + }, + }, + title: { + show: !this.syryData6 || this.syryData6.length == 0, // 是否要展示“暂无数据”矢量图 + text: " {a|}", // 写入占位符a,以便后续填充内容 + x: "center", + y: "center", + subtext: "暂无数据", // 子标题 + itemGap: -10, // 设置主副标题间隔 + textStyle: { + rich: { + a: { + height: 128, // 设置图片高度 + width: 268, // 设置图片宽度 + backgroundColor: { + // 引入图片,作为背景图,填写相对路径 + image: require("@/assets/images/overview/zanwu.png"), + }, + }, + }, + }, + subtextStyle: { + // 配置副标题的文字样式 + fontSize: 12, + color: "#ffffff", + }, + }, + series: [ + { + type: "pie", + radius: + this.syryData6 && this.syryData6.length > 0 ? [30, 130] : [0, 0], + center: ["50%", "50%"], + roseType: "area", + itemStyle: { + borderRadius: 0, + }, + top: -20, + left: 10, + label: { + position: "inside", + formatter: "{d}%", + textStyle: { + color: "#ffffff", + fontSize: 12, + }, + }, + data: this.syryData6, + }, + ], + }; + this.myChart6.setOption(option); + this.myChart6.on("click", (e) => { + this.$router.push({ + path: "/dataBoard/renfang/resi-class-new", + query: { + org_id: this.org_id, + type_id: "aged", + type_name: "失业人员", + pageType: "normal", + type: "shiye", + unemploymentReason: e.name, + }, + }); + }); + window.addEventListener("resize", () => this.myChart6.resize()); + }, + }, }; diff --git a/src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue b/src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue new file mode 100644 index 000000000..83492978c --- /dev/null +++ b/src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue @@ -0,0 +1,331 @@ + + + + + + diff --git a/src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue b/src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue index 57b8de1fb..9b495b9e7 100644 --- a/src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue +++ b/src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue @@ -13,6 +13,12 @@
+
+
+ +
+
+
@@ -48,6 +54,7 @@ export default { return { zyzLeft: [], zyzRight: [], + zyzService: [], }; }, created() { @@ -77,6 +84,16 @@ export default { this.initRightCharts(); }) .catch(() => {}); + this.$http + .get("/actual/base/peopleRoomOverview/volunteerPie?type=3") + .then(({ data: res }) => { + if (res.code !== 0) { + return this.$message.error(res.msg); + } + this.zyzRight = dataFormatter(res.data); + this.initServiceCharts(); + }) + .catch(() => {}); }, initLeftCharts() { let div = document.getElementById("zyzLeftChart"); @@ -314,6 +331,125 @@ export default { this.myChart2.setOption(option); window.addEventListener("resize", () => this.myChart2.resize()); }, + initServiceCharts() { + let div = document.getElementById("zyzServiceChart"); + this.myChart2 = echarts.init(div); + const option = { + color: [ + "#15a7ed", + "#22b998", + "#5f6ff4", + "#a66eeb", + "#faa834", + "#fd6200", + "#fb3905", + ], + legend: { + orient: "vertical", + top: 20, + left: 10, + icon: "rect", + itemHeight: 14, + itemWidth: 14, + textStyle: { + color: "#ffffff", + rich: { + name: { + width: 80, + fontSize: 12, + color: "#dddee7", + }, + value: { + width: 30, + align: "right", + fontSize: 18, + }, + }, + }, + data: this.zyzService, + formatter: (name) => { + if (this.zyzService.length) { + const item = this.zyzService.filter( + (item) => item.name === name + )[0]; + return `{name|${name}}{value| ${item.value}}`; + } + }, + }, + toolbox: { + show: false, + feature: { + mark: { show: true }, + dataView: { show: true, readOnly: false }, + restore: { show: true }, + saveAsImage: { show: true }, + }, + }, + title: { + show: !this.zyzService || this.zyzService.length == 0, // 是否要展示“暂无数据”矢量图 + text: " {a|}", // 写入占位符a,以便后续填充内容 + x: "center", + y: "center", + subtext: "暂无数据", // 子标题 + itemGap: -10, // 设置主副标题间隔 + textStyle: { + rich: { + a: { + height: 128, // 设置图片高度 + width: 268, // 设置图片宽度 + backgroundColor: { + // 引入图片,作为背景图,填写相对路径 + image: require("@/assets/images/overview/zanwu.png"), + }, + }, + }, + }, + subtextStyle: { + // 配置副标题的文字样式 + fontSize: 12, + color: "#ffffff", + }, + }, + series: [ + { + type: "pie", + radius: + this.zyzService && this.zyzService.length > 0 ? [30, 130] : [0, 0], + center: ["50%", "50%"], + roseType: "area", + itemStyle: { + borderRadius: 0, + }, + top: 20, + left: -40, + label: { + position: "inside", + formatter: "{d}%", + textStyle: { + color: "#ffffff", + fontSize: 12, + }, + }, + data: this.zyzService, + }, + ], + }; + this.myChart2.on("click", (e) => { + this.$router.push({ + path: "/dataBoard/renfang/resi-class-new", + query: { + org_id: this.org_id, + type_id: "aged", + type_name: "志愿者", + pageType: "normal", + type: "zhiyuanzhe", + gategoryCode: e.data.name, + }, + }); + }); + this.myChart2.setOption(option); + window.addEventListener("resize", () => this.myChart2.resize()); + }, }, }; diff --git a/src/views/dataBoard/renfang/visualizing/index.vue b/src/views/dataBoard/renfang/visualizing/index.vue index c38753359..e1f335de7 100644 --- a/src/views/dataBoard/renfang/visualizing/index.vue +++ b/src/views/dataBoard/renfang/visualizing/index.vue @@ -10,6 +10,7 @@ + @@ -20,6 +21,7 @@ import dibaorenyuan from "./components/dibaorenyuan.vue"; import zhiyuanzhe from "./components/zhiyuanzhe.vue"; import dangyuan from "./components/dangyuan.vue"; import shiyerenyuan from "./components/shiyerenyuan.vue"; +import teshurenqun from "./components/teshurenqun.vue"; export default { name: "visualizing", props: { @@ -35,6 +37,7 @@ export default { zhiyuanzhe, dangyuan, shiyerenyuan, + teshurenqun }, data() { return { diff --git a/src/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue b/src/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue index a99a4c106..aceea3d7b 100644 --- a/src/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue +++ b/src/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue @@ -32,7 +32,7 @@ height: 40px; background: url(../../../../../assets/images/shuju/overview/title-small-bg.png) no-repeat; background-size: 100% 100%; - padding: 8px 16px 8px 29px; + padding: 8px 16px 8px 36px; display: flex; align-items: center; justify-content: space-between; diff --git a/src/views/dataBoard/satisfactionEval/index.vue b/src/views/dataBoard/satisfactionEval/index.vue index 5c879fbf6..ce59ad997 100644 --- a/src/views/dataBoard/satisfactionEval/index.vue +++ b/src/views/dataBoard/satisfactionEval/index.vue @@ -18,9 +18,11 @@
- + <Title text="不满意人数统计及自查得分" /> + <SelfInspectionScore/> +<!-- <Title text="下级组织不满意事项统计" /> <EventStatistics :date="typeDate" /> - </div> + --></div> </el-col> <el-col :span="8"> <div class="bgImg"> @@ -47,6 +49,7 @@ import EventStatistics from "@/views/dataBoard/satisfactionEval/modules/EventSta import PersonnelPortrait from "@/views/dataBoard/satisfactionEval/modules/PersonnelPortrait"; import PotentialPeople from "@/views/dataBoard/satisfactionEval/modules/PotentialPeople"; import eventAnalysis from "@/views/dataBoard/satisfactionEval/modules/eventAnalysis"; +import SelfInspectionScore from "@/views/dataBoard/satisfactionEval/modules/SelfInspectionScore"; export default { @@ -60,7 +63,8 @@ export default { Title, PersonnelPortrait, PotentialPeople, - eventAnalysis + eventAnalysis, + SelfInspectionScore }, data() { return { diff --git a/src/views/dataBoard/satisfactionEval/modules/SelfInspectionScore/index.vue b/src/views/dataBoard/satisfactionEval/modules/SelfInspectionScore/index.vue new file mode 100644 index 000000000..17d71d7dc --- /dev/null +++ b/src/views/dataBoard/satisfactionEval/modules/SelfInspectionScore/index.vue @@ -0,0 +1,26 @@ +<template> + <div class="table"> + <el-table :data="data" height="400px"> + <el-table-column align="center" label="序号" prop="number" width="80"></el-table-column> + <el-table-column label="12345热线投诉\n人数" prop="column1"></el-table-column> + <el-table-column label="上级满意度调查\n不满意人数" prop="column2"></el-table-column> + <el-table-column label="社区自查不满意\n人数" prop="column3" width="120"></el-table-column> + <el-table-column label="社区自查得分" prop="column3" width="120"></el-table-column> + </el-table> + </div> +</template> + +<script> +export default { + name: "index", + data() { + return { + data: [] + } + } +} +</script> + +<style scoped lang="scss"> +@import "@/assets/scss/dataBoard/table-border.scss"; +</style> \ No newline at end of file diff --git a/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue b/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue index 8a3efa0f5..68c805df3 100644 --- a/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue @@ -6,7 +6,7 @@ <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> - <div id="typeConditionChart" style="height: 193px"></div> + <div id="typeConditionChart" style="height: 210px"></div> </div> </template> @@ -22,7 +22,7 @@ export default { resultType: 1, resultTypeList: [ { - label: " 按省调查/社区自查结果", + label: " 按满意度调查/社区自查结果", value: 1, }, { @@ -152,10 +152,10 @@ export default { }, }); } - let legendName = ["省满意度调查各项不满意人数", "社区满意度自查各项不满意人数"]; + let legendName = ["省满意度调查", "社区满意度自查"]; let series = [ { - name: this.resultType === 2 ? "12345热线事件上报人数" : "省满意度调查各项不满意人数", + name: this.resultType === 2 ? "12345热线事件上报人数" : "省满意度调查", type: "radar", symbol: "circle", symbolSize: 7, @@ -182,7 +182,7 @@ export default { legendName = ["12345热线事件上报人数"]; } else { series.push({ - name: "社区满意度自查各项不满意人数", + name: "社区满意度自查", type: "radar", symbol: "circle", symbolSize: 7, diff --git a/src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue b/src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue index 24b971539..6fc3b81db 100644 --- a/src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue +++ b/src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue @@ -1,30 +1,128 @@ - <template> - <div class='' style="padding: 0 10px;"> + <div style="padding: 20px 10px;"> <title-small text="同地点同类型事件重复投诉问题"> - <template v-slot:time> - <el-select v-model="typeCondition" popper-class="selectPopClass" placeholder="请选择" class="select" @change="timeChange"> - <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" :value="item.value"> </el-option> - </el-select> - </template> - <template v-slot:info> + <template v-slot:time> + <el-select v-model="typeCondition" class="select" placeholder="请选择" popper-class="selectPopClass" + @change="timeChange"> + <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" + :value="item.value"></el-option> + </el-select> + </template> + <template v-slot:info> + <span class="infoColor">更多></span> + </template> + </title-small> + <div class="t-list f-hflex"> + <div class="item f-flex header"> + <div>序号</div> + <div>地点</div> + <div>类型</div> + <div>投诉次数</div> + </div> + <div + v-for="(item, index) in list" + :key="index" + :class="['item', 'f-flex']" + > + <div>{{ index - 0 + 1 }}</div> + <div>{{ item.location }}</div> + <div>{{ item.type }}</div> + <div>{{ item.count }}</div> + </div> + </div> + + <title-small text="同一人员重复投诉问题"> + <template v-slot:time> + <el-select v-model="typeCondition" class="select" placeholder="请选择" popper-class="selectPopClass" + @change="timeChange"> + <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" + :value="item.value"></el-option> + </el-select> + </template> + <template v-slot:info> <span class="infoColor">更多></span> - </template> + </template> </title-small> + <div class="t-list f-hflex"> + <div class="item f-flex header"> + <div>序号</div> + <div>联系方式</div> + <div>投诉次数</div> + </div> + <div + v-for="(item, index) in list" + :key="index" + class="item f-flex bto-border" + > + <div>{{ index - 0 + 1 }}</div> + <div>{{ item.tel }}</div> + <div>{{ item.count }}</div> + </div> + </div> - </div> + <title-small text="同一区域不同类型投诉问题"> + <template v-slot:time> + <el-select v-model="typeCondition" class="select" placeholder="请选择" popper-class="selectPopClass" + @change="timeChange"> + <el-option v-for="item in typeConditionList" :key="item.value" :label="item.label" + :value="item.value"></el-option> + </el-select> + </template> + <template v-slot:info> + <span class="infoColor">更多></span> + </template> + </title-small> + <div class="table"> + <el-table :data="data" :span-method="objectSpanMethod"> + <el-table-column align="center" label="序号" prop="number" width="80"></el-table-column> + <el-table-column label="地点" prop="column1"></el-table-column> + <el-table-column label="类型" prop="column2"></el-table-column> + <el-table-column label="投诉次数" prop="column3" width="120"></el-table-column> + </el-table> + </div> + </div> </template> <script> import titleSmall from "@/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue"; export default { - data() { - return { - typeCondition:'', - startTime:'', - endTime:'', - typeConditionList: [ + components: { + titleSmall + }, + data() { + return { + typeCondition: '', + startTime: '', + endTime: '', + list: [ + { + location: '市北区清江路139号门口道路···', + type: '城市综合-交通运输', + count: 5, + tel: '173*****327' + }, { + location: '市北区清江路139号门口道路···', + type: '城市综合-交通运输', + count: 5, + tel: '173*****327' + }, { + location: '市北区清江路139号门口道路···', + type: '城市综合-交通运输', + count: 5, + tel: '173*****327' + }, { + location: '市北区清江路139号门口道路···', + type: '城市综合-交通运输', + count: 5, + tel: '173*****327' + }, { + location: '市北区清江路139号门口道路···', + type: '城市综合-交通运输', + count: 5, + tel: '173*****327' + },], + typeConditionList: [ { label: "本月", value: 1, @@ -46,13 +144,72 @@ export default { value: 5, }, ], - }; - }, - created() {}, - methods: { + data: [ + {number: 1, column1: '市北区清江路100号', column2: '10', column3: '100'}, + {number: 2, column1: '市北区清江路100号', column2: '10', column3: '100'}, + {number: 3, column1: '市北区清江路100号', column2: '10', column3: '100'}, + {number: 4, column1: '市北区清江路**号', column2: '10', column3: '100'}, + {number: 5, column1: '市北区清江路**号', column2: '10', column3: '100'}, + {number: 6, column1: '市北区清江路**号', column2: '10', column3: '100'}, + {number: 7, column1: '市北区清江路**号', column2: '10', column3: '100'}, + ], + data1: [ + "number", + "column1", + "column2", + "column3" + ], + spanArr: [], + }; + }, + watch: {}, + created() { + }, + mounted() { + this.getSpanArr() + }, + computed: {}, + methods: { + objectSpanMethod({ row, column, rowIndex, columnIndex }) { + if (columnIndex === 1) { + // 这个条件检查当前行是否不是第一行, + //并且当前行的 "Name" 值与前一行的 "Name" 值是否相同。如果条件成立, + //说明当前行与前一行的 "Name" 值相同,因此返回 { rowspan: 0, colspan: 0 }, + //这将使当前单元格不显示,从而实现了合并。 + if (rowIndex > 0 && row.column1 === this.data[rowIndex - 1].column1) { + return { + rowspan: 0, + colspan: 0, + }; + } else { + // 如果条件不成立,说明当前行的 "Name" 值与前一行不同, + //那么我们需要计算需要合并的行数。我们使用 let rowspan = 1; 来初始化 rowspan, + //然后使用一个循环遍历接下来的行,查找具有相同 "Name" 值的行,直到遇到不同的行为止。 + let rowspan = 1; + for (let i = rowIndex + 1; i < this.data.length; i++) { + //在循环中,我们检查当前行和正在遍历的行的 "Name" 值是否相同。 + //如果相同,说明我们找到了一个与当前行具有相同 "Name" 值的行,所以我们将 rowspan 递增。 + if (row.column1 === this.data[i].column1) { + rowspan++; + } else { + //else:当遇到与当前行 "Name" 值不同的行时,我们退出循环。 + break; + } + } + //最后,我们返回 { rowspan, colspan: 1 },其中 rowspan 表示需要合并的行数,而 colspan: 1 表示不合并列 + return { + rowspan, + colspan: 1, + }; + } + } + }, + /*objectSpanMethod({row, column, rowIndex, columnIndex}) { + return this.spanArr[rowIndex * this.colFields.length + columnIndex]; + },*/ timeChange() { let startTime = "", - endTime = ""; + endTime = ""; if (this.typeCondition === 1) { startTime = this.$moment().startOf("month").format("YYYY-MM-DD"); } @@ -76,19 +233,150 @@ export default { } this.startTime = startTime; this.endTime = endTime; - // this.getData(); + // this.getData(); }, - }, - components:{ - titleSmall - }, - computed:{}, - watch: {}, + // 这里只放了部分代码,除了加了个if,其他代码和上面的一样 + getSpanArr() { + console.log(this.tableData, 'this.tableData') + for (let i = 0; i < this.tableData.length; i++) { + let row = i; + // let col = i % this.colCount; + if (row === 0) { + // i 表示行 j表示列 + for (let j = 0; j < this.colFields.length; j++) { + this.spanArr[i * this.colFields.length + j] = { + rowspan: 1, + colspan: 1, + }; + } + } else { + for (let j = 0; j < this.colFields.length; j++) { + // 当前和上一次的一样 + // 合并所有列的相同数据单元格 + if ( + this.colFields[j] == "column1" + ) { // 指定合并哪些列 + if ( + this.tableData[row][this.colFields[j]] === + this.tableData[row - 1][this.colFields[j]] + ) { + let beforeItem = + this.spanArr[(row - 1) * this.colFields.length + j]; + this.spanArr[row * this.colFields.length + j] = { + rowspan: 1 + beforeItem.rowspan, + colspan: 1, + }; + beforeItem.rowspan = 0; + beforeItem.colspan = 0; + } else { + // rowspan 和 colspan 都为1表格此单元格不合并 + this.spanArr[row * this.colFields.length + j] = { + rowspan: 1, + colspan: 1, + }; + } + } + } + } + } + } + }, } </script> <style lang='scss' scoped> - .infoColor{ - color: #A3B9DA ; +@import "@/assets/scss/dataBoard/table-border.scss"; + +.infoColor { + color: #A3B9DA; +} + +.h150 { + height: 150px; +} + +.h200 { + height: 200px; +} + +.f-hflex { + width: 83px; +} + +.f-flex { + margin-top: 4px; +} + +.f-darkGray { + margin-top: 15px; +} + +.no-data { + display: flex; + align-items: center; + justify-content: center; + opacity: .6; + color: #fff; +} + +.t-list { + position: relative; + flex: 1; + width: 100%; + + margin-bottom: 20px; + + .item { + display: flex; + align-items: center; + justify-content: space-around; + height: 40px; + cursor: pointer; + color: #fff; + background: #0a2a5c; + + div { + overflow: hidden; + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + + &:last-child { + flex: 0 0 80px; + } + + &:first-child { + flex: 0 0 50px; + } + } + + + &:hover { + color: #02fcff; + box-shadow: 0 0 10px #38b2ff, 0 0 5px #38b2ff; } + } +} + +.bto-border { + height: 1px; + color: #FFFFFF !important; + border-bottom: 1px solid; + border-image: linear-gradient(to right, #1c3e69 0%, #4eafd5 50%, #1c3e69 100%); + border-image-slice: 1; + background: none !important; + + &:hover { + box-sizing: unset !important; + } +} + +.header { + color: #A3B9DA !important; + background: none !important; + + &:hover { + box-sizing: unset !important; + } +} </style>