After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 9.3 KiB |
After Width: | Height: | Size: 9.7 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 3.8 KiB |
@ -0,0 +1,56 @@ |
|||||
|
<template> |
||||
|
<div class="tabs"> |
||||
|
<div class="tab" :class="value2 === item.value?'cur':''" v-for="(item,index) in list" @click="tabClick(index)" :key="index"> |
||||
|
{{item.label}} |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "Tabs", |
||||
|
props: { |
||||
|
list:{ |
||||
|
type: Array, |
||||
|
default: () => [] |
||||
|
}, |
||||
|
value:{ |
||||
|
type: [String,Number], |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
value2: this.value, |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.value2 = this.value |
||||
|
}, |
||||
|
methods: { |
||||
|
tabClick(index) { |
||||
|
this.value2 = this.list[index].value |
||||
|
this.$emit('changeVal',this.value) |
||||
|
this.$emit('changeLabel',this.list[index].label) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.tabs { |
||||
|
display: flex; |
||||
|
.tab { |
||||
|
cursor: pointer; |
||||
|
padding: 10px 11px; |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #FFFFFF; |
||||
|
background: url("@/assets/images/manyidu/tab.png") repeat-x top left; |
||||
|
margin-right: 4px; |
||||
|
&.cur { |
||||
|
background: url("@/assets/images/manyidu/tab_cur.png") repeat-x top left; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,58 @@ |
|||||
|
<template> |
||||
|
<div class="title"> |
||||
|
<span class="text"> |
||||
|
<span class="txt">{{ text }}</span> |
||||
|
<span class="text-shadow">{{ text }}</span> |
||||
|
</span> |
||||
|
<slot></slot> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "Title", |
||||
|
props: { |
||||
|
text: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
|
||||
|
.title { |
||||
|
background: linear-gradient(90deg, rgba(31, 126, 255, 0.28) 0%, rgba(13, 113, 248, 0) 70%); |
||||
|
padding: 10px 8px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
|
||||
|
.text { |
||||
|
position: relative; |
||||
|
font-size: 22px; |
||||
|
font-family: HYShuYuanHeiJ; |
||||
|
font-weight: 400; |
||||
|
|
||||
|
.txt { |
||||
|
color: #1F79FF; |
||||
|
background: linear-gradient(0deg, #2DC1FF 0%, #FFFFFF 58.5205078125%); |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
position: relative; |
||||
|
z-index: 2; |
||||
|
} |
||||
|
|
||||
|
.text-shadow { |
||||
|
top: 4px; |
||||
|
left: 3px; |
||||
|
position: absolute; |
||||
|
color: #020F21; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
</style> |
@ -0,0 +1,93 @@ |
|||||
|
<template> |
||||
|
<div class="satisfaction-eval"> |
||||
|
<el-row :gutter="20"> |
||||
|
<el-col :span="8"> |
||||
|
<div class="bg"> |
||||
|
<Title text="不满意事项类型分析"> |
||||
|
<div class="more"> |
||||
|
查看详细 <i class="el-icon-arrow-right"></i> |
||||
|
</div> |
||||
|
</Title> |
||||
|
|
||||
|
<TypesOfDissatisfaction/> |
||||
|
</div> |
||||
|
<div class="bg"> |
||||
|
<Title text="不满意风险人员统计及回访情况"/> |
||||
|
<RiskStatistics/> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<EventSituation/> |
||||
|
<div class="bg2"> |
||||
|
<Title text="不满意事项及满意度自查走势"/> |
||||
|
<SelfTrend/> |
||||
|
</div> |
||||
|
<div class="bg2"> |
||||
|
<Title text="下级网格不满意事项统计"/> |
||||
|
<EventStatistics/> |
||||
|
</div> |
||||
|
</el-col> |
||||
|
<el-col :span="8"> |
||||
|
<div class="bg2"> |
||||
|
<Title text="不满意人员画像"/> |
||||
|
<PersonnelPortrait/> |
||||
|
</div> |
||||
|
|
||||
|
<div class="bg2"> |
||||
|
<Title text="潜在不满意人数"/> |
||||
|
<PotentialPeople/> |
||||
|
</div> |
||||
|
|
||||
|
</el-col> |
||||
|
</el-row> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import TypesOfDissatisfaction from "./modules/TypesOfDissatisfaction"; |
||||
|
import RiskStatistics from "./modules/RiskStatistics" |
||||
|
import Title from "@/views/dataBoard/satisfactionEval/components/Title" |
||||
|
import EventSituation from "@/views/dataBoard/satisfactionEval/modules/EventSituation"; |
||||
|
import SelfTrend from "@/views/dataBoard/satisfactionEval/modules/SelfTrend"; |
||||
|
import EventStatistics from "@/views/dataBoard/satisfactionEval/modules/EventStatistics"; |
||||
|
import PersonnelPortrait from "@/views/dataBoard/satisfactionEval/modules/PersonnelPortrait"; |
||||
|
import PotentialPeople from "@/views/dataBoard/satisfactionEval/modules/PotentialPeople"; |
||||
|
|
||||
|
export default { |
||||
|
name: "satisfactionEvaluation", |
||||
|
components: { |
||||
|
EventStatistics, |
||||
|
SelfTrend, |
||||
|
EventSituation, |
||||
|
TypesOfDissatisfaction, |
||||
|
RiskStatistics, |
||||
|
Title, |
||||
|
PersonnelPortrait, |
||||
|
PotentialPeople |
||||
|
}, |
||||
|
data() { |
||||
|
return {} |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.satisfaction-eval { |
||||
|
padding: 24px 20px; |
||||
|
} |
||||
|
|
||||
|
.more { |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #A0CDFF; |
||||
|
} |
||||
|
|
||||
|
.bg2 { |
||||
|
background: linear-gradient(180deg, rgba(46, 164, 255, 0.1) 0%, rgba(13, 143, 243, 0) 100%); |
||||
|
} |
||||
|
|
||||
|
.bg { |
||||
|
background: linear-gradient(144deg, rgba(46, 164, 255, 0.1) 0%, rgba(13, 143, 243, 0) 100%); |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,175 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="title">12345政务热线事件办理情况</div> |
||||
|
|
||||
|
<div class="current"> |
||||
|
<div class="cur-month"> |
||||
|
<span>{{ curMonth }}</span> 月 |
||||
|
</div> |
||||
|
<div class="cur-month-list"> |
||||
|
<div class="cur-month-item"> |
||||
|
<div class="txt">事件总数</div> |
||||
|
<div class="num blue">52</div> |
||||
|
</div> |
||||
|
<div class="cur-month-item"> |
||||
|
<div class="txt">处理中</div> |
||||
|
<div class="num orange">13</div> |
||||
|
</div> |
||||
|
<div class="cur-month-item"> |
||||
|
<div class="txt">已办结</div> |
||||
|
<div class="num green">28</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="his-month"> |
||||
|
<div class="his-month-item" v-for="(item,index) in eventList" :key="index"> |
||||
|
<div class="month">{{ item.month }}月</div> |
||||
|
<div class="num">{{ item.num }}</div> |
||||
|
<div class="event">{{ item.env }}事件数</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "EventSituation", |
||||
|
data() { |
||||
|
return { |
||||
|
eventList: [], |
||||
|
curMonth: '' |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.curMonth = new Date().getMonth() - 0 + 1 |
||||
|
let eventList = [] |
||||
|
for (let i = 5; i >= 0; i--) { |
||||
|
eventList.push({ |
||||
|
month: this.curMonth - i, |
||||
|
num: 10, |
||||
|
env: 11, |
||||
|
}) |
||||
|
} |
||||
|
this.eventList = eventList |
||||
|
}, |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.title { |
||||
|
font-size: 26px; |
||||
|
font-family: PingFang SC; |
||||
|
font-weight: bold; |
||||
|
color: #FFFFFF; |
||||
|
text-shadow: 0px 0px 20px #8FD4FF; |
||||
|
background: linear-gradient(0deg, #8FD4FF 0%, #FFFFFF 64.0380859375%); |
||||
|
-webkit-background-clip: text; |
||||
|
-webkit-text-fill-color: transparent; |
||||
|
|
||||
|
text-align: center; |
||||
|
letter-spacing: 5px; |
||||
|
} |
||||
|
.current { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
padding: 20px 60px 15px 50px; |
||||
|
} |
||||
|
.cur-month { |
||||
|
font-size: 18px; |
||||
|
font-weight: 400; |
||||
|
color: #3AB7FF; |
||||
|
width: 130px; |
||||
|
padding-top: 14px; |
||||
|
box-sizing: border-box; |
||||
|
height: 88px; |
||||
|
background: url("@/assets/images/manyidu/month.png"); |
||||
|
text-align: center; |
||||
|
|
||||
|
span { |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cur-month-list { |
||||
|
display: flex; |
||||
|
.cur-month-item { |
||||
|
margin-left: 71px; |
||||
|
.txt { |
||||
|
font-size: 16px; |
||||
|
font-weight: 400; |
||||
|
color: #FFFFFF; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
|
||||
|
.num { |
||||
|
font-size: 36px; |
||||
|
font-weight: bold; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.blue { |
||||
|
color: #3CF5FF; |
||||
|
} |
||||
|
|
||||
|
.orange { |
||||
|
color: #F95619; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
color: #08EBAE; |
||||
|
} |
||||
|
|
||||
|
.his-month { |
||||
|
display: flex; |
||||
|
background: linear-gradient(-90deg, rgba(14, 121, 213, 0.10) 0%, rgba(17, 124, 213, 0) 100%); |
||||
|
padding: 20px; |
||||
|
margin-bottom: 28px; |
||||
|
.his-month-item { |
||||
|
flex: 1; |
||||
|
position: relative; |
||||
|
padding-left: 25px; |
||||
|
|
||||
|
&:after { |
||||
|
content: ''; |
||||
|
display: block; |
||||
|
position: absolute; |
||||
|
top: calc(50% - 63px / 2); |
||||
|
right: 0; |
||||
|
width: 1px; |
||||
|
height: 63px; |
||||
|
background: rgba(50, 151, 255, 0.55); |
||||
|
|
||||
|
|
||||
|
} |
||||
|
&:last-child:after { |
||||
|
display: none; |
||||
|
} |
||||
|
.month { |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #C1E8FF; |
||||
|
opacity: 0.75; |
||||
|
} |
||||
|
|
||||
|
.num { |
||||
|
font-size: 26px; |
||||
|
font-weight: bold; |
||||
|
color: #3AB7FF; |
||||
|
margin: 13px 0 6px; |
||||
|
} |
||||
|
|
||||
|
.event { |
||||
|
font-size: 12px; |
||||
|
font-weight: 400; |
||||
|
color: #4B9FCF; |
||||
|
opacity: 0.75; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,259 @@ |
|||||
|
<template> |
||||
|
<div class="event-statistics"> |
||||
|
<div id="eventStatisticsChart" style="height: 293px;"></div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import * as echarts from "echarts"; |
||||
|
|
||||
|
export default { |
||||
|
name: "EventStatistics", |
||||
|
data() { |
||||
|
return { |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initCharts() |
||||
|
}, |
||||
|
methods: { |
||||
|
initCharts() { |
||||
|
let div = document.getElementById('eventStatisticsChart'); |
||||
|
this.myChart = echarts.init(div); |
||||
|
|
||||
|
let xData = ['XX社区第一网格','XX社区第二网格','XX社区第三网格','XX社区第四网格',]; |
||||
|
let tq1 = [12, 20, 30, 60]; |
||||
|
let tq2 = [10, 50, 50, 27]; |
||||
|
let tq3 = [300, 90, 48, 39]; |
||||
|
const max = Math.max(...tq1, ...tq2, ...tq3) |
||||
|
|
||||
|
let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100) |
||||
|
var option = { |
||||
|
title: { |
||||
|
show: false, |
||||
|
text: '', |
||||
|
x: 'center', |
||||
|
top: '15px', |
||||
|
textStyle: { |
||||
|
color: '#333333', |
||||
|
fontWeight: 500, |
||||
|
fontSize: 18, |
||||
|
}, |
||||
|
}, |
||||
|
tooltip: { |
||||
|
trigger: 'axis', |
||||
|
backgroundColor: 'rgba(13, 64, 71, 0.50)', |
||||
|
borderColor: 'rgba(143, 225, 252, 0.60)', |
||||
|
padding: 8, |
||||
|
textStyle: { |
||||
|
color: '#fff', |
||||
|
}, |
||||
|
formatter: function (params) { |
||||
|
console.log(params) |
||||
|
var res='<div"><p>'+params[0].name+'</p></div>' |
||||
|
for(var i=0;i<params.length;i++){ |
||||
|
if(params[i].seriesName!=""){ |
||||
|
res+='<p>'+params[i].seriesName+':'+params[i].data+'</p>' |
||||
|
} |
||||
|
} |
||||
|
return res; |
||||
|
}, |
||||
|
}, |
||||
|
legend: { |
||||
|
// icon: 'circle', |
||||
|
data: ['12345投诉', '省满意度调查', '社区满意度自查'], |
||||
|
itemGap: 20, |
||||
|
itemWidth: 6, |
||||
|
itemHeight: 6, |
||||
|
x: 'right', |
||||
|
top: '3%', |
||||
|
textStyle: { |
||||
|
color: '#fff', |
||||
|
fontSize: 14, |
||||
|
// padding:[0, 10, 0, 10], |
||||
|
} |
||||
|
}, |
||||
|
grid: { |
||||
|
top: '18%', |
||||
|
left: '2%', |
||||
|
right: '4%', |
||||
|
bottom: '8%', |
||||
|
containLabel: true |
||||
|
}, |
||||
|
xAxis: [ |
||||
|
{ |
||||
|
type: 'category', |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
splitLine: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLine: { |
||||
|
lineStyle: { |
||||
|
color: '#323c41' |
||||
|
} |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
align: 'center', |
||||
|
textStyle: { |
||||
|
fontSize: 12, |
||||
|
color: '#A3B9DA' |
||||
|
} |
||||
|
}, |
||||
|
boundaryGap: true, |
||||
|
data: xData, |
||||
|
},{ |
||||
|
type: 'category', |
||||
|
data: xData, |
||||
|
axisLine: {show:false}, |
||||
|
axisLabel: { |
||||
|
show: false, |
||||
|
}, |
||||
|
boundaryGap:true, |
||||
|
|
||||
|
} |
||||
|
], |
||||
|
|
||||
|
yAxis: [ |
||||
|
{ |
||||
|
type: 'value', |
||||
|
name: '单位:人', |
||||
|
nameLocation: 'end', |
||||
|
splitLine: { |
||||
|
show: true, |
||||
|
lineStyle: { |
||||
|
color: 'rgba(4,187,255,0.18)', |
||||
|
type: 'dashed' |
||||
|
}, |
||||
|
}, |
||||
|
nameTextStyle: { |
||||
|
color: '#A3B9DA', |
||||
|
textStyle: { |
||||
|
fontSize: 12 |
||||
|
}, |
||||
|
align: 'center' |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
show: true, |
||||
|
color: '#A3B9DA', |
||||
|
textStyle: { |
||||
|
fontSize: 12 |
||||
|
} |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
series: [ |
||||
|
{ |
||||
|
name: '12345投诉', |
||||
|
type: 'bar', |
||||
|
barWidth: 14, |
||||
|
itemStyle: { |
||||
|
opacity: 1, |
||||
|
color: new echarts.graphic.LinearGradient( |
||||
|
0, |
||||
|
1, |
||||
|
0, |
||||
|
0, |
||||
|
[ |
||||
|
{ |
||||
|
offset: 0, |
||||
|
color: 'rgba(152, 72, 255, 0)' // 0% 处的颜色 |
||||
|
}, |
||||
|
{ |
||||
|
offset: 1, |
||||
|
color: '#A962FF' // 100% 处的颜色 |
||||
|
} |
||||
|
], |
||||
|
false |
||||
|
) |
||||
|
}, |
||||
|
data: tq1, |
||||
|
}, |
||||
|
{ |
||||
|
name: '省满意度调查', |
||||
|
type: 'bar', |
||||
|
barWidth: 14, |
||||
|
itemStyle: { |
||||
|
// lenged文本 |
||||
|
opacity: 1, // 这个是 透明度 |
||||
|
color: new echarts.graphic.LinearGradient( |
||||
|
0, |
||||
|
1, |
||||
|
0, |
||||
|
0, |
||||
|
[ |
||||
|
{ |
||||
|
offset: 0, |
||||
|
color: 'rgba(255, 228, 102, 0)' // 0% 处的颜色 |
||||
|
}, |
||||
|
{ |
||||
|
offset: 1, |
||||
|
color: 'rgba(255, 228, 102, 1)' // 100% 处的颜色 |
||||
|
} |
||||
|
], |
||||
|
false |
||||
|
) |
||||
|
}, |
||||
|
data: tq2, //data.values |
||||
|
}, |
||||
|
{ |
||||
|
name: '社区满意度自查', |
||||
|
type: 'bar', |
||||
|
barWidth: 14, |
||||
|
itemStyle: { |
||||
|
// lenged文本 |
||||
|
opacity: 1, // 这个是 透明度 |
||||
|
color: new echarts.graphic.LinearGradient( |
||||
|
0, |
||||
|
1, |
||||
|
0, |
||||
|
0, |
||||
|
[ |
||||
|
{ |
||||
|
offset: 0, |
||||
|
color: 'rgba(0, 84, 255, 0)' // 0% 处的颜色 |
||||
|
}, |
||||
|
{ |
||||
|
offset: 1, |
||||
|
color: 'rgba(38, 244, 248, 1)' // 100% 处的颜色 |
||||
|
} |
||||
|
], |
||||
|
false |
||||
|
) |
||||
|
}, |
||||
|
data: tq3, //data.values |
||||
|
}, |
||||
|
{ |
||||
|
name: '', |
||||
|
type: 'bar', |
||||
|
|
||||
|
barWidth:100, |
||||
|
barGap: '-60%', |
||||
|
data: barArray, |
||||
|
itemStyle: { |
||||
|
normal: { |
||||
|
color: 'rgba(22,153,152, 0.1)' |
||||
|
} |
||||
|
}, |
||||
|
zlevel: -1, |
||||
|
xAxisIndex: 1, |
||||
|
} |
||||
|
], |
||||
|
}; |
||||
|
this.myChart.setOption(option); |
||||
|
window.addEventListener("resize", () => this.myChart.resize()); |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.event-statistics { |
||||
|
padding: 16px 16px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,267 @@ |
|||||
|
<template> |
||||
|
<div class="personnel-portrait"> |
||||
|
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/> |
||||
|
<div class="screen"> |
||||
|
<div class="txt">不满意人员画像</div> |
||||
|
<el-select v-model="typeCondition" placeholder="请选择" class="select"> |
||||
|
<el-option |
||||
|
v-for="item in typeConditionList" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</div> |
||||
|
|
||||
|
<div class="portrait"> |
||||
|
<div class="tag yellow"><div class="text">第一网格</div></div> |
||||
|
<div class="tag blue"><div class="text">30-40岁</div></div> |
||||
|
<div class="tag red"><div class="text">流动人员</div></div> |
||||
|
<div class="tag light"><div class="text">月收入5000以下</div></div> |
||||
|
<div class="tag green"><div class="text">专科</div></div> |
||||
|
<div class="tag orange"><div class="text">已婚</div></div> |
||||
|
<div class="tag purple"><div class="text">男</div></div> |
||||
|
</div> |
||||
|
|
||||
|
<div class="btn"> |
||||
|
<div>按画像匹配到同类:<span> <b>372</b>人</span></div> |
||||
|
<i class="el-icon-arrow-right"></i> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "PersonnelPortrait", |
||||
|
components: {Tabs}, |
||||
|
data() { |
||||
|
return { |
||||
|
resultType: 1, |
||||
|
resultTypeList: [{ |
||||
|
label: ' 按省调查/社区自查结果', |
||||
|
value: 1 |
||||
|
|
||||
|
}, { |
||||
|
label: '按12345热线投诉结果', |
||||
|
value: 2 |
||||
|
}], |
||||
|
typeCondition: 1, |
||||
|
typeConditionList: [ |
||||
|
{ |
||||
|
label: '基础教育', |
||||
|
value: 1 |
||||
|
}, { |
||||
|
label: '病有所医', |
||||
|
value: 2 |
||||
|
}, { |
||||
|
label: '老有所养', |
||||
|
value: 3 |
||||
|
}, { |
||||
|
label: '文化设施', |
||||
|
value: 4 |
||||
|
}, { |
||||
|
label: '生态环境', |
||||
|
value: 5 |
||||
|
}, { |
||||
|
label: '体育设施', |
||||
|
value: 6 |
||||
|
}, { |
||||
|
label: '社会救助', |
||||
|
value: 7 |
||||
|
}, |
||||
|
], |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
}, |
||||
|
methods: { |
||||
|
resultTypeChange() { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
$yellow: #ef9700; |
||||
|
$blue: #1a95ff; |
||||
|
$red: #ee3030; |
||||
|
$light: #2ab6be; |
||||
|
$green: #1b7d47; |
||||
|
$orange: #f95619; |
||||
|
$purple: #6642fd; |
||||
|
.personnel-portrait { |
||||
|
padding: 16px 16px 40px; |
||||
|
} |
||||
|
|
||||
|
.screen { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
margin: 25px 0 47px; |
||||
|
|
||||
|
.txt { |
||||
|
font-size: 16px; |
||||
|
font-weight: 500; |
||||
|
color: #FFFFFF; |
||||
|
line-height: 22px; |
||||
|
margin-right: 25px; |
||||
|
} |
||||
|
|
||||
|
/deep/ .el-input__inner { |
||||
|
width: 110px !important; |
||||
|
height: 24px !important; |
||||
|
background: #021C49 !important; |
||||
|
border: 1px solid #125AAA !important; |
||||
|
border-radius: 12px !important; |
||||
|
color: #A0CDFF; |
||||
|
} |
||||
|
|
||||
|
/deep/ .el-input__icon { |
||||
|
line-height: 24px !important; |
||||
|
color: #A0CDFF; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.portrait { |
||||
|
width: 388px; |
||||
|
height: 345px; |
||||
|
position: relative; |
||||
|
background: url("@/assets/images/manyidu/hx_bg.png") no-repeat center; |
||||
|
margin: 0 auto; |
||||
|
cursor: pointer; |
||||
|
.tag { |
||||
|
position: absolute; |
||||
|
width: 76px; |
||||
|
height: 76px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
.text { |
||||
|
width: 60px; |
||||
|
height: 60px; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
color: #fff; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
&:after { |
||||
|
content: ""; |
||||
|
opacity: .3; |
||||
|
display: block; |
||||
|
width: 76px; |
||||
|
height: 76px; |
||||
|
position: absolute; |
||||
|
border-radius: 50%; |
||||
|
|
||||
|
} |
||||
|
&:nth-of-type(1) { |
||||
|
left: 162px; |
||||
|
top: 0; |
||||
|
} |
||||
|
&:nth-of-type(2) { |
||||
|
left: 297px; |
||||
|
top: 73px; |
||||
|
} |
||||
|
&:nth-of-type(3) { |
||||
|
left: 316px; |
||||
|
top: 203px; |
||||
|
} |
||||
|
&:nth-of-type(4) { |
||||
|
left: 228px; |
||||
|
top: 269px; |
||||
|
} |
||||
|
&:nth-of-type(5) { |
||||
|
left: 77px; |
||||
|
top: 257px; |
||||
|
} |
||||
|
&:nth-of-type(6) { |
||||
|
left: 0px; |
||||
|
top: 158px; |
||||
|
} |
||||
|
&:nth-of-type(7) { |
||||
|
left: 48px; |
||||
|
top: 57px; |
||||
|
} |
||||
|
} |
||||
|
.yellow { |
||||
|
.text { |
||||
|
background: $yellow; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $yellow; |
||||
|
} |
||||
|
} |
||||
|
.blue { |
||||
|
.text { |
||||
|
background: $blue; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $blue; |
||||
|
} |
||||
|
} |
||||
|
.red { |
||||
|
.text { |
||||
|
background: $red; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $red; |
||||
|
} |
||||
|
} |
||||
|
.light { |
||||
|
.text { |
||||
|
background: $light; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $light; |
||||
|
} |
||||
|
} |
||||
|
.green { |
||||
|
.text { |
||||
|
background: $green; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $green; |
||||
|
} |
||||
|
} |
||||
|
.orange { |
||||
|
.text { |
||||
|
background: $orange; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $orange; |
||||
|
} |
||||
|
} |
||||
|
.purple { |
||||
|
.text { |
||||
|
background: $purple; |
||||
|
} |
||||
|
&:after { |
||||
|
background: $purple; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.btn { |
||||
|
width: 240px; |
||||
|
height: 46px; |
||||
|
border: 1px solid #125AAA; |
||||
|
border-radius: 23px; |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #FFFFFF; |
||||
|
line-height: 46px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
padding: 0 20px; |
||||
|
margin: 33px auto 0; |
||||
|
span { |
||||
|
font-size: 18px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
</style> |
@ -0,0 +1,103 @@ |
|||||
|
<template> |
||||
|
<div class="potential-people"> |
||||
|
<div class="potential-people-item"> |
||||
|
<div class="icon"> |
||||
|
<img src="@/assets/images/manyidu/qz_wjj.png" alt=""> |
||||
|
</div> |
||||
|
<div class="txt"> |
||||
|
事件未解决 <br> |
||||
|
上报人数 |
||||
|
</div> |
||||
|
<div class="num"><span class="orange">78</span>人</div> |
||||
|
</div> |
||||
|
<div class="potential-people-item"> |
||||
|
<div class="icon"> |
||||
|
<img src="@/assets/images/manyidu/qz_wmz.png" alt=""> |
||||
|
</div> |
||||
|
<div class="txt"> |
||||
|
需求未满足 <br> |
||||
|
人数 |
||||
|
</div> |
||||
|
<div class="num"><span class="green">128</span>人</div> |
||||
|
</div> |
||||
|
<div class="potential-people-item"> |
||||
|
<div class="icon"> |
||||
|
<img src="@/assets/images/manyidu/qz_wx.png" alt=""> |
||||
|
</div> |
||||
|
<div class="txt"> |
||||
|
应享未享 <br> |
||||
|
服务人数 |
||||
|
</div> |
||||
|
<div class="num"><span class="light">527</span>人</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "PotentialPeople" |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.potential-people { |
||||
|
padding: 16px 36px; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
|
||||
|
.potential-people-item { |
||||
|
margin: 14px; |
||||
|
text-align: center; |
||||
|
flex: 1; |
||||
|
border: 1px solid rgba(28, 67, 111, 0.22); |
||||
|
background: linear-gradient(0deg, rgba(31, 121, 255, 0.22) 0%, rgba(31,121,255,0) 100%); |
||||
|
padding: 26px 0 31px; |
||||
|
.icon { |
||||
|
width: 86px; |
||||
|
height: 86px; |
||||
|
margin: 0 auto; |
||||
|
|
||||
|
img { |
||||
|
display: block; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.txt { |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #A3B9DA; |
||||
|
line-height: 24px; |
||||
|
margin: 11px 0 22px; |
||||
|
} |
||||
|
|
||||
|
.num { |
||||
|
font-size: 14px; |
||||
|
font-weight: 500; |
||||
|
color: #A3B9DA; |
||||
|
|
||||
|
span { |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.orange { |
||||
|
color: #FFB73C; |
||||
|
} |
||||
|
|
||||
|
.green { |
||||
|
color: #08EBAE; |
||||
|
} |
||||
|
|
||||
|
.light { |
||||
|
color: #7FCEFF; |
||||
|
} |
||||
|
|
||||
|
</style> |
@ -0,0 +1,158 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="number-list"> |
||||
|
<div class="number-item"> |
||||
|
<div class="img"> |
||||
|
<img src="@/assets/images/manyidu/hf_ts.png" alt=""> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div class="txt"> |
||||
|
12345热线 <br> |
||||
|
投诉人数 |
||||
|
</div> |
||||
|
<div class="num"><span>7</span> 人</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="number-item"> |
||||
|
<div class="img"> |
||||
|
<img src="@/assets/images/manyidu/hf_bmy.png" alt=""> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div class="txt"> |
||||
|
省满意度调查 <br> |
||||
|
不满意人数 |
||||
|
</div> |
||||
|
<div class="num"><span>7</span> 人</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
<div class="number-item"> |
||||
|
<div class="img"> |
||||
|
<img src="@/assets/images/manyidu/hf_zpbmy.png" alt=""> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div class="txt"> |
||||
|
社区满意度自评 <br> |
||||
|
不满意人数 |
||||
|
</div> |
||||
|
<div class="num"><span>7</span> 人</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="number-list2"> |
||||
|
<div class="number-item"> |
||||
|
<div class="txt"> |
||||
|
本月回访 <br> |
||||
|
次数 |
||||
|
</div> |
||||
|
<div class="num"><span class="grey">112</span> 人</div> |
||||
|
</div> |
||||
|
<div class="number-item"> |
||||
|
<div class="txt"> |
||||
|
本月回访消除 <br> |
||||
|
风险人员数 |
||||
|
</div> |
||||
|
<div class="num"><span class="green">112</span> 人</div> |
||||
|
</div> |
||||
|
<div class="number-item"> |
||||
|
<div class="txt"> |
||||
|
累计回访 <br> |
||||
|
次数 |
||||
|
</div> |
||||
|
<div class="num"><span class="purple">112</span> 人</div> |
||||
|
</div> |
||||
|
<div class="number-item"> |
||||
|
<div class="txt"> |
||||
|
累计回访消除 <br> |
||||
|
风险人员数 |
||||
|
</div> |
||||
|
<div class="num"><span class="blue">112</span> 人</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
name: "RiskStatistics" |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.number-list { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
margin: 40px 0; |
||||
|
padding: 0 15px 0 8px; |
||||
|
|
||||
|
.number-item { |
||||
|
display: flex; |
||||
|
|
||||
|
.image { |
||||
|
width: 98px; |
||||
|
height: 70px; |
||||
|
} |
||||
|
|
||||
|
.txt { |
||||
|
font-size: 16px; |
||||
|
font-weight: 400; |
||||
|
color: #FFFFFF; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 22px; |
||||
|
} |
||||
|
|
||||
|
.num { |
||||
|
font-size: 14px; |
||||
|
font-weight: 500; |
||||
|
color: #A3B9DA; |
||||
|
|
||||
|
span { |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
font-style: italic; |
||||
|
color: #3AB7FF; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.number-list2 { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
padding: 0 30px 39px; |
||||
|
.number-item { |
||||
|
.txt { |
||||
|
font-size: 14px; |
||||
|
font-weight: 400; |
||||
|
color: #A3B9DA; |
||||
|
line-height: 24px; |
||||
|
margin-bottom: 16px; |
||||
|
} |
||||
|
.num { |
||||
|
font-size: 14px; |
||||
|
font-weight: 500; |
||||
|
color: #A3B9DA; |
||||
|
|
||||
|
span { |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
font-style: italic; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.grey { |
||||
|
color: #78C4F3; |
||||
|
} |
||||
|
.green { |
||||
|
color: #08EBAE; |
||||
|
} |
||||
|
.purple { |
||||
|
color: #A761FD; |
||||
|
} |
||||
|
.blue { |
||||
|
color: #356EFF; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,249 @@ |
|||||
|
<template> |
||||
|
<div class="self-trend"> |
||||
|
<div class="screen"> |
||||
|
<Tabs v-model="trendType" :list="trendTypeList" @changeVal="trendTypeChange"/> |
||||
|
</div> |
||||
|
<div id="selfTrendChart" style="height: 243px;"></div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import * as echarts from "echarts"; |
||||
|
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "SelfTrend", |
||||
|
components: {Tabs}, |
||||
|
data() { |
||||
|
return { |
||||
|
trendType: 1, |
||||
|
trendTypeList: [{ |
||||
|
label: '不满意事项走势', |
||||
|
value: 1 |
||||
|
|
||||
|
}, { |
||||
|
label: '社区自查结果走势', |
||||
|
value: 2 |
||||
|
|
||||
|
}], |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initCharts() |
||||
|
}, |
||||
|
methods: { |
||||
|
trendTypeChange(data) { |
||||
|
|
||||
|
}, |
||||
|
initCharts() { |
||||
|
let div = document.getElementById('selfTrendChart'); |
||||
|
this.myChart = echarts.init(div); |
||||
|
|
||||
|
let xData = ['2022-10', '2022-11', '2022-12', '2023-01', '2023-02', '2023-03', '2023-04', '2023-05', '2023-06', '2023-07', '2023-08', '2023-09']; |
||||
|
let tq1 = [12, 20, 30, 60, 49, 18, 90, 48, 39, 30, 27, 40, 48, 39, 27, 49]; |
||||
|
let tq2 = [10, 50, 50, 27, 49, 58, 80, 80, 19, 60, 30, 30, 49, 18, 90, 20]; |
||||
|
let tq3 = [300, 90, 48, 39, 30, 27, 49, 18, 90, 39, 27, 49, 30, 100, 49, 100]; |
||||
|
const max = Math.max(...tq1, ...tq2, ...tq3) |
||||
|
|
||||
|
let barArray = new Array(xData.length).fill((parseInt(max / 100) + 1) * 100) |
||||
|
var option = { |
||||
|
title: { |
||||
|
show: false, |
||||
|
text: '', |
||||
|
x: 'center', |
||||
|
top: '15px', |
||||
|
textStyle: { |
||||
|
color: '#333333', |
||||
|
fontWeight: 500, |
||||
|
fontSize: 18, |
||||
|
}, |
||||
|
}, |
||||
|
|
||||
|
legend: { |
||||
|
// icon: 'circle', |
||||
|
data: ['12345投诉事件数', '省调查不满意数', '社区自查不满意数'], |
||||
|
itemGap: 20, |
||||
|
itemWidth: 16, |
||||
|
itemHeight: 6, |
||||
|
x: 'right', |
||||
|
top: '3%', |
||||
|
textStyle: { |
||||
|
color: '#fff', |
||||
|
fontSize: 14, |
||||
|
// padding:[0, 10, 0, 10], |
||||
|
} |
||||
|
}, |
||||
|
grid: { |
||||
|
top: '18%', |
||||
|
left: '2%', |
||||
|
right: '4%', |
||||
|
bottom: '8%', |
||||
|
containLabel: true |
||||
|
}, |
||||
|
xAxis: [ |
||||
|
{ |
||||
|
type: 'category', |
||||
|
axisTick: { |
||||
|
show: false, |
||||
|
}, |
||||
|
splitLine: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLine: { |
||||
|
lineStyle: { |
||||
|
color: '#323c41' |
||||
|
} |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
interval: 0, |
||||
|
align: 'center', |
||||
|
rotate: '40', |
||||
|
margin: '25', |
||||
|
textStyle: { |
||||
|
fontSize: 12, |
||||
|
color: '#A3B9DA' |
||||
|
} |
||||
|
}, |
||||
|
boundaryGap: true, |
||||
|
data: xData, |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
yAxis: [ |
||||
|
{ |
||||
|
type: 'value', |
||||
|
name: '单位:人', |
||||
|
nameLocation: 'end', |
||||
|
splitLine: { |
||||
|
show: true, |
||||
|
lineStyle: { |
||||
|
color: 'rgba(4,187,255,0.18)', |
||||
|
type: 'dashed' |
||||
|
}, |
||||
|
}, |
||||
|
nameTextStyle: { |
||||
|
color: '#A3B9DA', |
||||
|
textStyle: { |
||||
|
fontSize: 12 |
||||
|
}, |
||||
|
align: 'center' |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
show: true, |
||||
|
color: '#A3B9DA', |
||||
|
textStyle: { |
||||
|
fontSize: 12 |
||||
|
} |
||||
|
}, |
||||
|
axisTick: { |
||||
|
show: false |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
], |
||||
|
series: [ |
||||
|
{ |
||||
|
name: '12345投诉事件数', |
||||
|
type: 'line', |
||||
|
showAllSymbol: true, |
||||
|
symbol: 'circle', |
||||
|
symbolSize: 6, |
||||
|
lineStyle: { |
||||
|
normal: { |
||||
|
color: '#F95619', |
||||
|
}, |
||||
|
}, |
||||
|
label: { |
||||
|
show: false, |
||||
|
position: 'top', |
||||
|
textStyle: { |
||||
|
color: '#F95619', |
||||
|
}, |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
color: '#F95619', |
||||
|
borderColor: '#F95619', |
||||
|
borderWidth: 2, |
||||
|
}, |
||||
|
data: tq1, |
||||
|
}, |
||||
|
{ |
||||
|
name: '省调查不满意数', |
||||
|
type: 'line', |
||||
|
showAllSymbol: true, |
||||
|
symbol: 'circle', |
||||
|
symbolSize: 6, |
||||
|
lineStyle: { |
||||
|
normal: { |
||||
|
color: '#F9E066', |
||||
|
}, |
||||
|
}, |
||||
|
label: { |
||||
|
show: false, |
||||
|
position: 'top', |
||||
|
textStyle: { |
||||
|
color: '#F9E066', |
||||
|
}, |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
color: '#F9E066', |
||||
|
borderColor: '#F9E066', |
||||
|
borderWidth: 2, |
||||
|
}, |
||||
|
data: tq2, //data.values |
||||
|
}, |
||||
|
{ |
||||
|
name: '社区自查不满意数', |
||||
|
type: 'line', |
||||
|
yIndex: 0, |
||||
|
showAllSymbol: true, |
||||
|
symbol: 'circle', |
||||
|
symbolSize: 6, |
||||
|
lineStyle: { |
||||
|
normal: { |
||||
|
color: '#25F0F6', |
||||
|
}, |
||||
|
}, |
||||
|
label: { |
||||
|
show: false, |
||||
|
position: 'top', |
||||
|
textStyle: { |
||||
|
color: '#25F0F6', |
||||
|
}, |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
color: '#25F0F6', |
||||
|
borderColor: '#25F0F6', |
||||
|
borderWidth: 2, |
||||
|
}, |
||||
|
data: tq3, //data.values |
||||
|
}, |
||||
|
{ |
||||
|
// name: '占位背景', |
||||
|
type: 'bar', |
||||
|
itemStyle: { |
||||
|
normal: { |
||||
|
show: true, |
||||
|
color: 'rgba(89,130,194,0.12)', |
||||
|
}, |
||||
|
}, |
||||
|
silent: true, |
||||
|
barWidth: '50%', |
||||
|
barGap: 0, |
||||
|
data: barArray, |
||||
|
animation: false, |
||||
|
}, |
||||
|
], |
||||
|
}; |
||||
|
this.myChart.setOption(option); |
||||
|
window.addEventListener("resize", () => this.myChart.resize()); |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.self-trend { |
||||
|
padding: 16px 16px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,235 @@ |
|||||
|
<template> |
||||
|
<div class="types-dissatisfaction"> |
||||
|
<div class="screen"> |
||||
|
<Tabs v-model="resultType" :list="resultTypeList" @changeVal="resultTypeChange"/> |
||||
|
<el-select v-model="typeCondition" placeholder="请选择" class="select"> |
||||
|
<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: 542px;"></div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import * as echarts from "echarts"; |
||||
|
import Tabs from "@/views/dataBoard/satisfactionEval/components/Tabs/index.vue"; |
||||
|
|
||||
|
export default { |
||||
|
name: "TypesOfDissatisfaction", |
||||
|
components: {Tabs}, |
||||
|
data() { |
||||
|
return { |
||||
|
resultType: 1, |
||||
|
resultTypeList: [{ |
||||
|
label: ' 按省调查/社区自查结果', |
||||
|
value: 1 |
||||
|
|
||||
|
}, { |
||||
|
label: '按12345热线投诉结果', |
||||
|
value: 2 |
||||
|
|
||||
|
}], |
||||
|
typeCondition: 1, |
||||
|
typeConditionList: [ |
||||
|
{ |
||||
|
label: '本月', |
||||
|
value: 1 |
||||
|
}, { |
||||
|
label: '上月', |
||||
|
value: 2 |
||||
|
}, { |
||||
|
label: '近3月', |
||||
|
value: 3 |
||||
|
}, { |
||||
|
label: '近半年', |
||||
|
value: 4 |
||||
|
}, { |
||||
|
label: '近1年', |
||||
|
value: 5 |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.initCharts() |
||||
|
}, |
||||
|
methods: { |
||||
|
resultTypeChange(data) { |
||||
|
|
||||
|
}, |
||||
|
initCharts() { |
||||
|
let div = document.getElementById('typeConditionChart'); |
||||
|
this.myChart = echarts.init(div); |
||||
|
var dataname = ['老有所养', '社会治安', '生态环境', '体育设施', '社会救助', '文化设施', '基础教育', '病有所医'] |
||||
|
var datamax = [20, 20, 20, 20, 20, 20, 20, 20] |
||||
|
var datavaule = [10, 16, 18, 15, 12, 18, 18, 18] |
||||
|
var datavaule2 = [12, 17, 20, 16, 13, 19, 19, 19] |
||||
|
var indicator = [] |
||||
|
for (var i = 0; i < dataname.length; i++) { |
||||
|
indicator.push({ |
||||
|
name: dataname[i], |
||||
|
max: datamax[i], |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
function contains(arrays, obj) { |
||||
|
var i = arrays.length; |
||||
|
while (i--) { |
||||
|
if (arrays[i] === obj) { |
||||
|
return i; |
||||
|
} |
||||
|
} |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
var option = { |
||||
|
tooltip: { |
||||
|
show: false, |
||||
|
trigger: "item", |
||||
|
}, |
||||
|
legend: { |
||||
|
show: true, |
||||
|
textStyle: { |
||||
|
color: '#ffffff', |
||||
|
rich: { |
||||
|
name: { |
||||
|
fontSize: 14, |
||||
|
lineHeight: 22, |
||||
|
padding: [24, 0, 0, 0] |
||||
|
}, |
||||
|
} |
||||
|
}, |
||||
|
itemWidth: 6, |
||||
|
itemHeight: 6, |
||||
|
y: 0, |
||||
|
x: 'right', |
||||
|
formatter: name => { |
||||
|
return `{name|${name}}` |
||||
|
}, |
||||
|
data: ['省满意度调查\n各项不满意人数', '社区满意度自查\n各项不满意人数'], |
||||
|
}, |
||||
|
radar: { |
||||
|
center: ["50%", "60%"], |
||||
|
radius: "50%", |
||||
|
startAngle: 90, |
||||
|
splitNumber: 5, |
||||
|
/* splitArea: { |
||||
|
areaStyle: { |
||||
|
color: [ |
||||
|
'rgba(0,96,208, 0.1)', 'rgba(0,96,208, 0.2)', |
||||
|
'rgba(0,96,208, 0.4)', 'rgba(0,96,208, 0.6)', |
||||
|
'rgba(0,96,208, 0.8)', 'rgba(0,96,208, 1)' |
||||
|
].reverse() |
||||
|
} |
||||
|
},*/ |
||||
|
splitArea: { |
||||
|
areaStyle: { |
||||
|
color: 'transparent' |
||||
|
} |
||||
|
}, |
||||
|
axisLabel: { |
||||
|
show: false, |
||||
|
}, |
||||
|
axisLine: { |
||||
|
show: true, |
||||
|
lineStyle: { |
||||
|
color: "transparent" |
||||
|
} |
||||
|
}, |
||||
|
splitLine: { |
||||
|
show: true, |
||||
|
lineStyle: { |
||||
|
color: "#527AA8" |
||||
|
} |
||||
|
}, |
||||
|
name: { |
||||
|
textStyle: { |
||||
|
color: '#ffffff', |
||||
|
fontSize: '16', |
||||
|
borderRadius: 3, |
||||
|
padding: [3, 5] |
||||
|
} |
||||
|
}, |
||||
|
indicator: indicator |
||||
|
}, |
||||
|
|
||||
|
series: [{ |
||||
|
name: "省满意度调查\n各项不满意人数", |
||||
|
type: "radar", |
||||
|
symbol: "circle", |
||||
|
symbolSize: 7, |
||||
|
areaStyle: { |
||||
|
normal: { |
||||
|
color: 'rgba(58,128,231,0.36)', |
||||
|
} |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
color: '#3A80E7', |
||||
|
borderColor: '#3AB7FF', |
||||
|
borderWidth: 1, |
||||
|
}, |
||||
|
lineStyle: { |
||||
|
normal: { |
||||
|
color: "#3AB7FF", |
||||
|
width: 2 |
||||
|
} |
||||
|
}, |
||||
|
data: [datavaule] |
||||
|
}, { |
||||
|
name: "社区满意度自查\n各项不满意人数", |
||||
|
type: "radar", |
||||
|
symbol: "circle", |
||||
|
symbolSize: 7, |
||||
|
areaStyle: { |
||||
|
normal: { |
||||
|
color: 'rgba(170, 216, 255, 0)', |
||||
|
} |
||||
|
}, |
||||
|
itemStyle: { |
||||
|
color: '#EB8E16', |
||||
|
borderColor: '#EF9700', |
||||
|
borderWidth: 1, |
||||
|
}, |
||||
|
lineStyle: { |
||||
|
normal: { |
||||
|
color: "#EF9700", |
||||
|
width: 2 |
||||
|
} |
||||
|
}, |
||||
|
data: [datavaule2] |
||||
|
}] |
||||
|
}; |
||||
|
this.myChart.setOption(option); |
||||
|
window.addEventListener("resize", () => this.myChart.resize()); |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="scss"> |
||||
|
.types-dissatisfaction { |
||||
|
padding: 16px 32px; |
||||
|
} |
||||
|
.screen { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
/deep/ .el-input__inner { |
||||
|
width: 90px!important; |
||||
|
height: 24px!important; |
||||
|
background: #021C49!important; |
||||
|
border: 1px solid #125AAA!important; |
||||
|
border-radius: 12px!important; |
||||
|
color: #A0CDFF; |
||||
|
} |
||||
|
/deep/ .el-input__icon { |
||||
|
line-height: 24px!important; |
||||
|
color: #A0CDFF; |
||||
|
} |
||||
|
} |
||||
|
</style> |