Browse Source

新增页面

feature
战立标 2 years ago
parent
commit
f6d5385ef6
  1. BIN
      src/assets/images/home/homeTop2.png
  2. BIN
      src/assets/images/renfang/map-right-cur.png
  3. BIN
      src/assets/images/renfang/map-right-open.png
  4. BIN
      src/assets/images/renfang/map-right-title.png
  5. 66
      src/assets/scss/dataBoard/table-border.scss
  6. 41
      src/views/dataBoard/cpts/homeDetails/index.vue
  7. 100
      src/views/dataBoard/renfang/cpts/map-right.vue
  8. 41
      src/views/dataBoard/renfang/index.vue
  9. 138
      src/views/dataBoard/renfang/visualizing/components/dangyuan.vue
  10. 146
      src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue
  11. 137
      src/views/dataBoard/renfang/visualizing/components/laonianren.vue
  12. 156
      src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue
  13. 331
      src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue
  14. 136
      src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue
  15. 3
      src/views/dataBoard/renfang/visualizing/index.vue
  16. 2
      src/views/dataBoard/satisfactionEval/components/Title/titleSmall.vue
  17. 10
      src/views/dataBoard/satisfactionEval/index.vue
  18. 26
      src/views/dataBoard/satisfactionEval/modules/SelfInspectionScore/index.vue
  19. 10
      src/views/dataBoard/satisfactionEval/modules/TypesOfDissatisfaction/index.vue
  20. 348
      src/views/dataBoard/satisfactionEval/modules/eventAnalysis/index.vue

BIN
src/assets/images/home/homeTop2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
src/assets/images/renfang/map-right-cur.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
src/assets/images/renfang/map-right-open.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
src/assets/images/renfang/map-right-title.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

66
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;
}
}

41
src/views/dataBoard/cpts/homeDetails/index.vue

