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