diff --git a/groups/templates/groups/exam.html b/groups/templates/groups/exam.html index e9605dae..a7106952 100644 --- a/groups/templates/groups/exam.html +++ b/groups/templates/groups/exam.html @@ -13,16 +13,17 @@

在线考试统计

-
-
- 开始日期: - 结束日期: - - -
- +
+ 开始日期: + 结束日期: + +
+
+
+
+
@@ -48,10 +49,11 @@ , format: 'yyyy-MM-dd' //可任意组合 }); exam(); - + exam2() }); function funTypeChange() { exam(); + exam2() } @@ -65,7 +67,7 @@ examChart.showLoading({ maskColor: '#dac2a3', }); - + $.ajax({ type: "get", async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行) @@ -74,7 +76,7 @@ success: function (data) { console.log(data.data.number); //请求成功时执行该函数内容,data即为服务器返回的json对象 - + var exnum = []; var companyName = []; @@ -138,7 +140,88 @@ }); } + function exam2() { + var start = $("#test").val(); + var end = $("#test2").val(); + var examChart = echarts.init(document.getElementById("examChart2")); + examChart.showLoading({ + maskColor: '#dac2a3', + }); + + $.ajax({ + type: "get", + async: true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行) + url: "/groups/api/examrate/?start=" + start + "&end=" + end, //请求发送 + dataType: "json", //返回数据形式为json + success: function (data) { + var labelOption = { + show: true, + formatter: '{c} {name|{a}}', + fontSize: 16, + rotate: 90, + align: 'left', + verticalAlign: 'middle', + position: 'insideBottom', + distance: 15, + rich: { + name: { + textBorderColor: '#fff' + } + } +}; + if (data.data != null) { + var series = [] + for(var i=0;i - {% endblock %} +{% endblock %} \ No newline at end of file diff --git a/groups/urls.py b/groups/urls.py index 7ecd0321..0ccbf9c6 100644 --- a/groups/urls.py +++ b/groups/urls.py @@ -31,7 +31,7 @@ urlpatterns = [ path('api/riskChart',views.riskChart), path('api/trainChart',views.trainChart), path('api/examChart',views.examChart), - path('api/examrate',views.exam_rate), + path('api/examrate/',views.exam_rate), path('api/admininfo//', views.admininfo), diff --git a/groups/views.py b/groups/views.py index a4b60394..19b031bb 100644 --- a/groups/views.py +++ b/groups/views.py @@ -463,22 +463,22 @@ def examChart(request):#在线考试 if end: examobjs = examobjs.filter(starttime__lte=end) for i in companys: - examnumber = examobjs.filter(usecomps__contains=','+str(i.partid)+',') + examnumber = examobjs.filter(usecomps__contains=','+str(i.partid)+',').exclude(nousecomps__contains=','+str(i.partid)+',') examjson.append({'companyName':i.partname,'number':examnumber.count()}) return HttpResponse(json.dumps({'code':1,'data':examjson}), content_type='application/json') - def exam_rate(request): # 考试通过率 start = request.GET.get('start') end = request.GET.get('end') companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + ret = {'x':{'name':'所属公司', 'data':[]}, 's':[{'name':'参考率', 'data':[]},{'name':'满分率', 'data':[]}, {'name':'优秀率', 'data':[]}], 't':'各公司考试比例统计', 'l':['参考率', '满分率', '优秀率']} for i in companys: # 员工数 user_count = s_models.User.objects.filter(usecomp=i, deletemark=1).count() # 参加考试员工数 - base = s_models.ExamTestDetail.objects.filter(user__usecomp=i, user__deletemark=1).exclude(examtest__nousecomps__contains=','+str(i.partid)+',') + base = s_models.ExamTestDetail.objects.filter(user__usecomp=i, user__deletemark=1, ison=1).exclude(examtest__nousecomps__contains=','+str(i.partid)+',') testuser_count = base.values('user').distinct().count() # 参考率 rate1 = testuser_count/user_count @@ -492,6 +492,15 @@ def exam_rate(request): ninety_count = base.filter(score__gte = F('examtest__totalscore')*0.9).count() # 90以上得分率 rate3 = ninety_count/test_count if test_count else 0 + + rate1 = '%.2f' % (rate1*100) + rate2 = '%.2f' % (rate2*100) + rate3 = '%.2f' % (rate3*100) + ret['x']['data'].append(i.partname) + ret['s'][0]['data'].append(rate1) + ret['s'][1]['data'].append(rate2) + ret['s'][2]['data'].append(rate3) + return HttpResponse(json.dumps({'code':200,'data':ret}), content_type='application/json')