You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
371 lines
11 KiB
371 lines
11 KiB
import * as echarts from '../../../../ec-canvas/echarts';
|
|
import { satisfactionGroup, event12345Group } from "../../../../utils/statisticsApi";
|
|
|
|
var chart;
|
|
|
|
function initChart(canvas, width, height, dpr) {
|
|
chart = echarts.init(canvas, null, {
|
|
width: width,
|
|
height: height,
|
|
devicePixelRatio: dpr // 像素比
|
|
});
|
|
canvas.setChart(chart);
|
|
return chart;
|
|
}
|
|
|
|
const formatTime = date => {
|
|
const year = date.getFullYear()
|
|
const month = date.getMonth() + 1
|
|
const day = date.getDate()
|
|
return [year, month, day].map(formatNumber).join('-')
|
|
}
|
|
const formatNumber = n => {
|
|
n = n.toString()
|
|
return n[1] ? n : '0' + n
|
|
}
|
|
Component({
|
|
properties: {
|
|
typeCondition: {
|
|
type: Number,
|
|
value: 0,
|
|
observer(val) {
|
|
console.log(val, 11)
|
|
this.getData()
|
|
}
|
|
}
|
|
},
|
|
data: {
|
|
ec: {
|
|
lazyLoad: true
|
|
// onInit: initChart
|
|
},
|
|
tabList: [{
|
|
label: "按满意度调查/社区自查结果",
|
|
value: 1
|
|
}, {
|
|
label: '按12345热线投诉结果',
|
|
value: 2
|
|
}],
|
|
tabValue: 1
|
|
},
|
|
lifetimes: {
|
|
ready() {
|
|
this.getData()
|
|
}
|
|
},
|
|
methods: {
|
|
tabChange({ detail }) {
|
|
this.setData({
|
|
tabValue: this.data.tabList[detail].value
|
|
})
|
|
this.getData()
|
|
},
|
|
getData() {
|
|
this.selectComponent('#smyddcSqmydzc').init((canvas, width, height, dpr) => {
|
|
chart = echarts.init(canvas, null, {
|
|
width: width,
|
|
height: height,
|
|
devicePixelRatio: dpr // 像素比
|
|
});
|
|
canvas.setChart(chart);
|
|
let params = {
|
|
startTime: '',
|
|
endTime: ''
|
|
}
|
|
let now = new Date();
|
|
if (this.data.typeCondition === 0) {
|
|
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth(), 1))
|
|
}
|
|
if (this.data.typeCondition === 1) {
|
|
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 1));
|
|
}
|
|
if (this.data.typeCondition === 2) {
|
|
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 2));
|
|
}
|
|
if (this.data.typeCondition === 3) {
|
|
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 5));
|
|
}
|
|
if (this.data.typeCondition === 4) {
|
|
params.startTime = formatTime(new Date(now.getFullYear(), now.getMonth() - 11));
|
|
}
|
|
|
|
if (this.data.typeCondition === 1) {
|
|
params.endTime = formatTime(new Date(now.getFullYear(), now.getMonth(), 0, 23, 59, 59))
|
|
} else {
|
|
params.endTime = formatTime(new Date(now.getFullYear(), now.getMonth() + 1, 0, 23, 59, 59))
|
|
}
|
|
console.log(params)
|
|
console.log(this.data.tabValue, 'this.data.tabValue')
|
|
if (this.data.tabValue === 1) {
|
|
satisfactionGroup(params).then(({ data }) => {
|
|
var dataname = data.map(item => item.name)
|
|
var datavaule = data.map(item => item.blueNum ? item.blueNum : 0)
|
|
var datavaule2 = data.map(item => item.yellowNum ? item.yellowNum : 0)
|
|
var indicator = []
|
|
let max = Math.max(...datavaule, ...datavaule2)
|
|
console.log(max)
|
|
var datamax = new Array(datavaule.length).fill(max)
|
|
for (var i = 0; i < dataname.length; i++) {
|
|
indicator.push({
|
|
name: dataname[i],
|
|
max: datamax[i],
|
|
})
|
|
}
|
|
indicator[0].axisLabel = {show: true}
|
|
|
|
let legendName = ['省满意度调查各项\n不满意人数', '社区满意度自查各项\n不满意人数']
|
|
let series = [{
|
|
name: "省满意度调查各项\n不满意人数",
|
|
type: "radar",
|
|
symbol: "circle",
|
|
symbolSize: 0,
|
|
areaStyle: {
|
|
normal: {
|
|
color: 'rgba(58,128,231,0.36)',
|
|
}
|
|
},
|
|
axisLabel: {
|
|
show: true,
|
|
},
|
|
triggerEvent: true,
|
|
axisLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "transparent",
|
|
},
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "#527AA8",
|
|
},
|
|
},
|
|
itemStyle: {
|
|
color: '#3A80E7',
|
|
borderColor: '#3AB7FF',
|
|
borderWidth: 1,
|
|
},
|
|
lineStyle: {
|
|
normal: {
|
|
color: "#3AB7FF",
|
|
width: 2
|
|
}
|
|
},
|
|
data: [datavaule]
|
|
}, {
|
|
name: "社区满意度自查各项\n不满意人数",
|
|
type: "radar",
|
|
symbol: "circle",
|
|
symbolSize: 0,
|
|
areaStyle: {
|
|
normal: {
|
|
color: 'rgba(170, 216, 255, 0)',
|
|
}
|
|
},
|
|
itemStyle: {
|
|
color: '#EB8E16',
|
|
borderColor: '#EF9700',
|
|
borderWidth: 1,
|
|
},
|
|
lineStyle: {
|
|
normal: {
|
|
color: "#EF9700",
|
|
width: 2
|
|
}
|
|
},
|
|
data: [datavaule2]
|
|
}]
|
|
var option = {
|
|
tooltip: {
|
|
show: true,
|
|
trigger: "item",
|
|
textStyle: {
|
|
color: '#000',
|
|
fontSize: 14
|
|
},
|
|
formatter(params) {
|
|
// console.log(params)
|
|
if (params.name === '') {
|
|
return '';
|
|
}
|
|
return `${params.name} : ${params.percent}%`;
|
|
},
|
|
},
|
|
legend: {
|
|
show: true,
|
|
textStyle: {
|
|
color: '#999999',
|
|
rich: {
|
|
name: {
|
|
fontSize: 14,
|
|
lineHeight: 19,
|
|
padding: [20, 0, 0, 0]
|
|
},
|
|
}
|
|
},
|
|
itemWidth: 6,
|
|
itemHeight: 6,
|
|
y: 'bottom',
|
|
x: 'center',
|
|
formatter: name => {
|
|
return `{name|${name}}`
|
|
},
|
|
data: legendName,
|
|
},
|
|
radar: {
|
|
center: ["50%", "40%"],
|
|
radius: "50%",
|
|
startAngle: 90,
|
|
splitNumber: 5,
|
|
splitArea: {
|
|
areaStyle: {
|
|
color: 'transparent'
|
|
}
|
|
},
|
|
name: {
|
|
textStyle: {
|
|
color: '#333333',
|
|
fontSize: 14,
|
|
borderRadius: 3,
|
|
}
|
|
},
|
|
indicator: indicator
|
|
},
|
|
axisLabel: {
|
|
show: true,
|
|
},
|
|
axisLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "rgba(226,226,226,0.28)"
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "rgba(226,226,226,0.61)"
|
|
}
|
|
},
|
|
series
|
|
};
|
|
chart.setOption(option, true);
|
|
})
|
|
} else {
|
|
event12345Group().then(({ data }) => {
|
|
var dataname = data.map(item => item.name)
|
|
var datavaule = data.map(item => item.blueNum ? item.blueNum : 0)
|
|
var datavaule2 = data.map(item => item.yellowNum ? item.yellowNum : 0)
|
|
var indicator = []
|
|
let max = Math.max(...datavaule, ...datavaule2)
|
|
console.log(max)
|
|
var datamax = new Array(datavaule.length).fill(max)
|
|
for (var i = 0; i < dataname.length; i++) {
|
|
indicator.push({
|
|
name: datavaule[i] + '\n' + dataname[i],
|
|
max: datamax[i],
|
|
})
|
|
}
|
|
let legendName = ['12345热线事件\n上报人数']
|
|
let series = [{
|
|
name: "12345热线事件\n上报人数",
|
|
type: "radar",
|
|
symbol: "circle",
|
|
symbolSize: 0,
|
|
areaStyle: {
|
|
normal: {
|
|
color: 'rgba(58,128,231,0.36)',
|
|
}
|
|
},
|
|
itemStyle: {
|
|
color: '#3A80E7',
|
|
borderColor: '#3AB7FF',
|
|
borderWidth: 1,
|
|
},
|
|
lineStyle: {
|
|
normal: {
|
|
color: "#3AB7FF",
|
|
width: 2
|
|
}
|
|
},
|
|
data: [datavaule]
|
|
},]
|
|
var option = {
|
|
tooltip: {
|
|
show: true,
|
|
textStyle: {
|
|
color: '#fff',
|
|
fontSize: 14
|
|
},
|
|
formatter(params) {
|
|
// console.log(params)
|
|
if (params.name === '') {
|
|
return '';
|
|
}
|
|
return `${params.name} : ${params.percent}%`;
|
|
},
|
|
},
|
|
legend: {
|
|
show: true,
|
|
textStyle: {
|
|
color: '#999999',
|
|
rich: {
|
|
name: {
|
|
fontSize: 14,
|
|
lineHeight: 19,
|
|
padding: [20, 0, 0, 0]
|
|
},
|
|
}
|
|
},
|
|
itemWidth: 6,
|
|
itemHeight: 6,
|
|
y: 'bottom',
|
|
x: 'center',
|
|
formatter: name => {
|
|
return `{name|${name}}`
|
|
},
|
|
data: legendName,
|
|
},
|
|
radar: {
|
|
center: ["50%", "40%"],
|
|
radius: "50%",
|
|
startAngle: 90,
|
|
splitNumber: 5,
|
|
splitArea: {
|
|
areaStyle: {
|
|
color: 'transparent'
|
|
}
|
|
},
|
|
axisLabel: {
|
|
show: false,
|
|
},
|
|
axisLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "rgba(226,226,226,0.28)"
|
|
}
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "rgba(226,226,226,0.61)"
|
|
}
|
|
},
|
|
name: {
|
|
textStyle: {
|
|
color: '#333333',
|
|
fontSize: 14,
|
|
borderRadius: 3,
|
|
}
|
|
},
|
|
indicator: indicator
|
|
},
|
|
series
|
|
};
|
|
chart.setOption(option, true);
|
|
})
|
|
}
|
|
return chart;
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|