@ -52,9 +52,9 @@
<div class="apartment">
<div class="apar_comtent" v-if="houseMountArr.length > 0">
<div class="apar_top">
<img src="@/assets/images/home/homeTop.png" alt="/" />
<img src="@/assets/images/home/homeTop2.png" alt="/" />
</div>
<div style="min-width: 284px; max-width: 488px; padding: 0 20px">
<div style="min-width: 300px; max-width: 488px;">
<div class="apar_center">
<div
class="apar_center_flex"
@ -111,15 +111,15 @@
</div>
</div>
<div class="apar_bottom">
<!-- <div class="apar_bottom">
<img src="@/assets/images/home/homeBottom.png" alt="/" />
</div>
</div>-->
</div>
<div v-else class="apar_comtent">
<div class="apar_top">
<img src="@/assets/images/home/homeTop.png" alt="/" />
<img src="@/assets/images/home/homeTop2.png" alt="/" />
</div>
<div style="min-width: 284px; max-width: 488px; padding: 0 20px">
<div style="min-width: 300px; max-width: 488px;">
<div class="apar_center">
<div class="apar_center_flex" style="width: 50px">
<div
@ -137,9 +137,9 @@
</div>
</div>
<div class="apar_bottom">
<!-- <div class="apar_bottom">
<img src="@/assets/images/home/homeBottom.png" alt="/" />
</div>
</div>-->
</div>
<!-- <div class="apar_right">
<img src="@/assets/images/home/homeRight.png" alt="" />
@ -677,10 +677,10 @@ export default {
}
@mixin homeCommon {
height: 58px;
height: 60px;
background-size: 100% 100%;
display: flex;
flex: 0 0 48px;
flex: 0 0 86px;
align-items: center;
justify-content: center;
font-size: 14px;
@ -688,7 +688,7 @@ export default {
font-weight: 500;
color: #fff;
&:not(:last-child) {
margin-right: 20px;
margin-right: 6px;
}
}
@ -745,12 +745,14 @@ export default {
justify-content: center;
.apar_center {
min-width: 244px;
min-width: 300px;
max-width: 488px;
height: 578px;
overflow: auto;
background: #caab93;
padding: 30px 30px 10px 30px;
background: #032A5F;
border: 1px solid #053573;
padding: 15px;
padding-bottom: 5px;
display: flex;
// align-items: flex-end;
flex-direction: column-reverse;
@ -767,20 +769,23 @@ export default {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
margin-bottom: 10px;
.households {
@include homeCommon;
background: url("@/assets/images/home/hasPeople.png") no-repeat;
background: #1A95FF;
//background: url("@/assets/images/home/hasPeople.png") no-repeat;
}
.dangerHome,
.dangerPeople {
@include homeCommon;
background: url("@/assets/images/home/dangerHomeBg.png") no-repeat;
background: #B43404;
//background: url("@/assets/images/home/dangerHomeBg.png") no-repeat;
}
.freeHome {
@include homeCommon;
background: url("@/assets/images/home/freeHome.png") no-repeat;
background: #8392A5;
//background: url("@/assets/images/home/freeHome.png") no-repeat;
}
}
}

100
src/views/dataBoard/renfang/cpts/map-right.vue

@ -0,0 +1,100 @@
<template>
<div class="map-right">
<img :class="isShow?'':'close'" alt="" class="map-right-icon" src="@/assets/images/renfang/map-right-open.png"
@click="isShow = !isShow">
<div :class="isShow?'':'hidden'" class="map-right-content">
<div class="title">
海伦路街道
</div>
<div class="map-list">
<div class="map-item">南昌路社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
<div class="map-item">北岭山社区</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "map-right",
data() {
return {
isShow: true
}
}
}
</script>
<style lang="scss" scoped>
.map-right {
position: absolute;
top: calc(50% - 184px);
right: 20px;
display: flex;
align-items: center;
.map-right-icon {
transform: rotate(180deg);
&.close {
transform: rotate(0deg);
}
}
.map-right-content {
overflow: hidden;
width: 134px;
transition: all .3s;
color: #fff;
border: 1px solid #488CC5;
border-radius: 2px;
background: rgba(10, 35, 81, 0.66);
&.hidden {
width: 0;
border-width: 0px;
}
.title {
line-height: 32px;
height: 32px;
padding-left: 24px;
background: url("@/assets/images/renfang/map-right-title.png");
}
.map-list {
overflow-y: auto;
height: 336px;
.map-item {
line-height: 42px;
overflow: hidden;
height: 42px;
padding-left: 24px;
text-overflow: ellipsis;
border-bottom: 1px solid;
border-image: linear-gradient(to right, #000 0%, #4eafd5 50%, #000 100%);
border-image-slice: 1;
&:hover {
color: #72F7FF;
background: url("@/assets/images/renfang/map-right-cur.png");
}
}
}
}
}
</style>

41
src/views/dataBoard/renfang/index.vue

@ -65,24 +65,26 @@
</div>
</div>
</div>
<div class="item" @click="jumpPath('normal', 'aged', '志愿者')">
<div class="item" @click="jumpPath('normal', 'aged', '失业人员')">
<div class="item-info">
<div>
<img
src="~@/assets/images/shuju/renfang/index/per/zyz.png"
/>
src="~@/assets/images/shuju/renfang/index/per/syry.png"
/>
</div>
<div>
<b>{{ perInfo.volunteer_ratio }}</b>
<b>{{ perInfo.unemployed_ratio }}</b>
%
</div>
</div>
</div>
<div class="item" @click="jumpPath('normal', 'aged', '党员')">
<div class="item-info">
<div>
<img
src="~@/assets/images/shuju/renfang/index/per/dy.png"
src="~@/assets/images/shuju/renfang/index/per/dy.png"
/>
</div>
<div>
@ -91,20 +93,34 @@
</div>
</div>
</div>
<div class="item" @click="jumpPath('normal', 'aged', '失业人员')">
<div class="item" @click="jumpPath('normal', 'aged', '志愿者')">
<div class="item-info">
<div>
<img
src="~@/assets/images/shuju/renfang/index/per/syry.png"
/>
src="~@/assets/images/shuju/renfang/index/per/zyz.png"
/>
</div>
<div>
<b>{{ perInfo.unemployed_ratio }}</b>
<b>{{ perInfo.volunteer_ratio }}</b>
%
</div>
</div>
</div>
<div class="item" @click="jumpPath('normal', 'aged', '特殊人群')">
<div class="item-info">
<div>
<img
src="~@/assets/images/shuju/renfang/index/per/zyz.png"
/>
</div>
<div>
<b>{{ perInfo.volunteer_ratio }}</b>
%
</div>
</div>
</div>
<div class="item">
<!-- <div class="item">
<div class="item-info">
<div>
<img
@ -117,7 +133,7 @@
%
</div>
</div>
</div>
</div>-->
</div>
<grid-map
@ -126,6 +142,7 @@
:srcGridData="orgData"
@clickDotBtn="handleClickDotBtn"
/>
<mapRight/>
</div>
<div class="m-search">
@ -431,6 +448,7 @@ import jmgl from "@/views/dataBoard/renfang/cpts/jmgl";
import rkfx from "@/views/dataBoard/renfang/cpts/rkfx";
import rkyj from "@/views/dataBoard/renfang/cpts/rkyj";
import szsq from "@/views/dataBoard/renfang/cpts/szsq";
import mapRight from "@/views/dataBoard/renfang/cpts/map-right.vue";
import cptBread from "@/views/dataBoard/renfang/cpts/bread";
import cptLoading from "@/views/dataBoard/cpts/loading";
import houseDetails from "@/views/dataBoard/cpts/house-details";
@ -466,6 +484,7 @@ export default {
cptBread,
houseDetails,
resiDetails,
mapRight
},
data() {

138
src/views/dataBoard/renfang/visualizing/components/dangyuan.vue

@ -13,6 +13,13 @@
</div>
<div id="dyRightChart" style="height: 400px"></div>
</div>
<div class="visualizing-right">
<div>
<data-title title="党员享受服务情况统计" />
</div>
<div id="dyServiceChart" style="height: 400px"></div>
</div>
</div>
</div>
</template>
@ -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());
},
},
};
</script>

