django报表系统_django报障系统之解决工单和报表

本文介绍了一个Django应用中如何实现工单处理流程,并通过Highcharts插件展示运维人员处理报障的占比和每日处理订单的详情报表。用户根据权限查看不同状态的工单,总监则能查看报表数据。
摘要由CSDN通过智能技术生成

前面实现了用户的角色管理、权限管理、故障管理。下面学习下解决故障

当有权限的用户登录后,可以看到自己创建的单子,或者自己已经接了单子和解决完成的单子

创建好对应的url

当用户处理的时候,跳转到处理的页面

处理完成后把状态 改成“已处理”,没有完成的把状态改成“处理中”

下面是报表管理

报表只有总监能看到,这里用的报表使用了hichart,插件来实现的

{% extends 'layout.html' %}

{% block content %}

{% endblock %}

$(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}
',

pointFormat: '{point.name}: {point.percentage:.1f}%'

},

plotOptions: {

pie: {

allowPointSelect: true,

cursor: 'pointer',

dataLabels: {

enabled: true,

format: '{point.name}: {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:{

labels:{

formatter:function(){

return Highcharts.dateFormat("%Y-%m-%d",this.value);

//return this.value;

}

},

minTickInterval:24

},

series: arg.zhexian

});

}

});

})

{% endblock %}

后端的数据提供是:

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'))

response = {}

result_dic ={}

for bin in result:

# key = bin['processor_id']

# if key in result_dic:

# result_dic[key]['data'].append([bin['processor__nickname'],bin['ct']])

# else:

# result_dic[key]={'data':[[bin['processor__nickname'],bin['ct']],]}

response['pie']=list(result)

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']], ]}

response['zhexian']=list(ymd_dict.values())

return HttpResponse(json.dumps(response))

结果:

![](https://s4.51cto.com/images/blog/201805/22/f5728870af697d0d7f23052846fb8791.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值