diff --git a/groups.zip b/groups.zip deleted file mode 100644 index 59b0273d..00000000 Binary files a/groups.zip and /dev/null differ diff --git a/groups/templates/groups/company_user.html b/groups/templates/groups/company_user.html index 954b557c..164f8c21 100644 --- a/groups/templates/groups/company_user.html +++ b/groups/templates/groups/company_user.html @@ -35,8 +35,8 @@
| 员工ID | +员工名称 | @@ -174,5 +173,4 @@ map.setCenter([x/num,y/num]) }) ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 {% endblock %} \ No newline at end of file diff --git a/groups/templates/groups/miss.html b/groups/templates/groups/miss.html index 02899ac4..df2dae57 100644 --- a/groups/templates/groups/miss.html +++ b/groups/templates/groups/miss.html @@ -1,4 +1,3 @@ - {% extends "./base.html" %} {% block title %}未遂事件统计{% endblock %} @@ -140,4 +139,3 @@ {% endblock %} ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 diff --git a/groups/templates/groups/observe.html b/groups/templates/groups/observe.html index 8472ca6a..1d166545 100644 --- a/groups/templates/groups/observe.html +++ b/groups/templates/groups/observe.html @@ -1,4 +1,3 @@ - {% extends "./base.html" %} {% block title %}行为统计{% endblock %} @@ -137,4 +136,3 @@ {% endblock %} ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 diff --git a/groups/templates/groups/risk.html b/groups/templates/groups/risk.html index 3e3a45ee..68455ca4 100644 --- a/groups/templates/groups/risk.html +++ b/groups/templates/groups/risk.html @@ -1,4 +1,3 @@ - {% extends "./base.html" %} {% block title %}风险管控{% endblock %} @@ -174,4 +173,3 @@ {% endblock %} ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 diff --git a/groups/templates/groups/train.html b/groups/templates/groups/train.html index 89a62185..4bfc311e 100644 --- a/groups/templates/groups/train.html +++ b/groups/templates/groups/train.html @@ -1,4 +1,3 @@ - {% extends "./base.html" %} {% block title %}教育培训统计{% endblock %} @@ -141,4 +140,3 @@ {% endblock %} ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 diff --git a/groups/templates/groups/troublepic.html b/groups/templates/groups/troublepic.html index 66894d58..27cc4816 100644 --- a/groups/templates/groups/troublepic.html +++ b/groups/templates/groups/troublepic.html @@ -1,4 +1,3 @@ - {% extends "./base.html" %} {% block title %}隐患统计{% endblock %} @@ -134,4 +133,3 @@ {% endblock %} ->>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345 diff --git a/groups/views.py b/groups/views.py index a24717ed..fa180e2b 100644 --- a/groups/views.py +++ b/groups/views.py @@ -1,317 +1,317 @@ -from django.http import HttpResponse, JsonResponse -from django.shortcuts import render -from django.shortcuts import redirect -from .models import Group, GroupUser -from .forms import GroupUserForm, UserForm -from safesite import models as s_models -from safesite.tasks import gettime -import requests -import json -import time -from datetime import datetime, date, timedelta -from django.core.serializers.json import DjangoJSONEncoder -from django.db.models import Q, F, Count, Sum -from django.forms.models import model_to_dict -from django.http import Http404 - - -def check_login(func): # 自定义登录验证装饰器 - def warpper(request, *args, **kwargs): - is_login = request.session.get('is_login', False) - if is_login: - return func(request, *args, **kwargs) - else: - return redirect('/groups/login') - - return warpper - - -def login(request): - # 不允许重复登录 - if request.session.get('is_login', None): - return redirect('/groups/index/') - if request.method == "POST": - groups_form = GroupUserForm(request.POST) - message = '请检查填写的内容!' - if groups_form.is_valid(): - username = groups_form.cleaned_data.get('username') - password = groups_form.cleaned_data.get('password') - - try: - user = GroupUser.objects.get(username=username) - except: - message = '用户不存在!' - return render(request, 'groups/login.html', locals()) - if user.password == password: - request.session['is_login'] = True - request.session['user_id'] = user.id - request.session['user_name'] = user.username - return redirect('/groups/index/') - else: - return render(request, 'groups/login.html', locals()) - else: - return render(request, 'groups/login.html', locals()) - groups_form = GroupUserForm() - return render(request, 'groups/login.html', locals()) - - -def logout(request): - # if not request.session.get('is_login', None): - # return redirect('/groups/login') - request.session.flush() - return redirect('/groups/login') - - -import json -from captcha.models import CaptchaStore -from captcha.helpers import captcha_image_url - - -def refresh_captcha(request): - hashkey = CaptchaStore.generate_key() - image_url = captcha_image_url(hashkey) - return HttpResponse(json.dumps({'key': hashkey, 'image_url': image_url}), content_type='application/json') - - -@check_login -def company(request): - companys = GroupUser.objects.get(id=request.session['user_id']).group.members.all() - for i in companys: - i.useradmin = s_models.User.objects.get(ubelongpart=i, issuper=1).username - return render(request, 'groups/company.html', locals()) - - -def job(request): - return render(request, 'groups/job.html', locals()) - - -def company_user(request, cid): - users = s_models.User.objects.filter(usecomp=cid) - # for user in users: - # dump(user) - return render(request, 'groups/company_user.html', locals()) - - -def company_userdetail(request, uid): - try: - user = s_models.User.objects.get(pk=uid) - except s_models.User.DoesNotExist: - raise Http404("User does not exist") - - # UserForm.set_usecomp(s_models.Partment.objects.filter(group__id=1)) - user_form = UserForm(model_to_dict(user)) - - return render(request, 'groups/company_userdetail.html', locals()) - - -def groups_userupdate(request): - if request.method == 'POST': - user_form = UserForm(request.POST) - if user_form.is_valid(): - model_user = s_models.User.objects.filter(pk=user_form.cleaned_data.get('userid'))[0] - if model_user: - # model_user.ubelongpart = user_form.cleaned_data.get('ubelongpart') - # model_user.usecomp = user_form.cleaned_data.get('usecomp') - # model_user.save() - - newpart = user_form.cleaned_data.get('ubelongpart') - oldpart = model_user.ubelongpart - - oldpart.aqy = oldpart.aqy.replace(',' + str(model_user.userid) + ',', '') - oldpart.bmzg = oldpart.bmzg.replace(',' + str(model_user.userid) + ',', '') - oldpart.bsq = oldpart.bsq.replace(',' + str(model_user.userid) + ',', '') - oldpart.save() - part = s_models.Partment.objects.get(partid=newpart.partid) - - if part.iscompany == 1: - usecomp = part - else: - usecomp = s_models.Partment.objects.get(partid=part.partlink.split(',')[1]) - model_user.ubelongpart = part - model_user.usecomp = usecomp - model_user.save() - - for i in s_models.Group.objects.filter(usecomp=usecomp): - i.users.remove(model_user) - groupobj = s_models.Group.objects.filter(usecomp=usecomp, grouptype=3).first() - groupobj.users.add(model_user) - else: - message = '没有发现该用户' - return render(request, 'groups/company_userchange.html', locals()) - else: - return redirect('/groups/company/') - - -def company_userchange_page(request, uid): - try: - user = s_models.User.objects.get(pk=uid) - except s_models.User.DoesNotExist: - raise Http404("User does not exist") - user_form = UserForm(model_to_dict(user)) - - return render(request, 'groups/company_userchange.html', locals()) - - -def dump(obj): - print('\n'.join(['%s:%s' % item for item in obj.__dict__.items()])) - - -@check_login -def index(req): - first_day, first_day_of_next_month = gettime() - group = GroupUser.objects.get(id=req.session['user_id']).group - companys = group.members.all() - troublenum = s_models.Trouble.objects.filter(deletemark=1, usecomp__in=companys, - fxsj__range=(first_day, first_day_of_next_month)).count() - observenum = s_models.Observe.objects.filter(deletemark=1, usecomp__in=companys, - looktime__range=(first_day, first_day_of_next_month)).count() - missnum = s_models.Miss.objects.filter(deletemark=1, usecomp__in=companys, - misstime__range=(first_day, first_day_of_next_month)).count() - trainnum = s_models.Train.objects.filter(deletemark=1, usecomp__in=companys, - starttime__range=(first_day, first_day_of_next_month)).count() - companynum = len(companys) - usernum = s_models.User.objects.filter(deletemark=1, usecomp__in=companys).count() - return render(req, 'groups/index.html', locals()) - - -def updateposition(req): - allcompanys = s_models.Partment.objects.filter(deletemark=1, iscompany=1) - for i in allcompanys: - address = i.partname - data = getPosition(address) - if data['status'] == '1' and int(data['count']) > 0: - i.position = data['geocodes'][0] - i.save() - else: - address = i.partname.replace('公司', '').replace('责任', '').replace('有限', '') - data = getPosition(address) - if data['status'] == '1' and int(data['count']) > 0: - i.position = data['geocodes'][0] - i.save() - return JsonResponse({"code": 1}) - - -def getPosition(address): - url = 'http://restapi.amap.com/v3/geocode/geo' - par = {'address': address, 'key': '86e0993305a427ac2d0b5371ad97f242'} - res = requests.get(url, par) - json_data = json.loads(res.text) - return json_data - - - -def apipositions(req): - companys = GroupUser.objects.get(id = req.session['user_id']).group.members.all() - positions = companys.values('position','partname') - return JsonResponse({"code":1,"data":list(positions)}) -def trouble(request):#隐患排查 - return render(request, 'groups/troublepic.html', locals()) -def observe(request):#行为观察 - return render(request, 'groups/observe.html', locals()) -def miss(request):#未遂事件 - return render(request, 'groups/miss.html', locals()) -def risk(request):#风险管控 - return render(request, 'groups/risk.html', locals()) -def train(request):#教育培训 - return render(request, 'groups/train.html', locals()) -def exam(request):#在线考试 - return render(request, 'groups/exam.html', locals()) -def troubleChart(request):#隐患统计图 - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - if code=='tbpic': - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - troublelist = s_models.Trouble.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') - if start: - troublelist = troublelist.filter(fxsj__gte=start) - if end: - troublelist = troublelist.filter(fxsj__lte=end) - troublelist=troublelist.annotate(number = Count('usecomp')).order_by('-number') - - return HttpResponse(json.dumps({'code':1,'data':{'troublelist':list(troublelist)}}), content_type='application/json') -def observeChart(request):#行为观察 - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - if code=='obv': - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - observelist = s_models.Observe.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') - if start: - observelist = observelist.filter(looktime__gte=start) - if end: - observelist = observelist.filter(looktime__lte=end) - observelist=observelist.annotate(number = Count('usecomp')).order_by('-number') - return HttpResponse(json.dumps({'code':1,'data':{'observelist':list(observelist)}}), content_type='application/json') - -def missChart(request):#未遂事件 - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - if code=='miss': - - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - misslist = s_models.Miss.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') - if start: - misslist = misslist.filter(misstime__gte=start) - if end: - misslist = misslist.filter(misstime__lte=end) - misslist=misslist.annotate(number = Count('usecomp')).order_by('-number') - return HttpResponse(json.dumps({'code':1,'data':{'misslist':list(misslist)}}), content_type='application/json') - -def riskChart(request):#风险管控 - - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - risks = [] - if code=='risk': - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - for i in companys: - risk= s_models.RiskAct.objects.filter(usecomp__partid=i.partid) - if start: - risk = risk.filter(createtime__gte=start) - if end: - risk = risk.filter(createtime__lte=end) - datariskact=risk.count() - datariskact1=risk.filter(level="低风险").count() - datariskact2=risk.filter(level="一般风险").count() - datariskact3=risk.filter(level="较大风险").count() - datariskact4=risk.filter(level="重大风险").count() - risks.append({'companyName':i.partname,'datariskact':datariskact,'datariskact1':datariskact1,'datariskact2':datariskact2,'datariskact3':datariskact3,'datariskact4':datariskact4}) - return HttpResponse(json.dumps({'code':1,'risks':risks}), content_type='application/json') - -def trainChart(request):#教育培训 - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - if code=='train': - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - trainlist = s_models.Train.objects.filter(usecomp__in=companys,deletemark=1).values('usecomp__partid','usecomp__partname') - if start: - trainlist = trainlist.filter(starttime__gte=start) - if end: - trainlist = trainlist.filter(starttime__lte=end) - trainlist=trainlist.annotate(number = Count('usecomp')).order_by('-number') - - return HttpResponse(json.dumps({'code':1,'data':{'trainlist':list(trainlist)}}), content_type='application/json') - -def examChart(request):#在线考试 - code = request.GET.get('code') - start = request.GET.get('start') - end = request.GET.get('end') - examjson = [] - if code=='exam': - companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() - - for i in companys: - examnumber = s_models.ExamTest.objects.filter(usecomps__contains=','+str(i.partid)+',') - if start: - examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__gte=start) - if end: - examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__lte=end) - examjson.append({'companyName':i.partname,'number':examnumber.count()}) - return HttpResponse(json.dumps({'code':1,'data':examjson}), content_type='application/json') - - - +from django.http import HttpResponse, JsonResponse +from django.shortcuts import render +from django.shortcuts import redirect +from .models import Group, GroupUser +from .forms import GroupUserForm, UserForm +from safesite import models as s_models +from safesite.tasks import gettime +import requests +import json +import time +from datetime import datetime, date, timedelta +from django.core.serializers.json import DjangoJSONEncoder +from django.db.models import Q, F, Count, Sum +from django.forms.models import model_to_dict +from django.http import Http404 + + +def check_login(func): # 自定义登录验证装饰器 + def warpper(request, *args, **kwargs): + is_login = request.session.get('is_login', False) + if is_login: + return func(request, *args, **kwargs) + else: + return redirect('/groups/login') + + return warpper + + +def login(request): + # 不允许重复登录 + if request.session.get('is_login', None): + return redirect('/groups/index/') + if request.method == "POST": + groups_form = GroupUserForm(request.POST) + message = '请检查填写的内容!' + if groups_form.is_valid(): + username = groups_form.cleaned_data.get('username') + password = groups_form.cleaned_data.get('password') + + try: + user = GroupUser.objects.get(username=username) + except: + message = '用户不存在!' + return render(request, 'groups/login.html', locals()) + if user.password == password: + request.session['is_login'] = True + request.session['user_id'] = user.id + request.session['user_name'] = user.username + return redirect('/groups/index/') + else: + return render(request, 'groups/login.html', locals()) + else: + return render(request, 'groups/login.html', locals()) + groups_form = GroupUserForm() + return render(request, 'groups/login.html', locals()) + + +def logout(request): + # if not request.session.get('is_login', None): + # return redirect('/groups/login') + request.session.flush() + return redirect('/groups/login') + + +import json +from captcha.models import CaptchaStore +from captcha.helpers import captcha_image_url + + +def refresh_captcha(request): + hashkey = CaptchaStore.generate_key() + image_url = captcha_image_url(hashkey) + return HttpResponse(json.dumps({'key': hashkey, 'image_url': image_url}), content_type='application/json') + + +@check_login +def company(request): + companys = GroupUser.objects.get(id=request.session['user_id']).group.members.all() + for i in companys: + i.useradmin = s_models.User.objects.get(ubelongpart=i, issuper=1).username + return render(request, 'groups/company.html', locals()) + + +def job(request): + return render(request, 'groups/job.html', locals()) + + +def company_user(request, cid): + users = s_models.User.objects.filter(usecomp=cid) + # for user in users: + # dump(user) + return render(request, 'groups/company_user.html', locals()) + + +def company_userdetail(request, uid): + try: + user = s_models.User.objects.get(pk=uid) + except s_models.User.DoesNotExist: + raise Http404("User does not exist") + + # UserForm.set_usecomp(s_models.Partment.objects.filter(group__id=1)) + user_form = UserForm(model_to_dict(user)) + + return render(request, 'groups/company_userdetail.html', locals()) + + +def groups_userupdate(request): + if request.method == 'POST': + user_form = UserForm(request.POST) + if user_form.is_valid(): + model_user = s_models.User.objects.filter(pk=user_form.cleaned_data.get('userid'))[0] + if model_user: + # model_user.ubelongpart = user_form.cleaned_data.get('ubelongpart') + # model_user.usecomp = user_form.cleaned_data.get('usecomp') + # model_user.save() + + newpart = user_form.cleaned_data.get('ubelongpart') + oldpart = model_user.ubelongpart + + oldpart.aqy = oldpart.aqy.replace(',' + str(model_user.userid) + ',', '') + oldpart.bmzg = oldpart.bmzg.replace(',' + str(model_user.userid) + ',', '') + oldpart.bsq = oldpart.bsq.replace(',' + str(model_user.userid) + ',', '') + oldpart.save() + part = s_models.Partment.objects.get(partid=newpart.partid) + + if part.iscompany == 1: + usecomp = part + else: + usecomp = s_models.Partment.objects.get(partid=part.partlink.split(',')[1]) + model_user.ubelongpart = part + model_user.usecomp = usecomp + model_user.save() + + for i in s_models.Group.objects.filter(usecomp=usecomp): + i.users.remove(model_user) + groupobj = s_models.Group.objects.filter(usecomp=usecomp, grouptype=3).first() + groupobj.users.add(model_user) + else: + message = '没有发现该用户' + return render(request, 'groups/company_userchange.html', locals()) + else: + return redirect('/groups/company/') + + +def company_userchange_page(request, uid): + try: + user = s_models.User.objects.get(pk=uid) + except s_models.User.DoesNotExist: + raise Http404("User does not exist") + user_form = UserForm(model_to_dict(user)) + + return render(request, 'groups/company_userchange.html', locals()) + + +def dump(obj): + print('\n'.join(['%s:%s' % item for item in obj.__dict__.items()])) + + +@check_login +def index(req): + first_day, first_day_of_next_month = gettime() + group = GroupUser.objects.get(id=req.session['user_id']).group + companys = group.members.all() + troublenum = s_models.Trouble.objects.filter(deletemark=1, usecomp__in=companys, + fxsj__range=(first_day, first_day_of_next_month)).count() + observenum = s_models.Observe.objects.filter(deletemark=1, usecomp__in=companys, + looktime__range=(first_day, first_day_of_next_month)).count() + missnum = s_models.Miss.objects.filter(deletemark=1, usecomp__in=companys, + misstime__range=(first_day, first_day_of_next_month)).count() + trainnum = s_models.Train.objects.filter(deletemark=1, usecomp__in=companys, + starttime__range=(first_day, first_day_of_next_month)).count() + companynum = len(companys) + usernum = s_models.User.objects.filter(deletemark=1, usecomp__in=companys).count() + return render(req, 'groups/index.html', locals()) + + +def updateposition(req): + allcompanys = s_models.Partment.objects.filter(deletemark=1, iscompany=1) + for i in allcompanys: + address = i.partname + data = getPosition(address) + if data['status'] == '1' and int(data['count']) > 0: + i.position = data['geocodes'][0] + i.save() + else: + address = i.partname.replace('公司', '').replace('责任', '').replace('有限', '') + data = getPosition(address) + if data['status'] == '1' and int(data['count']) > 0: + i.position = data['geocodes'][0] + i.save() + return JsonResponse({"code": 1}) + + +def getPosition(address): + url = 'http://restapi.amap.com/v3/geocode/geo' + par = {'address': address, 'key': '86e0993305a427ac2d0b5371ad97f242'} + res = requests.get(url, par) + json_data = json.loads(res.text) + return json_data + + + +def apipositions(req): + companys = GroupUser.objects.get(id = req.session['user_id']).group.members.all() + positions = companys.values('position','partname') + return JsonResponse({"code":1,"data":list(positions)}) +def trouble(request):#隐患排查 + return render(request, 'groups/troublepic.html', locals()) +def observe(request):#行为观察 + return render(request, 'groups/observe.html', locals()) +def miss(request):#未遂事件 + return render(request, 'groups/miss.html', locals()) +def risk(request):#风险管控 + return render(request, 'groups/risk.html', locals()) +def train(request):#教育培训 + return render(request, 'groups/train.html', locals()) +def exam(request):#在线考试 + return render(request, 'groups/exam.html', locals()) +def troubleChart(request):#隐患统计图 + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + if code=='tbpic': + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + troublelist = s_models.Trouble.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') + if start: + troublelist = troublelist.filter(fxsj__gte=start) + if end: + troublelist = troublelist.filter(fxsj__lte=end) + troublelist=troublelist.annotate(number = Count('usecomp')).order_by('-number') + + return HttpResponse(json.dumps({'code':1,'data':{'troublelist':list(troublelist)}}), content_type='application/json') +def observeChart(request):#行为观察 + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + if code=='obv': + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + observelist = s_models.Observe.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') + if start: + observelist = observelist.filter(looktime__gte=start) + if end: + observelist = observelist.filter(looktime__lte=end) + observelist=observelist.annotate(number = Count('usecomp')).order_by('-number') + return HttpResponse(json.dumps({'code':1,'data':{'observelist':list(observelist)}}), content_type='application/json') + +def missChart(request):#未遂事件 + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + if code=='miss': + + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + misslist = s_models.Miss.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname') + if start: + misslist = misslist.filter(misstime__gte=start) + if end: + misslist = misslist.filter(misstime__lte=end) + misslist=misslist.annotate(number = Count('usecomp')).order_by('-number') + return HttpResponse(json.dumps({'code':1,'data':{'misslist':list(misslist)}}), content_type='application/json') + +def riskChart(request):#风险管控 + + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + risks = [] + if code=='risk': + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + for i in companys: + risk= s_models.RiskAct.objects.filter(usecomp__partid=i.partid) + if start: + risk = risk.filter(createtime__gte=start) + if end: + risk = risk.filter(createtime__lte=end) + datariskact=risk.count() + datariskact1=risk.filter(level="低风险").count() + datariskact2=risk.filter(level="一般风险").count() + datariskact3=risk.filter(level="较大风险").count() + datariskact4=risk.filter(level="重大风险").count() + risks.append({'companyName':i.partname,'datariskact':datariskact,'datariskact1':datariskact1,'datariskact2':datariskact2,'datariskact3':datariskact3,'datariskact4':datariskact4}) + return HttpResponse(json.dumps({'code':1,'risks':risks}), content_type='application/json') + +def trainChart(request):#教育培训 + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + if code=='train': + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + trainlist = s_models.Train.objects.filter(usecomp__in=companys,deletemark=1).values('usecomp__partid','usecomp__partname') + if start: + trainlist = trainlist.filter(starttime__gte=start) + if end: + trainlist = trainlist.filter(starttime__lte=end) + trainlist=trainlist.annotate(number = Count('usecomp')).order_by('-number') + + return HttpResponse(json.dumps({'code':1,'data':{'trainlist':list(trainlist)}}), content_type='application/json') + +def examChart(request):#在线考试 + code = request.GET.get('code') + start = request.GET.get('start') + end = request.GET.get('end') + examjson = [] + if code=='exam': + companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all() + + for i in companys: + examnumber = s_models.ExamTest.objects.filter(usecomps__contains=','+str(i.partid)+',') + if start: + examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__gte=start) + if end: + examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__lte=end) + examjson.append({'companyName':i.partname,'number':examnumber.count()}) + return HttpResponse(json.dumps({'code':1,'data':examjson}), content_type='application/json') + + + diff --git a/safesite/migrations/0286_auto_20191030_1632.py b/safesite/migrations/0286_auto_20191030_1632.py new file mode 100644 index 00000000..a75b4dab --- /dev/null +++ b/safesite/migrations/0286_auto_20191030_1632.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.5 on 2019-10-30 16:32 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0285_remove_companyinfo_liaison_fax'), + ] + + operations = [ + # migrations.RemoveField( + # model_name='companyinfo', + # name='liaison_fax', + # ), + migrations.AddField( + model_name='equipment', + name='riskact', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.RiskAct'), + ), + ] diff --git a/safesite/models.py b/safesite/models.py index 7885bff6..9a8edf16 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -660,6 +660,24 @@ class Relation(models.Model):#各模块关系表,没用到 remark = models.CharField(max_length=1000,null=True,blank=True) +class RiskAct(models.Model):#风险点表 + id = models.AutoField(primary_key=True) + area = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True,related_name='riskactarea') + place = models.CharField(max_length=50,null=True,blank=True) + type = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True) + name = models.CharField(max_length=200,null=True,blank=True) + createtime = models.DateTimeField(default = timezone.now) + level = models.CharField(max_length=50,null=True,blank=True) + usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) + qrcode = models.CharField(max_length=200,blank=True,null=True) + gkcj = models.CharField(max_length=50,null=True,blank=True)#从此往下以风险点来管控 + zrbm = models.ForeignKey(Partment,related_name='riskzrbm2',on_delete=models.CASCADE,null=True,blank=True) + zrr = models.ForeignKey(User,related_name='riskzrr2',on_delete=models.CASCADE,null=True,blank=True) + group = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True) + modifytime = models.DateTimeField(auto_now = True) + tasktype = models.IntegerField(default=0) + tasktime = models.DateTimeField(null=True,blank=True) #最后任务开始时间 + class Equipment(models.Model):#设备表 id = models.AutoField(primary_key=True) num = models.CharField(max_length=30,null=True,blank=True) @@ -686,6 +704,7 @@ class Equipment(models.Model):#设备表 zrr = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True) img = models.CharField(max_length=1000,blank=True,null=True) qrcode = models.CharField(max_length=200,blank=True,null=True) + riskact = models.ForeignKey(RiskAct,null=True,blank=True,on_delete=models.CASCADE) class Inspect(models.Model):#设备巡检记录 id = models.AutoField(primary_key=True) @@ -697,24 +716,6 @@ class Inspect(models.Model):#设备巡检记录 user = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE) usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) trouble = models.ForeignKey(Trouble,on_delete=models.CASCADE,null=True,blank=True) - -class RiskAct(models.Model):#风险点表 - id = models.AutoField(primary_key=True) - area = models.ForeignKey(Area,on_delete=models.CASCADE,null=True,blank=True,related_name='riskactarea') - place = models.CharField(max_length=50,null=True,blank=True) - type = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True) - name = models.CharField(max_length=200,null=True,blank=True) - createtime = models.DateTimeField(default = timezone.now) - level = models.CharField(max_length=50,null=True,blank=True) - usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) - qrcode = models.CharField(max_length=200,blank=True,null=True) - gkcj = models.CharField(max_length=50,null=True,blank=True)#从此往下以风险点来管控 - zrbm = models.ForeignKey(Partment,related_name='riskzrbm2',on_delete=models.CASCADE,null=True,blank=True) - zrr = models.ForeignKey(User,related_name='riskzrr2',on_delete=models.CASCADE,null=True,blank=True) - group = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True) - modifytime = models.DateTimeField(auto_now = True) - tasktype = models.IntegerField(default=0) - tasktime = models.DateTimeField(null=True,blank=True) #最后任务开始时间 class Risk(models.Model):#风险表 tasktype_choices = ( diff --git a/safesite/templates/equipment.html b/safesite/templates/equipment.html index 1b16082f..bdf61857 100644 --- a/safesite/templates/equipment.html +++ b/safesite/templates/equipment.html @@ -64,11 +64,15 @@ | |
|---|---|---|---|
| - | + | + | 选择 + + + |
| + | |||
| 保存 | @@ -192,6 +196,13 @@ $('#cate').combobox('setValue', res.cate__dickeyid) $('#area').combotree('setValue', res.area__id) $('#zrbm').combotree('setValue', res.zrbm__partid) + $('#fxdinput').val(res.riskact__id) + $('#fxdspan').css('color','blue') + $('#fxdspan').html(' '+res.riskact__name) + if(res.riskact__name==undefined){ + $('#fxdspan').css('color','red') + $('#fxdspan').html(' 未绑定') + } $('#zrr').combobox({ url: 'getuser?partid=' + res.zrbm__partid + '&a=combobox', }).combobox('setValue', res.zrr__userid) if (res.iskey == 1) { $('#iskey').prop("checked", true); @@ -320,4 +331,9 @@ }; //请求完成 xhr.onerror = function (evt) { $.messager.alert('提示', '失败!文件内容有误'); document.getElementById('drfile').value = ''; }; //请求失败 } + function choosefxd(){ + var myh = screen.availHeight * 0.8; + var area = $('#area').combotree('getValue') + opendg('选择风险点','html/riskact/chose?area='+area,myh) + } \ No newline at end of file diff --git a/safesite/templates/rights.html b/safesite/templates/rights.html index 0edf1d27..21637d71 100644 --- a/safesite/templates/rights.html +++ b/safesite/templates/rights.html @@ -14,14 +14,15 @@ animate: true, checkbox: true, lines: true, - loadFilter: function (rows) { - return convertmenu(rows); + loadFilter: function (rows) { + var rows = convertmenu(rows) + return rows; }, onClick: function (node) { }, onCheck:function(node){ - console.log($('#rightstree').tree('getChecked', ['checked','indeterminate'])) + //console.log($('#rightstree').tree('getChecked', ['checked','indeterminate'])) }, onBeforeLoad: function (node, param) { diff --git a/safesite/templates/riskactchose.html b/safesite/templates/riskactchose.html new file mode 100644 index 00000000..ca1c8212 --- /dev/null +++ b/safesite/templates/riskactchose.html @@ -0,0 +1,68 @@ +|||