146
src/views/dataBoard/renfang/visualizing/components/dibaorenyuan.vue

@ -27,6 +27,12 @@
</div>
<div id="dbryChart4" style="height: 380px"></div>
</div>
<div class="visualizing-right">
<div>
<data-title title="低保人员享受服务情况统计" />
</div>
<div id="dbryChart5" style="height: 380px"></div>
</div>
</div>
</div>
</template>
@ -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());
},
},
};
</script>

137
src/views/dataBoard/renfang/visualizing/components/laonianren.vue

@ -13,6 +13,12 @@
</div>
<div id="lnrRightChart" style="height: 400px"></div>
</div>
<div class="visualizing-right">
<div>
<data-title title="老年人享受服务情况统计" />
</div>
<div id="lnrServiceChart" style="height: 400px"></div>
</div>
</div>
</div>
</template>
@ -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());
},
},
};
</script>

156
src/views/dataBoard/renfang/visualizing/components/shiyerenyuan.vue

@ -20,19 +20,26 @@
<div id="syryChart3" style="height: 380px"></div>
</div>
</div>
<div class="visualizing dibaorenyuan">
<div class="visualizing-left">
<div class="visualizing">
<div class="visualizing-item">
<div>
<data-title title="技能找人统计" />
</div>
<div id="syryChart4" style="height: 380px"></div>
</div>
<div class="visualizing-right">
<div class="visualizing-item">
<div>
<data-title title="岗位找人统计" />
</div>
<div id="syryChart5" style="height: 380px"></div>
</div>
<div class="visualizing-item">
<div>
<data-title title="失业人员享受服务情况统计" />
</div>
<div id="syryChart6" style="height: 380px"></div>
</div>
</div>
</div>
</template>
@ -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());
},
},
};
</script>

331
src/views/dataBoard/renfang/visualizing/components/teshurenqun.vue

