Merge branch 'master' of 10.7.100.160:/job/safesite
This commit is contained in:
commit
4efd33677d
BIN
groups.zip
BIN
groups.zip
Binary file not shown.
|
|
@ -35,8 +35,8 @@
|
|||
<table id="example1" class="table table-bordered table-striped">
|
||||
<thead>
|
||||
<tr role="row">
|
||||
<th class="sorting_asc" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 164.933px;" aria-sort="ascending"
|
||||
aria-label="Rendering engine: activate to sort column descending">员工ID</th>
|
||||
<!-- <th class="sorting_asc" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 164.933px;" aria-sort="ascending"
|
||||
aria-label="Rendering engine: activate to sort column descending">员工ID</th> -->
|
||||
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 204.15px;"
|
||||
aria-label="Browser: activate to sort column ascending">员工名称</th>
|
||||
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 179.933px;"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}在线考试统计{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
{% block pagehead %}
|
||||
<h1>
|
||||
|
|
@ -174,5 +173,4 @@
|
|||
map.setCenter([x/num,y/num])
|
||||
})
|
||||
</script>
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
{% endblock %}
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}未遂事件统计{% endblock %}
|
||||
|
|
@ -140,4 +139,3 @@
|
|||
|
||||
</script>
|
||||
{% endblock %}
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}行为统计{% endblock %}
|
||||
|
|
@ -137,4 +136,3 @@
|
|||
|
||||
</script>
|
||||
{% endblock %}
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}风险管控{% endblock %}
|
||||
|
|
@ -174,4 +173,3 @@
|
|||
|
||||
</script>
|
||||
{% endblock %}
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}教育培训统计{% endblock %}
|
||||
|
|
@ -141,4 +140,3 @@
|
|||
|
||||
</script>
|
||||
{% endblock %}
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
{% extends "./base.html" %}
|
||||
|
||||
{% block title %}隐患统计{% endblock %}
|
||||
|
|
@ -134,4 +133,3 @@
|
|||
|
||||
</script>
|
||||
{% endblock %}
|
||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
||||
|
|
|
|||
634
groups/views.py
634
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')
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
),
|
||||
]
|
||||
|
|
@ -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 = (
|
||||
|
|
|
|||
|
|
@ -64,11 +64,15 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td><label>责任部门:</label><input id="zrbm" name="zrbm" /></td>
|
||||
<td><label>责任人员:</label><input id="zrr" class="easyui-combobox" name="zrr" /></td>
|
||||
<td><label>责任人员:</label><input id="zrr" class="easyui-combobox" name="zrr" editable=false/></td>
|
||||
<td><label>关联风险点</label><a onclick="choosefxd()" class="easyui-linkbutton">选择</a>
|
||||
<span style="color: blue;" id="fxdspan"></span>
|
||||
<input type=hidden id="fxdinput" name="riskact">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><label>技术参数:</label><input id="parameter" class="easyui-textbox" name="parameter"
|
||||
style="height:100px" data-options="multiline:true" /></td>
|
||||
<td colspan="3"><label>技术参数:</label><input id="parameter" class="easyui-textbox" name="parameter"
|
||||
style="height:100px;width:90%" data-options="multiline:true" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a id="savesb" onclick="savesb()" class="easyui-linkbutton" data-options="iconCls: 'fa-save'">保存</a></td>
|
||||
|
|
@ -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)
|
||||
}
|
||||
</script>
|
||||
|
|
@ -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) {
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
<div id="riskactbar" style="padding:5px;height:auto">
|
||||
<div>
|
||||
<form id="searchriskactff">
|
||||
<label>区域</label>
|
||||
<input class="easyui-combotree" name="area" data-options="
|
||||
url: 'api/area?a=tree',
|
||||
method: 'get',
|
||||
editable: false,
|
||||
loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},
|
||||
formatter: function (node) {
|
||||
var s = node.text;
|
||||
if (node.children) {
|
||||
s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
|
||||
}
|
||||
return s;
|
||||
},"/>
|
||||
<a onclick="searchriskact()" class="easyui-linkbutton" data-options="iconCls: 'fa-search',plain:true">查询</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<table id="riskacttable" style="height:100%;"></table>
|
||||
</div>
|
||||
<script>
|
||||
var area = {{area}};
|
||||
var url = 'api/riskact?a=listall&type=396&area='+area
|
||||
$('#riskacttable').datagrid({
|
||||
url: url,
|
||||
singleSelect:true,
|
||||
rownumbers: true,
|
||||
fitColumns: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
toolbar: '#riskactbar',
|
||||
pagination: 'true',
|
||||
pageSize: 20,
|
||||
columns: [[
|
||||
// { field: 'ck', checkbox:true },
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'area__name', title: '区域', width: 100 },
|
||||
{ field: 'type__dickeyname', title: '类型', width: 80 },
|
||||
{ field: 'name', title: '名称', width: 100 },
|
||||
{ field: 'level', title: '级别', width: 80 , styler: function (value, row, index) {
|
||||
switch (value) {
|
||||
case '低风险': return 'background-color:blue;color:white'; break;
|
||||
case '一般风险': return 'background-color:yellow;'; break;
|
||||
case '较大风险': return 'background-color:orange;'; break;
|
||||
case '重大风险': return 'background-color:red;color:white'; break;
|
||||
}
|
||||
}},
|
||||
{ field: 'gkcj', title: '层级', width: 80 },
|
||||
{ field: 'zrbm__partname', title: '责任部门', width: 80 },
|
||||
{ field: 'zrr__name', title: '责任人', width: 80 },
|
||||
{ field: 'group__groupname', title: '岗位', width: 100 },
|
||||
]],
|
||||
onSelect: function (index, data) {
|
||||
$('#fxdspan').css('color','blue')
|
||||
$('#fxdspan').html(' '+data.name)
|
||||
$('#fxdinput').val(data.id)
|
||||
closeForm()
|
||||
}})
|
||||
function searchriskact(){
|
||||
var querydata = $('#searchriskactff').serializeJSON();
|
||||
$('#riskacttable').datagrid('load',querydata);
|
||||
}
|
||||
</script>
|
||||
|
|
@ -100,6 +100,15 @@
|
|||
$.messager.alert('提示', '未选择作业类型!');
|
||||
}
|
||||
|
||||
}
|
||||
function addspjd(){
|
||||
var row = $('#zylxlist').datalist('getSelected')
|
||||
if (row){
|
||||
opendg('新增审批节点','html/operationspjd/add')
|
||||
}else{
|
||||
$.messager.alert('提示', '未选择作业类型!');
|
||||
}
|
||||
|
||||
}
|
||||
function delspjd(){
|
||||
var row = $('#spjdtable').datagrid('getSelected')
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@ urlpatterns = [
|
|||
path('html/bhr',views.bhrhtml),
|
||||
path('riskas',views.riskas),
|
||||
path('html/examhistory/<int:id>/',views.examhistory),
|
||||
path('html/riskact/chose',views.riskactchose),
|
||||
path('html/trainfig',views.trainfigure),
|
||||
path('html/examfig',views.examfigure),
|
||||
#html页面
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import decimal
|
|||
from . import forms
|
||||
from .models import CompanyInfo
|
||||
from django.contrib.sessions.models import Session
|
||||
from groups import models as g_models
|
||||
import logging
|
||||
logger = logging.getLogger('log')
|
||||
|
||||
|
|
@ -96,6 +97,11 @@ def taskdo(req):
|
|||
return render(req,'taskdo.html')
|
||||
def task(req):
|
||||
return render(req,'task.html')
|
||||
def riskactchose(req):
|
||||
area = 0
|
||||
if req.GET.get('area',None):
|
||||
area = req.GET.get('area')
|
||||
return render(req,'riskactchose.html',locals())
|
||||
def riskactedit(req,id):
|
||||
return render(req,'riskactedit.html',{'id':id})
|
||||
def riskactadd(req):
|
||||
|
|
@ -512,11 +518,11 @@ def getspr(ubp):
|
|||
|
||||
def getsprs(userid,ubp):
|
||||
currentpart=ubp
|
||||
a=getsprs_ubp(userid,currentpart)
|
||||
a=getsprs_ubp2(userid,currentpart)
|
||||
while a==False:
|
||||
currentpart=currentpart.parentid #已找不到上级部门
|
||||
if currentpart:
|
||||
a=getsprs_ubp(userid,currentpart)
|
||||
a=getsprs_ubp2(userid,currentpart)
|
||||
else:
|
||||
return User.objects.get(ubelongpart=currentpart,issuper=1)
|
||||
return a
|
||||
|
|
@ -545,6 +551,16 @@ def getsprs_ubp(userid,ubp):
|
|||
else:
|
||||
return False
|
||||
|
||||
def getsprs_ubp2(userid,ubp):
|
||||
a=ubp
|
||||
if a.aqy !=',' or a.bmzg !=',':
|
||||
allstr = a.aqy + a.bmzg
|
||||
alllist = allstr.split(',')
|
||||
alist = list(map(int, list(filter(None, alllist))))
|
||||
return alist
|
||||
else:
|
||||
return False
|
||||
|
||||
@check_login
|
||||
def menutree(req):
|
||||
userid = req.session['userid']
|
||||
|
|
@ -573,7 +589,7 @@ def apirights(req):
|
|||
allrights = Group.objects.get(usecomp__partid=companyid,grouptype=0).menulink.split(',')
|
||||
menus = Menu.objects.exclude(menuid__in=[11,9]).filter(menuid__in = allrights,deletemark=1).order_by('menuid').values('menuid','menucode','parentid','url','menuname','icon').distinct()
|
||||
for i in menus:
|
||||
if str(i['menuid']) in haverights:
|
||||
if str(i['menuid']) in haverights and i['url'] != None:
|
||||
i['checked']=True
|
||||
else:
|
||||
i['checked']=False
|
||||
|
|
@ -585,6 +601,10 @@ def apirights(req):
|
|||
rlist = ['11','9']
|
||||
for i in data:
|
||||
rlist.append(str(i['id']))
|
||||
# x = i['id']
|
||||
# while Menu.objects.get(menuid=x).parentid != None:
|
||||
# x = Menu.objects.get(menuid=x).parentid.menuid
|
||||
# rlist.append(str(x))
|
||||
Group.objects.filter(groupid=groupid).update(menulink=','.join(list(set(rlist))))
|
||||
return JsonResponse({"code":1})
|
||||
elif a=='have':
|
||||
|
|
@ -1272,7 +1292,7 @@ def getdickey(req):
|
|||
if req.GET.get('dicclass')=='33':
|
||||
for i in a:
|
||||
objs = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=i['dickeyid']),usecomp=Partment.objects.get(partid=companyid))
|
||||
str='作业部门主管-属地部门主管'
|
||||
str='作业负责人-作业部门安全员-属地部门安全员'
|
||||
for x in objs:
|
||||
str = str + '-' + x.jdmc
|
||||
i['splcdetail'] = str
|
||||
|
|
@ -4043,6 +4063,19 @@ def apitool(req):
|
|||
x['id']=i.partid
|
||||
m.append(x)
|
||||
return JsonResponse({'wxgs':m})
|
||||
elif a == 'correct_spjd':
|
||||
for i in Operationspjd.objects.all():
|
||||
if i.spr:
|
||||
i.sprs = [i.spr.userid]
|
||||
i.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'supercompany':
|
||||
supergroup = g_models.Group.objects.get(groupname='supergroup')
|
||||
for i in Partment.objects.filter(iscompany=1,deletemark=1):
|
||||
obj,create = g_models.Groupmember.objects.get_or_create(group=supergroup,member=i,defaults={'group':supergroup,'member':i})
|
||||
if create:
|
||||
print(i.partname+'---加入supergroup')
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
|
||||
|
||||
|
|
@ -4259,9 +4292,9 @@ def apioperation(req):
|
|||
obj.zyzt = {'zyzt':'确认中','index':0}
|
||||
obj.save()
|
||||
splc = []
|
||||
splc.append({'jdmc':'作业负责人审批','sprs':[userid]})
|
||||
splc.append({'jdmc':'作业部门审批','sprs':getsprs(userid,obj.zybm)})
|
||||
splc.append({'jdmc':'属地部门审批','sprs':getsprs(userid,obj.sdbm)})
|
||||
splc.append({'jdmc':'作业负责人','sprs':[userid]})
|
||||
splc.append({'jdmc':'作业部门审批中','sprs':getsprs(userid,obj.zybm)})
|
||||
splc.append({'jdmc':'属地部门审批中','sprs':getsprs(userid,obj.sdbm)})
|
||||
for i in Operationspjd.objects.filter(zylx=obj.zylx,usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'):
|
||||
splc.append({'jdmc':i.jdmc,'sprs':i.sprs})
|
||||
obj.zyzt['splc']=splc
|
||||
|
|
@ -5360,6 +5393,8 @@ def apiequipment(req):
|
|||
obj.zrbm = Partment.objects.get(partid=data['zrbm'])
|
||||
if data['zrr']:
|
||||
obj.zrr = User.objects.get(userid=data['zrr'] )
|
||||
if data['riskact']:
|
||||
obj.riskact = RiskAct.objects.get(id=data['riskact'])
|
||||
obj.parameter = data['parameter']
|
||||
obj.usecomp=Partment.objects.get(partid=companyid)
|
||||
obj.save()
|
||||
|
|
@ -5377,7 +5412,7 @@ def apiequipment(req):
|
|||
return JsonResponse({"code":0})
|
||||
elif a == 'detail':
|
||||
id = req.GET.get('id')
|
||||
a = Equipment.objects.filter(id=id).values('id','num','name','type','oem','udate','fdate','fnum','place','istz','iskey','state','cate__dickeyname','cate__dickeyid','parameter','img','area__name','area__id','zrbm__partid','zrr__userid','zrbm__partname','zrr__name','qrcode')
|
||||
a = Equipment.objects.filter(id=id).values('id','num','name','type','oem','udate','fdate','fnum','place','istz','iskey','state','cate__dickeyname','cate__dickeyid','parameter','img','area__name','area__id','zrbm__partid','zrr__userid','zrbm__partname','zrr__name','qrcode','riskact__name','riskact__id')
|
||||
return JsonResponse(a[0])
|
||||
|
||||
|
||||
|
|
@ -5482,9 +5517,9 @@ def apiriskact(req):
|
|||
companyid = getcompany(userid)
|
||||
if a=='listall':
|
||||
a = RiskAct.objects.filter(usecomp__partid=companyid)
|
||||
if req.GET.get('area'):
|
||||
if int(req.GET.get('area',0)):
|
||||
a = a.filter(area__id = req.GET.get('area'))
|
||||
if req.GET.get('type'):
|
||||
if int(req.GET.get('type',0)):
|
||||
a = a.filter(type__dickeyid=req.GET.get('type'))
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
|
|
@ -5620,8 +5655,14 @@ def apirisk(req):
|
|||
data = json.loads(req.body.decode('utf-8'))
|
||||
if req.GET.get('type') == 'equipment':
|
||||
areaid = data['areaid']
|
||||
equipmentid = data['id']
|
||||
equipmentname = data['name']
|
||||
objs = Risk.objects.filter(usecomp__partid=companyid,riskact__area__id=areaid,riskact__name__contains=equipmentname)
|
||||
objs = Risk.objects.filter(usecomp__partid=companyid)
|
||||
equipment = Equipment.objects.get(id=equipmentid)
|
||||
if equipment.riskact:#如果该设备存在绑定的风险
|
||||
objs = objs.filter(riskact=equipment.riskact)
|
||||
else:
|
||||
objs = objs.filter(riskact__area__id=areaid,riskact__name__contains=equipmentname)
|
||||
if objs.exists():
|
||||
return JsonResponse({'code':1,'steps':list(objs.values('id','step','hazard','result','level','riskact__group__groupname','riskact__zrbm__partname','riskact__zrr__name'))})
|
||||
else:
|
||||
|
|
|
|||
Loading…
Reference in New Issue