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.
844 lines
17 KiB
844 lines
17 KiB
$(function() {
|
|
echarts_1();
|
|
echarts_2();
|
|
c.init();
|
|
echarts_3();
|
|
// echarts_4();
|
|
// echarts_5();
|
|
// echarts_6();
|
|
})
|
|
|
|
function echarts_1() {
|
|
// 活动类别分析
|
|
var myChart = echarts.init(document.getElementById('echarts_1'));
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'item',
|
|
formatter: "{a} <br/>{b}: {c}条",
|
|
},
|
|
series: [{
|
|
name: '活动类别分析',
|
|
type: 'pie',
|
|
radius: '75%',
|
|
center: ['50%', '50%'],
|
|
zlevel: 3,
|
|
color: ['#c968e1', '#0d83fb', '#00ffff', '#ebc14f', '#fb802e', '#7f3eb9', '#2adbac'],
|
|
data: [{
|
|
value: 42,
|
|
name: '扶贫济困'
|
|
},
|
|
{
|
|
value: 42,
|
|
name: '医疗卫生'
|
|
},
|
|
{
|
|
value: 76,
|
|
name: '妇女儿童服务'
|
|
},
|
|
{
|
|
value: 12,
|
|
name: '其他'
|
|
},
|
|
{
|
|
value: 36,
|
|
name: '社区治理'
|
|
},
|
|
{
|
|
value: 36,
|
|
name: '残疾人服务'
|
|
},
|
|
{
|
|
value: 76,
|
|
name: '养老服务'
|
|
}
|
|
],
|
|
label: {
|
|
padding: [18, 0, 0, 0],
|
|
formatter: [
|
|
'{c|}',
|
|
'{a|{c}条}',
|
|
'{b|{b}}'
|
|
].join('\n'),
|
|
rich: {
|
|
|
|
c: {
|
|
width: 4,
|
|
height: 4,
|
|
padding: [0, -4],
|
|
marginBottom: 50,
|
|
borderRadius: 4,
|
|
lineHeight: 0,
|
|
backgroundColor: 'auto'
|
|
},
|
|
a: {
|
|
padding: [-30, 0, 0, 5],
|
|
color: "#02f7f4",
|
|
fontSize: 20,
|
|
align: "center",
|
|
|
|
},
|
|
b: {
|
|
padding: [-10, 0, 0, 5],
|
|
color: "#fff",
|
|
fontSize: 14,
|
|
align: "center",
|
|
lineHeight: 18,
|
|
},
|
|
|
|
},
|
|
},
|
|
labelLine: {
|
|
show: true,
|
|
length: 15,
|
|
length2: 32,
|
|
},
|
|
emphasis: {
|
|
itemStyle: {
|
|
shadowBlur: 0,
|
|
shadowOffsetX: 0,
|
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
}
|
|
},
|
|
|
|
}
|
|
|
|
, {
|
|
name: '外边框',
|
|
type: 'pie',
|
|
zlevel: 1,
|
|
radius: ['90%', '90%'], //边框大小
|
|
center: ['50%', '50%'], //边框位置
|
|
cursor: 'default',
|
|
emphasis: {
|
|
scale: false
|
|
},
|
|
tooltip: {
|
|
show: false
|
|
},
|
|
data: [{
|
|
value: 1,
|
|
label: {
|
|
show: false
|
|
},
|
|
itemStyle: {
|
|
borderWidth: 1, //设置边框粗细
|
|
borderColor: 'rgba(29,176,226,.5)' //边框颜色
|
|
}
|
|
}],
|
|
},
|
|
{
|
|
name: '内边框',
|
|
type: 'pie',
|
|
zlevel: 3,
|
|
radius: ['0', '25%'], //边框大小
|
|
center: ['50%', '50%'], //边框位置
|
|
cursor: 'default',
|
|
emphasis: {
|
|
scale: false
|
|
},
|
|
tooltip: {
|
|
show: false
|
|
},
|
|
data: [{
|
|
value: 1,
|
|
label: {
|
|
show: false
|
|
},
|
|
itemStyle: {
|
|
color: '#fff'
|
|
}
|
|
}],
|
|
},
|
|
{
|
|
type: 'pie',
|
|
zlevel: 4,
|
|
emphasis: {
|
|
scale: false
|
|
},
|
|
tooltip: {
|
|
show: false
|
|
},
|
|
radius: [0, '10%'],
|
|
data: [{
|
|
value: 1,
|
|
itemStyle: {
|
|
color: '#f0f7ff'
|
|
},
|
|
label: {
|
|
show: false
|
|
}
|
|
}]
|
|
},
|
|
]
|
|
};
|
|
|
|
myChart.setOption(option);
|
|
window.addEventListener("resize", function() {
|
|
myChart.resize();
|
|
});
|
|
}
|
|
|
|
function echarts_2() {
|
|
// 需求类别分析
|
|
var myChart = echarts.init(document.getElementById('echarts_2'));
|
|
var data1 = [15, 22, 45, 18, 22]; //招标
|
|
var data2 = [20, 22, 28, 20, 25]; //众筹
|
|
var data3 = [20, 20, 20, 20, 20]; //指派
|
|
// 总计
|
|
var total_data = function() {
|
|
var datas = [];
|
|
for (var i = 0; i < data1.length; i++) {
|
|
datas.push(data1[i] + data2[2] + data3[i]);
|
|
}
|
|
return datas;
|
|
}();
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'axis',
|
|
},
|
|
grid: {
|
|
height: "58%",
|
|
top: '5%',
|
|
},
|
|
legend: {
|
|
show: true,
|
|
align: 'auto',
|
|
data: ['招标', '众筹', '指派'],
|
|
bottom: '1%',
|
|
itemWidth: 13,
|
|
itemHeight: 13,
|
|
textStyle: {
|
|
color: "#fff",
|
|
fontSize: 12,
|
|
}
|
|
},
|
|
xAxis: [{
|
|
type: 'category',
|
|
data: ['基本共工服务', '社会管理服务', '行业管理与协调性服务', '技术性服务', '政府履职所需的辅助性事项'],
|
|
splitLine: {
|
|
show: false,
|
|
lineStyle: {
|
|
color: "rgba(95,200,225,.5)",
|
|
type: 'solid',
|
|
}
|
|
},
|
|
axisTick: {
|
|
show: false,
|
|
alignWithLabel: true,
|
|
},
|
|
axisLine: {
|
|
lineStyle: {
|
|
color: "rgba(95,200,225,.5)",
|
|
type: 'solid',
|
|
}
|
|
},
|
|
boundaryGap: true,
|
|
axisLabel: {
|
|
color: '#fff',
|
|
fontSize: 12,
|
|
lineHeight: 14,
|
|
show: true,
|
|
interval: '0',
|
|
formatter: function(params) {
|
|
var newParamsName = ""; // 最终拼接成的字符串
|
|
var paramsNameNumber = params.length; // 实际标签的个数
|
|
var provideNumber = 4; // 每行能显示的字的个数
|
|
var rowNumber = Math.ceil(paramsNameNumber / provideNumber); // 换行的话,需要显示几行,向上取整
|
|
/**
|
|
* 判断标签的个数是否大于规定的个数, 如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签
|
|
*/
|
|
// 条件等同于rowNumber>1
|
|
if (paramsNameNumber > provideNumber) {
|
|
/** 循环每一行,p表示行 */
|
|
for (var p = 0; p < rowNumber; p++) {
|
|
var tempStr = ""; // 表示每一次截取的字符串
|
|
var start = p * provideNumber; // 开始截取的位置
|
|
var end = start + provideNumber; // 结束截取的位置
|
|
// 此处特殊处理最后一行的索引值
|
|
if (p == rowNumber - 1) {
|
|
// 最后一次不换行
|
|
tempStr = params.substring(start, paramsNameNumber);
|
|
} else {
|
|
// 每一次拼接字符串并换行
|
|
tempStr = params.substring(start, end) + "\n";
|
|
}
|
|
newParamsName += tempStr; // 最终拼成的字符串
|
|
}
|
|
|
|
} else {
|
|
// 将旧标签的值赋给新标签
|
|
newParamsName = params;
|
|
}
|
|
//将最终的字符串返回
|
|
return newParamsName
|
|
}
|
|
},
|
|
|
|
}],
|
|
yAxis: [{
|
|
type: "value",
|
|
show: true,
|
|
name: "人数",
|
|
nameTextStyle: {
|
|
color: "#b7efff",
|
|
fontSize: 14,
|
|
},
|
|
nameLocation: "end",
|
|
max: 100,
|
|
min: 0,
|
|
splitNumber: 5,
|
|
axisLabel: {
|
|
color: '#b7efff',
|
|
fontSize: 12,
|
|
},
|
|
splitLine: {
|
|
show: true,
|
|
lineStyle: {
|
|
color: "rgba(95,200,225,.5)",
|
|
type: 'dashed',
|
|
}
|
|
}
|
|
}],
|
|
series: [{
|
|
name: '招标',
|
|
type: "bar",
|
|
barWidth: 11,
|
|
stack: "需求人数",
|
|
data: data1,
|
|
itemStyle: {
|
|
color: '#1e6afa',
|
|
}
|
|
}, {
|
|
name: '众筹',
|
|
type: "bar",
|
|
barWidth: 11,
|
|
stack: "需求人数",
|
|
data: data2,
|
|
itemStyle: {
|
|
color: '#2d9aff',
|
|
}
|
|
}, {
|
|
name: '指派',
|
|
type: "bar",
|
|
stack: "需求人数",
|
|
barWidth: 11,
|
|
data: data3,
|
|
itemStyle: {
|
|
color: '#00ffff',
|
|
barBorderRadius: [11, 11, 0, 0]
|
|
}
|
|
}, {
|
|
name: '总计',
|
|
type: "bar",
|
|
barWidth: 11,
|
|
stack: "需求人数",
|
|
label: {
|
|
show: true,
|
|
offset: [0, 0],
|
|
position: 'insideBottom',
|
|
formatter: '{c}',
|
|
textStyle: {
|
|
color: '#fff',
|
|
}
|
|
},
|
|
itemStyle: {
|
|
color: "rgba(128,128,128,0)",
|
|
},
|
|
data: total_data,
|
|
markPoint: {
|
|
data: [{
|
|
type: 'max',
|
|
name: "最大值",
|
|
symbol: "circle",
|
|
itemStyle: {
|
|
color: "rgba(225, 255, 255, 1)",
|
|
}
|
|
}],
|
|
symbol: "circle",
|
|
animation: true,
|
|
animationEasing: "bounceOut",
|
|
animationDurationUpdate: 1040,
|
|
symbolSize: 33,
|
|
itemStyle: {
|
|
color: "rgba(224, 40, 40, 1)",
|
|
borderWidth: 4,
|
|
borderType: "solid",
|
|
width: 3,
|
|
height: 3,
|
|
borderDashOffset: 4,
|
|
borderColor: "rgba(58, 51, 51, 1)",
|
|
borderCap: "square",
|
|
borderJoin: "round",
|
|
borderMiterLimit: 37,
|
|
shadowBlur: 7,
|
|
shadowColor: "rgba(225, 214, 214, 1)",
|
|
shadowOffsetX: 0.5,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}]
|
|
};
|
|
myChart.setOption(option);
|
|
window.addEventListener("resize", function() {
|
|
myChart.resize();
|
|
});
|
|
}
|
|
|
|
function echarts_3() {
|
|
// 服务类别分析
|
|
var myChart = echarts.init(document.getElementById('echarts_3'));
|
|
var option = {
|
|
tooltip: {
|
|
trigger: 'item',
|
|
formatter: "{a} <br/>{b}: {c}条",
|
|
},
|
|
series: [{
|
|
name: '服务类别分析',
|
|
type: 'pie',
|
|
radius: '75%',
|
|
center: ['50%', '50%'],
|
|
zlevel: 2,
|
|
color: ['#c968e1', '#0d83fb', '#00ffff', '#ebc14f', '#fb802e', '#7f3eb9', '#2adbac'],
|
|
data: [{
|
|
value: 42,
|
|
name: '扶贫济困'
|
|
},
|
|
{
|
|
value: 42,
|
|
name: '医疗卫生'
|
|
},
|
|
{
|
|
value: 76,
|
|
name: '妇女儿童服务'
|
|
},
|
|
{
|
|
value: 12,
|
|
name: '其他'
|
|
},
|
|
{
|
|
value: 36,
|
|
name: '社区治理'
|
|
},
|
|
{
|
|
value: 36,
|
|
name: '残疾人服务'
|
|
},
|
|
{
|
|
value: 76,
|
|
name: '养老服务'
|
|
}
|
|
],
|
|
label: {
|
|
padding: [18, 0, 0, 0],
|
|
formatter: [
|
|
'{c|}',
|
|
'{a|{c}条}',
|
|
'{b|{b}}'
|
|
].join('\n'),
|
|
rich: {
|
|
|
|
c: {
|
|
width: 4,
|
|
height: 4,
|
|
padding: [0, -4],
|
|
marginBottom: 50,
|
|
borderRadius: 4,
|
|
lineHeight: 0,
|
|
backgroundColor: 'auto'
|
|
},
|
|
a: {
|
|
padding: [-30, 0, 0, 5],
|
|
color: "#02f7f4",
|
|
fontSize: 20,
|
|
align: "center",
|
|
|
|
},
|
|
b: {
|
|
padding: [-10, 0, 0, 5],
|
|
color: "#fff",
|
|
fontSize: 14,
|
|
align: "center",
|
|
lineHeight: 18,
|
|
},
|
|
|
|
},
|
|
},
|
|
labelLine: {
|
|
show: true,
|
|
length: 15,
|
|
length2: 32,
|
|
},
|
|
emphasis: {
|
|
itemStyle: {
|
|
shadowBlur: 0,
|
|
shadowOffsetX: 0,
|
|
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
}
|
|
},
|
|
|
|
},
|
|
{
|
|
name: '内边框',
|
|
type: 'pie',
|
|
zlevel: 3,
|
|
radius: ['0', '60%'], //边框大小
|
|
center: ['50%', '50%'], //边框位置
|
|
cursor: 'default',
|
|
emphasis: {
|
|
scale: false,
|
|
disabled: true
|
|
},
|
|
tooltip: {
|
|
show: false
|
|
},
|
|
data: [{
|
|
value: 1,
|
|
label: {
|
|
show: false
|
|
},
|
|
itemStyle: {
|
|
color: '#283fd6'
|
|
}
|
|
}],
|
|
}
|
|
]
|
|
};
|
|
|
|
myChart.setOption(option);
|
|
window.addEventListener("resize", function() {
|
|
myChart.resize();
|
|
});
|
|
}
|
|
|
|
var chartDom = document.getElementById('map');
|
|
var myChart = echarts.init(chartDom);
|
|
var option;
|
|
var clickLevel = 0;
|
|
|
|
var c = {
|
|
init() {
|
|
c.drawMap();
|
|
myChart.on('click', (params) => {
|
|
console.log(myChart)
|
|
if (params.componentSubType == 'map') {
|
|
myChart.clear();
|
|
c.drawMap(params.name, params.data.level)
|
|
} else if (params.componentSubType == 'scatter' || params.componentSubType ==
|
|
'effectScatter') {
|
|
console.log(params.componentSubType, "click")
|
|
this.$emit('pointClick', params)
|
|
}
|
|
})
|
|
},
|
|
|
|
drawMap(name, level) {
|
|
myChart.showLoading();
|
|
var url = "data/110.json";
|
|
|
|
if (name == '大兴区' || level == 2){
|
|
url = "data/110115.json";
|
|
var counterss = $(".counter");
|
|
counterss.each(function(){
|
|
var nums = $(this).attr("data-num")-15;
|
|
if($(this).hasClass('counterp')){
|
|
$(this).before("<p class='counter counterp' data-num='"+nums+"'>"+nums+"</p>")
|
|
}else if($(this).hasClass('counterb')){
|
|
$(this).before("<b class='counter counterb' data-num='"+nums+"'>"+nums+"</b>")
|
|
}else{
|
|
$(this).before("<span class='counter' data-num='"+nums+"'>"+nums+"</span>")
|
|
}
|
|
$(this).remove();
|
|
})
|
|
$('.counter').countUp({
|
|
delay: 50,
|
|
time: 1500
|
|
});
|
|
|
|
}
|
|
|
|
if (clickLevel == level && level == 2) {
|
|
myChart.hideLoading();
|
|
location.href = "/yiwanggongzhi/govern-show.html"
|
|
console.log(clickLevel)
|
|
return false;
|
|
} else
|
|
clickLevel = level
|
|
|
|
$.get(url, function(geoJson) {
|
|
if (level == 2) {
|
|
var countersss = $(".counter");
|
|
countersss.each(function(){
|
|
var nums = $(this).attr("data-num")-15;
|
|
if($(this).hasClass('counterp')){
|
|
$(this).before("<p class='counter counterp' data-num='"+nums+"'>"+nums+"</p>")
|
|
}else if($(this).hasClass('counterb')){
|
|
$(this).before("<b class='counter counterb' data-num='"+nums+"'>"+nums+"</b>")
|
|
}else{
|
|
$(this).before("<span class='counter' data-num='"+nums+"'>"+nums+"</span>")
|
|
}
|
|
$(this).remove();
|
|
|
|
})
|
|
$('.counter').countUp({
|
|
delay: 50,
|
|
time: 1500
|
|
});
|
|
|
|
const jsons = geoJson.features.filter(item => item.properties.name == name)
|
|
const mapJson = {
|
|
"type": "FeatureCollection",
|
|
"features": jsons
|
|
}
|
|
geoJson = mapJson;
|
|
}
|
|
|
|
myChart.hideLoading();
|
|
echarts.registerMap('DX', geoJson);
|
|
myChart.setOption(
|
|
(option = {
|
|
title: {
|
|
text: '',
|
|
},
|
|
tooltip: {
|
|
trigger: 'item',
|
|
formatter: '{b}'
|
|
},
|
|
toolbox: {
|
|
show: false,
|
|
orient: 'vertical',
|
|
left: 'right',
|
|
top: 'center',
|
|
feature: {
|
|
restore: {},
|
|
}
|
|
},
|
|
visualMap: {
|
|
min: 800,
|
|
max: 50000,
|
|
text: ['High', 'Low'],
|
|
realtime: false,
|
|
calculable: true,
|
|
inRange: {
|
|
color: ['rgba(117,68,177,0.9)', 'rgba(106,215,175,0.9)',
|
|
'rgba(223,127,64,0.9)'
|
|
],
|
|
},
|
|
show: false,
|
|
},
|
|
series: [{
|
|
name: '北京市大兴区',
|
|
type: 'map',
|
|
map: 'DX',
|
|
zoom: 1.2, //当前视角的缩放比例
|
|
roam: true, //是否开启平游或缩放
|
|
scaleLimit: {
|
|
min: 1,
|
|
max: 1.6
|
|
},
|
|
label: {
|
|
show: true
|
|
},
|
|
left: 'center',
|
|
top: 'center',
|
|
data: [{
|
|
name: '榆垡镇',
|
|
value: 10057.34,
|
|
level: 2
|
|
},
|
|
|
|
{
|
|
name: '黄村镇',
|
|
value: 20057.34,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '北臧村镇',
|
|
value: 15477.48,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '庞各庄镇',
|
|
value: 31686.1,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '礼贤镇',
|
|
value: 6992.6,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '魏善庄镇',
|
|
value: 44045.49,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '安定镇',
|
|
value: 40689.64,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '青云店镇',
|
|
value: 37659.78,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '长子营镇',
|
|
value: 45180.97,
|
|
level: 2
|
|
},
|
|
|
|
{
|
|
name: '采育镇',
|
|
value: 55204.26,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '西红门镇',
|
|
value: 21900.9,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '旧宫镇',
|
|
value: 4918.26,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '亦庄镇',
|
|
value: 5881.84,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '瀛海镇',
|
|
value: 4178.01,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '兴丰街道',
|
|
value: 2227.92,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '清源街道',
|
|
value: 2180.98,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '林校路街道',
|
|
value: 9172.94,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '观音寺街道',
|
|
value: 3368,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '天宫院街道',
|
|
value: 806.98,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '高米店街道',
|
|
value: 22706.98,
|
|
level: 2
|
|
},
|
|
{
|
|
name: '东城区',
|
|
value: 33106.98,
|
|
level: 1
|
|
|
|
},
|
|
{
|
|
name: '西城区',
|
|
value: 31306.98,
|
|
level: 1
|
|
|
|
},
|
|
{
|
|
name: '朝阳区',
|
|
value: 21706.98,
|
|
level: 1
|
|
|
|
},
|
|
{
|
|
name: '丰台区',
|
|
value: 14706.98,
|
|
level: 1
|
|
|
|
},
|
|
{
|
|
name: '石景山区',
|
|
value: 43706.98,
|
|
level: 1
|
|
|
|
},
|
|
{
|
|
name: '海淀区',
|
|
value: 23306.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '顺义区',
|
|
value: 12706.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '通州区',
|
|
value: 1506.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '大兴区',
|
|
value: 4706.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '房山区',
|
|
value: 3706.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '门头沟区',
|
|
value: 12806.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '昌平区',
|
|
value: 22606.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '平谷区',
|
|
value: 42306.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '密云区',
|
|
value: 30206.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '怀柔区',
|
|
value: 20706.98,
|
|
level: 1
|
|
|
|
}, {
|
|
name: '延庆区',
|
|
value: 10206.98,
|
|
level: 1
|
|
|
|
}
|
|
],
|
|
// 自定义名称映射
|
|
nameMap: {
|
|
|
|
}
|
|
}]
|
|
})
|
|
);
|
|
});
|
|
}
|
|
}
|