@ -0,0 +1,331 @@
<template>
<div>
<div class="visualizing laonianren">
<div class="visualizing-left">
<div>
<data-title title="特殊人群类别统计" />
</div>
<div id="tsrqLeftChart" style="height: 400px"></div>
</div>
<div class="visualizing-right">
<div>
<data-title title="特殊人群享受服务情况统计" />
</div>
<div id="tsrqServiceChart" style="height: 400px"></div>
</div>
</div>
</div>
</template>
<script>
import dataTitle from "@/views/dataBoard/renfang/visualizing/components/dataTitle.vue";
import * as echarts from "echarts";
function dataFormatter(arr) {
return arr.map((item) => {
return {
name: item.classification,
value: Number(item.classificationNum),
};
});
}
export default {
name: "teshurenqun",
props: {
title: {
type: String,
default: "",
},
org_id: {
type: String,
default: "",
},
},
components: {
dataTitle,
},
data() {
return {
tsrqLeft: [],
tsrqRight: [],
tsrqService: [],
};
},
created() {
const query = this.$route.query;
this.getData();
},
activated() {},
methods: {
getData() {
this.$http
.get("?type=0")
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.tsrqLeft = dataFormatter(res.data);
this.initLeftCharts();
})
.catch(() => {});
this.$http
.get("?type=1")
.then(({ data: res }) => {
if (res.code !== 0) {
return this.$message.error(res.msg);
}
this.tsrqRight = dataFormatter(res.data);
this.initRightCharts();
})
.catch(() => {});
},
initLeftCharts() {
let div = document.getElementById("tsrqLeftChart");
this.myChart1 = 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: 90,
fontSize: 12,
color: "#dddee7",
},
value: {
width: 30,
align: "right",
fontSize: 18,
},
},
},
data: this.tsrqLeft,
formatter: (name) => {
if (this.tsrqLeft.length) {
const item = this.tsrqLeft.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.tsrqLeft || this.tsrqLeft.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.tsrqLeft && this.tsrqLeft.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.tsrqLeft,
},
],
};
this.myChart1.setOption(option);
this.myChart1.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: "teshurenqun",
olds: e.data.name,
},
});
});
window.addEventListener("resize", () => this.myChart1.resize());
},
initRightCharts() {
let div = document.getElementById("tsrqRightChart");
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.tsrqRight,
formatter: (name) => {
if (this.tsrqRight.length) {
const item = this.tsrqRight.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.tsrqRight || this.tsrqRight.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.tsrqRight && this.tsrqRight.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.tsrqRight,
},
],
};
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: "teshurenqun",
gategoryCode: e.data.name,
},
});
});
this.myChart2.setOption(option);
window.addEventListener("resize", () => this.myChart2.resize());
},
},
};
</script>
<style
lang="scss"
src="@/assets/scss/dataBoard/renfang/index.scss"
scoped
></style>
<style lang="scss" scoped>
.laonianren {
padding: 140px 240px;
}
</style>

136
src/views/dataBoard/renfang/visualizing/components/zhiyuanzhe.vue

@ -13,6 +13,12 @@
</div>
<div id="zyzRightChart" style="height: 400px"></div>
</div>
<div class="visualizing-right">
<div>
<data-title title="志愿者享受服务情况统计" />
</div>
<div id="zyzServiceChart" style="height: 400px"></div>
</div>
</div>
</div>
</template>
@ -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());
},
},
};
</script>

3
src/views/dataBoard/renfang/visualizing/index.vue

@ -10,6 +10,7 @@
<zhiyuanzhe :org_id="org_id" v-if="pageName == '志愿者'" />
<dangyuan :org_id="org_id" v-if="pageName == '党员'" />
<shiyerenyuan :org_id="org_id" v-if="pageName == '失业人员'" />
<teshurenqun :org_id="org_id" v-if="pageName == '特殊人群'" />
</div>
</template>
@ -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 {

2
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;

10
src/views/dataBoard/satisfactionEval/index.vue

@ -18,9 +18,11 @@
<SelfTrend />
</div>
<div class="bgImg">
<Title text="下级组织不满意事项统计" />
<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 {

26
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>

10
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,

348
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>

Loading…
Cancel
Save