From c66c4f3ad9582892e2a80ab1ae4145be976e43b1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 18 Jan 2021 17:58:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=88=A0=E9=99=A4bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- safesite/views.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/safesite/views.py b/safesite/views.py index 142c7804..3b63478c 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -1674,11 +1674,10 @@ def getdickey(req): ret=[] for i in r_list: parent=i['parent'] - if parent: - if 'children' in r_dict[parent]: - r_dict[parent]['children'].append(i) - else: - r_dict[parent]['children'] = [i] + if parent in r_dict and 'children' in r_dict[parent]: + r_dict[parent]['children'].append(i) + elif parent in r_dict: + r_dict[parent]['children'] = [i] else: ret.append(i) return HttpResponse(json.dumps(ret), content_type="application/json") @@ -1702,11 +1701,10 @@ def getdickey(req): ret=[] for i in r_list: parent=i['parent'] - if parent: - if 'children' in r_dict[parent]: - r_dict[parent]['children'].append(i) - else: - r_dict[parent]['children'] = [i] + if parent in r_dict and 'children' in r_dict[parent]: + r_dict[parent]['children'].append(i) + elif parent in r_dict: + r_dict[parent]['children'] = [i] else: ret.append(i) return HttpResponse(json.dumps(ret), content_type="application/json") From 1aaa5d43faa96b68ecf54fc18f342acc9e12478c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 21 Jan 2021 15:48:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=9B=86=E5=9B=A2=E7=AB=AFexamrate?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- groups/templates/groups/company.html | 1 - groups/templates/groups/exam.html | 148 ++++++++++++++---- groups/urls.py | 2 +- groups/views.py | 30 +++- .../static/safesite/easyui/themes/icon.css | 4 +- .../safesite/easyui/themes/icons/follow.png | Bin 0 -> 422 bytes 6 files changed, 147 insertions(+), 38 deletions(-) create mode 100644 safesite/static/safesite/easyui/themes/icons/follow.png diff --git a/groups/templates/groups/company.html b/groups/templates/groups/company.html index 4fd830b4..0e2d1026 100644 --- a/groups/templates/groups/company.html +++ b/groups/templates/groups/company.html @@ -2,7 +2,6 @@ {% load static %} {% block headother%} - {% endblock %} diff --git a/groups/templates/groups/exam.html b/groups/templates/groups/exam.html index f85db51e..d5603c83 100644 --- a/groups/templates/groups/exam.html +++ b/groups/templates/groups/exam.html @@ -2,7 +2,8 @@ {% load static %} {% block headother%} - + + @@ -26,6 +27,15 @@ 结束日期: +
+
+
+ +
+
+
+
@@ -35,9 +45,8 @@ {% endblock %} \ No newline at end of file diff --git a/groups/urls.py b/groups/urls.py index 0ccbf9c6..27bb9e53 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, name='exam_rate'), path('api/admininfo//', views.admininfo), diff --git a/groups/views.py b/groups/views.py index 7e30cb61..c47076ec 100644 --- a/groups/views.py +++ b/groups/views.py @@ -226,7 +226,7 @@ def job(request): def company_user(request, cid): - users = s_models.User.objects.filter(usecomp=cid).order_by('userid') + users = s_models.User.objects.filter(usecomp=cid, deletemark=1, issuper=0).order_by('userid') # for user in users: # dump(user) return render(request, 'groups/company_user.html', locals()) @@ -457,8 +457,8 @@ def examChart(request):#在线考试 examjson = [] if code=='exam': companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - if request.session.get('issuper'): - companys = s_models.Partment.objects.filter(iscompany=1,deletemark=1) + # if request.session.get('issuper'): + # companys = s_models.Partment.objects.filter(iscompany=1,deletemark=1) examobjs = s_models.ExamTest.objects.all() if start: examobjs = examobjs.filter(starttime__gte=start) @@ -477,6 +477,8 @@ def exam_rate(request): groupuser = GroupUser.objects.get(id = request.session['user_id']) companys = groupuser.group.members.all() ret = {'x':{'name':'所属公司', 'data':[]}, 's':[{'name':'参考率', 'data':[]},{'name':'优秀率', 'data':[]}, {'name':'满分率', 'data':[]}], 't':'各公司考试比例统计'} + ret_ = [] + test_count_t = 0 user_count_t = 0 testuser_count_t = 0 full_count_t = 0 @@ -490,6 +492,12 @@ def exam_rate(request): base = base.filter(examtest__starttime__gte=start) if end: base = base.filter(examtest__starttime__lte=end) + test = s_models.ExamTest.objects.filter(usecomps__contains=','+str(i.partid)+',').exclude(nousecomps__contains=','+str(i.partid)+',') + if start: + test = test.filter(starttime__gte=start) + if end: + test = test.filter(starttime__lte=end) + test_count = test.count() # 参加考试员工数 testuser_count = base.values('user').distinct().count() # 参考率 @@ -516,14 +524,22 @@ def exam_rate(request): testuser_count_t = testuser_count_t + testuser_count full_count_t = full_count_t + full_count ninety_count_t = ninety_count_t + ninety_count + test_count_t = test_count_t + test_count + ret_.append({'company':i.partname,'test_count':test_count, 'user_count':user_count, 'testuser_count':testuser_count, 'ninety_count':ninety_count, 'full_count':full_count, + 'rate1':rate1, 'rate2':rate2, 'rate3':rate3}) rate1_t = testuser_count_t/user_count_t rate2_t = full_count_t/user_count_t if user_count_t else 0 rate3_t = ninety_count_t/user_count_t if user_count_t else 0 + rate1_t = int(rate1_t*100+0.5) if int(rate1_t*100+0.5)<101 else 100 + rate2_t = int(rate2_t*100+0.5) if int(rate2_t*100+0.5)<101 else 100 + rate3_t = int(rate3_t*100+0.5) if int(rate3_t*100+0.5)<101 else 100 ret['x']['data'].insert(0, groupuser.group.groupname) - ret['s'][0]['data'].insert(0, int(rate1_t*100+0.5) if int(rate1_t*100+0.5)<101 else 100) - ret['s'][1]['data'].insert(0, int(rate3_t*100+0.5) if int(rate3_t*100+0.5)<101 else 100) - ret['s'][2]['data'].insert(0, int(rate2_t*100+0.5) if int(rate2_t*100+0.5)<101 else 100) - return HttpResponse(json.dumps({'code':200,'data':ret}), content_type='application/json') + ret['s'][0]['data'].insert(0, rate1_t) + ret['s'][1]['data'].insert(0, rate3_t) + ret['s'][2]['data'].insert(0, rate2_t) + ret_.insert(0,{'company':groupuser.group.groupname,'test_count':test_count_t, 'user_count':user_count_t, 'testuser_count':testuser_count_t, 'ninety_count':ninety_count_t, 'full_count':full_count_t, + 'rate1':rate1_t, 'rate2':rate2_t, 'rate3':rate3_t}) + return HttpResponse(json.dumps({'code':200,'data':[ret, {'total':len(ret_),'rows':ret_}]}), content_type='application/json') diff --git a/safesite/static/safesite/easyui/themes/icon.css b/safesite/static/safesite/easyui/themes/icon.css index 418437d7..be9825df 100644 --- a/safesite/static/safesite/easyui/themes/icon.css +++ b/safesite/static/safesite/easyui/themes/icon.css @@ -184,7 +184,9 @@ .icon-trainplan { background: url('icons/trainplan.png') no-repeat center center; } - +.icon-follow { + background: url('icons/follow.png') no-repeat center center; +} .icon-mini-add{ background:url('icons/mini_add.png') no-repeat center center; diff --git a/safesite/static/safesite/easyui/themes/icons/follow.png b/safesite/static/safesite/easyui/themes/icons/follow.png new file mode 100644 index 0000000000000000000000000000000000000000..fa448abc40a27f369f32507b2861eab623b370d2 GIT binary patch literal 422 zcmV;X0a^ZuP)N-?wYxD;sYM|lOprOGCg0S|6ZVA}P;WDcK670Z@tJlq0ayAvt~5%6o4sQlzU}XHW^(}}V?z^@ork^aY zH~+p|YSueDJl$f~@&I;>Odv@u`q&TExdlLLWoTb92O``&&id}C#VSjH(uL4jlRI~a zRW>&I8Uv;lGj~A=8@hkoUHlm_7dIE*UV4qQ9ABwLtCLVHkh~RJoE0@UA_!mz#QE!s zZ>B!PNZgzkk$K4HHM&?Ah!Kcv8`;3>zy88ZqB3xj4&HyAzFR`Kj@r}X1A=yp&81H) QJOBUy07*qoM6N<$f;=U=%m4rY literal 0 HcmV?d00001