highcharts
from django.shortcuts import render, redirect,HttpResponse from app01 import models from rbac.service import initial_permission import datetime import json def report(request): if request.permission_code == "LOOK": if request.method == "GET": return render(request,'report.html') else: from django.db.models import Count # 保证昵称不重名才正确 result = models.Order.objects.filter(status=3).values_list("processor__nickname").annotate(ct=Count("id")) ymd_list = models.Order.objects.filter(status=3).extra( select={'ymd': "strftime('%%s',strftime('%%Y-%%m-%%d',ptime))"}).values('processor_id', 'processor__nickname', 'ymd').annotate(ct=Count('id')) ymd_dict = {} for row in ymd_list: key = row['processor_id'] if key in ymd_dict: ymd_dict[key]['data'].append([float(row['ymd']) * 1000, row['ct']]) else: ymd_dict[key] = {'name': row['processor__nickname'], 'data': [[float(row['ymd']) * 1000, row['ct']], ]} ret = [] for item in result: ret.append(list(item)) response = { 'pie': ret, 'zhexian': list(ymd_dict.values()) } return HttpResponse(json.dumps(response))
{% extends 'layout.html' %}
{% block content %}
<div id="container" style="min-width:300px;height:300px"></div>
<div id="container2" style="min-width:500px;height:500px"></div>
{% endblock %}
{% block js %}
<!--利用CDN-->
<script src="https://img.hcharts.cn/highcharts/highcharts.js"></script>
<script src="https://img.hcharts.cn/highcharts/modules/exporting.js"></script>
<script src="https://img.hcharts.cn/highcharts-plugins/highcharts-zh_CN.js"></script>
<script>
$(function () {
Highcharts.setOptions({
global: {
useUTC: false
}
});
$.ajax({
url: '/report.html',
type: "POST",
data: {'csrfmiddlewaretoken': '{{ csrf_token }}'},
dataType: 'JSON',
success: function (arg) {
console.log(arg);
$('#container').highcharts({
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: '运维人员处理报障占比'
},
tooltip: {
headerFormat: '{series.name}<br>',
pointFormat: '{point.name}: <b>{point.percentage:.1f}%</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>: {point.percentage:.1f} %',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
}
}
}
},
series: [{
type: 'pie',
name: '运维人员处理报障占比',
data: arg.pie
}]
});
Highcharts.chart('container2', {
title: {
text: '每日处理订单详细',
x: -20 //center
},
subtitle: {
text: '...',
x: -20
},
legend: {
layout: 'horizontal',
align: 'center',
verticalAlign: 'bottom',
borderWidth: 1
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: {
month: '%Y-%m',
year: '%Y'
}
},
/*
xAxis: {
type:'datatime',
labels: {
formatter: function () {
return Highcharts.dateFormat("%Y-%m-%d", this.value);
//return this.value;
}
}
},
*/
series: arg.zhexian
});
}
});
})
</script>
{% endblock %}

浙公网安备 33010602011771号