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">
|
<table id="example1" class="table table-bordered table-striped">
|
||||||
<thead>
|
<thead>
|
||||||
<tr role="row">
|
<tr role="row">
|
||||||
<th class="sorting_asc" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 164.933px;" aria-sort="ascending"
|
<!-- <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>
|
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;"
|
<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>
|
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;"
|
<th class="sorting" tabindex="0" aria-controls="example1" rowspan="1" colspan="1" style="width: 179.933px;"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}在线考试统计{% endblock %}
|
{% block title %}在线考试统计{% endblock %}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
{% block pagehead %}
|
{% block pagehead %}
|
||||||
<h1>
|
<h1>
|
||||||
|
|
@ -174,5 +173,4 @@
|
||||||
map.setCenter([x/num,y/num])
|
map.setCenter([x/num,y/num])
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}未遂事件统计{% endblock %}
|
{% block title %}未遂事件统计{% endblock %}
|
||||||
|
|
@ -140,4 +139,3 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}行为统计{% endblock %}
|
{% block title %}行为统计{% endblock %}
|
||||||
|
|
@ -137,4 +136,3 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}风险管控{% endblock %}
|
{% block title %}风险管控{% endblock %}
|
||||||
|
|
@ -174,4 +173,3 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}教育培训统计{% endblock %}
|
{% block title %}教育培训统计{% endblock %}
|
||||||
|
|
@ -141,4 +140,3 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
{% extends "./base.html" %}
|
{% extends "./base.html" %}
|
||||||
|
|
||||||
{% block title %}隐患统计{% endblock %}
|
{% block title %}隐患统计{% endblock %}
|
||||||
|
|
@ -134,4 +133,3 @@
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
>>>>>>> 3bc970596107f51c6970b99f250cfccf1d7d4345
|
|
||||||
|
|
|
||||||
634
groups/views.py
634
groups/views.py
|
|
@ -1,317 +1,317 @@
|
||||||
from django.http import HttpResponse, JsonResponse
|
from django.http import HttpResponse, JsonResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from .models import Group, GroupUser
|
from .models import Group, GroupUser
|
||||||
from .forms import GroupUserForm, UserForm
|
from .forms import GroupUserForm, UserForm
|
||||||
from safesite import models as s_models
|
from safesite import models as s_models
|
||||||
from safesite.tasks import gettime
|
from safesite.tasks import gettime
|
||||||
import requests
|
import requests
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
from datetime import datetime, date, timedelta
|
from datetime import datetime, date, timedelta
|
||||||
from django.core.serializers.json import DjangoJSONEncoder
|
from django.core.serializers.json import DjangoJSONEncoder
|
||||||
from django.db.models import Q, F, Count, Sum
|
from django.db.models import Q, F, Count, Sum
|
||||||
from django.forms.models import model_to_dict
|
from django.forms.models import model_to_dict
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
|
|
||||||
|
|
||||||
def check_login(func): # 自定义登录验证装饰器
|
def check_login(func): # 自定义登录验证装饰器
|
||||||
def warpper(request, *args, **kwargs):
|
def warpper(request, *args, **kwargs):
|
||||||
is_login = request.session.get('is_login', False)
|
is_login = request.session.get('is_login', False)
|
||||||
if is_login:
|
if is_login:
|
||||||
return func(request, *args, **kwargs)
|
return func(request, *args, **kwargs)
|
||||||
else:
|
else:
|
||||||
return redirect('/groups/login')
|
return redirect('/groups/login')
|
||||||
|
|
||||||
return warpper
|
return warpper
|
||||||
|
|
||||||
|
|
||||||
def login(request):
|
def login(request):
|
||||||
# 不允许重复登录
|
# 不允许重复登录
|
||||||
if request.session.get('is_login', None):
|
if request.session.get('is_login', None):
|
||||||
return redirect('/groups/index/')
|
return redirect('/groups/index/')
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
groups_form = GroupUserForm(request.POST)
|
groups_form = GroupUserForm(request.POST)
|
||||||
message = '请检查填写的内容!'
|
message = '请检查填写的内容!'
|
||||||
if groups_form.is_valid():
|
if groups_form.is_valid():
|
||||||
username = groups_form.cleaned_data.get('username')
|
username = groups_form.cleaned_data.get('username')
|
||||||
password = groups_form.cleaned_data.get('password')
|
password = groups_form.cleaned_data.get('password')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
user = GroupUser.objects.get(username=username)
|
user = GroupUser.objects.get(username=username)
|
||||||
except:
|
except:
|
||||||
message = '用户不存在!'
|
message = '用户不存在!'
|
||||||
return render(request, 'groups/login.html', locals())
|
return render(request, 'groups/login.html', locals())
|
||||||
if user.password == password:
|
if user.password == password:
|
||||||
request.session['is_login'] = True
|
request.session['is_login'] = True
|
||||||
request.session['user_id'] = user.id
|
request.session['user_id'] = user.id
|
||||||
request.session['user_name'] = user.username
|
request.session['user_name'] = user.username
|
||||||
return redirect('/groups/index/')
|
return redirect('/groups/index/')
|
||||||
else:
|
else:
|
||||||
return render(request, 'groups/login.html', locals())
|
return render(request, 'groups/login.html', locals())
|
||||||
else:
|
else:
|
||||||
return render(request, 'groups/login.html', locals())
|
return render(request, 'groups/login.html', locals())
|
||||||
groups_form = GroupUserForm()
|
groups_form = GroupUserForm()
|
||||||
return render(request, 'groups/login.html', locals())
|
return render(request, 'groups/login.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def logout(request):
|
def logout(request):
|
||||||
# if not request.session.get('is_login', None):
|
# if not request.session.get('is_login', None):
|
||||||
# return redirect('/groups/login')
|
# return redirect('/groups/login')
|
||||||
request.session.flush()
|
request.session.flush()
|
||||||
return redirect('/groups/login')
|
return redirect('/groups/login')
|
||||||
|
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from captcha.models import CaptchaStore
|
from captcha.models import CaptchaStore
|
||||||
from captcha.helpers import captcha_image_url
|
from captcha.helpers import captcha_image_url
|
||||||
|
|
||||||
|
|
||||||
def refresh_captcha(request):
|
def refresh_captcha(request):
|
||||||
hashkey = CaptchaStore.generate_key()
|
hashkey = CaptchaStore.generate_key()
|
||||||
image_url = captcha_image_url(hashkey)
|
image_url = captcha_image_url(hashkey)
|
||||||
return HttpResponse(json.dumps({'key': hashkey, 'image_url': image_url}), content_type='application/json')
|
return HttpResponse(json.dumps({'key': hashkey, 'image_url': image_url}), content_type='application/json')
|
||||||
|
|
||||||
|
|
||||||
@check_login
|
@check_login
|
||||||
def company(request):
|
def company(request):
|
||||||
companys = GroupUser.objects.get(id=request.session['user_id']).group.members.all()
|
companys = GroupUser.objects.get(id=request.session['user_id']).group.members.all()
|
||||||
for i in companys:
|
for i in companys:
|
||||||
i.useradmin = s_models.User.objects.get(ubelongpart=i, issuper=1).username
|
i.useradmin = s_models.User.objects.get(ubelongpart=i, issuper=1).username
|
||||||
return render(request, 'groups/company.html', locals())
|
return render(request, 'groups/company.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def job(request):
|
def job(request):
|
||||||
return render(request, 'groups/job.html', locals())
|
return render(request, 'groups/job.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def company_user(request, cid):
|
def company_user(request, cid):
|
||||||
users = s_models.User.objects.filter(usecomp=cid)
|
users = s_models.User.objects.filter(usecomp=cid)
|
||||||
# for user in users:
|
# for user in users:
|
||||||
# dump(user)
|
# dump(user)
|
||||||
return render(request, 'groups/company_user.html', locals())
|
return render(request, 'groups/company_user.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def company_userdetail(request, uid):
|
def company_userdetail(request, uid):
|
||||||
try:
|
try:
|
||||||
user = s_models.User.objects.get(pk=uid)
|
user = s_models.User.objects.get(pk=uid)
|
||||||
except s_models.User.DoesNotExist:
|
except s_models.User.DoesNotExist:
|
||||||
raise Http404("User does not exist")
|
raise Http404("User does not exist")
|
||||||
|
|
||||||
# UserForm.set_usecomp(s_models.Partment.objects.filter(group__id=1))
|
# UserForm.set_usecomp(s_models.Partment.objects.filter(group__id=1))
|
||||||
user_form = UserForm(model_to_dict(user))
|
user_form = UserForm(model_to_dict(user))
|
||||||
|
|
||||||
return render(request, 'groups/company_userdetail.html', locals())
|
return render(request, 'groups/company_userdetail.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def groups_userupdate(request):
|
def groups_userupdate(request):
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
user_form = UserForm(request.POST)
|
user_form = UserForm(request.POST)
|
||||||
if user_form.is_valid():
|
if user_form.is_valid():
|
||||||
model_user = s_models.User.objects.filter(pk=user_form.cleaned_data.get('userid'))[0]
|
model_user = s_models.User.objects.filter(pk=user_form.cleaned_data.get('userid'))[0]
|
||||||
if model_user:
|
if model_user:
|
||||||
# model_user.ubelongpart = user_form.cleaned_data.get('ubelongpart')
|
# model_user.ubelongpart = user_form.cleaned_data.get('ubelongpart')
|
||||||
# model_user.usecomp = user_form.cleaned_data.get('usecomp')
|
# model_user.usecomp = user_form.cleaned_data.get('usecomp')
|
||||||
# model_user.save()
|
# model_user.save()
|
||||||
|
|
||||||
newpart = user_form.cleaned_data.get('ubelongpart')
|
newpart = user_form.cleaned_data.get('ubelongpart')
|
||||||
oldpart = model_user.ubelongpart
|
oldpart = model_user.ubelongpart
|
||||||
|
|
||||||
oldpart.aqy = oldpart.aqy.replace(',' + str(model_user.userid) + ',', '')
|
oldpart.aqy = oldpart.aqy.replace(',' + str(model_user.userid) + ',', '')
|
||||||
oldpart.bmzg = oldpart.bmzg.replace(',' + str(model_user.userid) + ',', '')
|
oldpart.bmzg = oldpart.bmzg.replace(',' + str(model_user.userid) + ',', '')
|
||||||
oldpart.bsq = oldpart.bsq.replace(',' + str(model_user.userid) + ',', '')
|
oldpart.bsq = oldpart.bsq.replace(',' + str(model_user.userid) + ',', '')
|
||||||
oldpart.save()
|
oldpart.save()
|
||||||
part = s_models.Partment.objects.get(partid=newpart.partid)
|
part = s_models.Partment.objects.get(partid=newpart.partid)
|
||||||
|
|
||||||
if part.iscompany == 1:
|
if part.iscompany == 1:
|
||||||
usecomp = part
|
usecomp = part
|
||||||
else:
|
else:
|
||||||
usecomp = s_models.Partment.objects.get(partid=part.partlink.split(',')[1])
|
usecomp = s_models.Partment.objects.get(partid=part.partlink.split(',')[1])
|
||||||
model_user.ubelongpart = part
|
model_user.ubelongpart = part
|
||||||
model_user.usecomp = usecomp
|
model_user.usecomp = usecomp
|
||||||
model_user.save()
|
model_user.save()
|
||||||
|
|
||||||
for i in s_models.Group.objects.filter(usecomp=usecomp):
|
for i in s_models.Group.objects.filter(usecomp=usecomp):
|
||||||
i.users.remove(model_user)
|
i.users.remove(model_user)
|
||||||
groupobj = s_models.Group.objects.filter(usecomp=usecomp, grouptype=3).first()
|
groupobj = s_models.Group.objects.filter(usecomp=usecomp, grouptype=3).first()
|
||||||
groupobj.users.add(model_user)
|
groupobj.users.add(model_user)
|
||||||
else:
|
else:
|
||||||
message = '没有发现该用户'
|
message = '没有发现该用户'
|
||||||
return render(request, 'groups/company_userchange.html', locals())
|
return render(request, 'groups/company_userchange.html', locals())
|
||||||
else:
|
else:
|
||||||
return redirect('/groups/company/')
|
return redirect('/groups/company/')
|
||||||
|
|
||||||
|
|
||||||
def company_userchange_page(request, uid):
|
def company_userchange_page(request, uid):
|
||||||
try:
|
try:
|
||||||
user = s_models.User.objects.get(pk=uid)
|
user = s_models.User.objects.get(pk=uid)
|
||||||
except s_models.User.DoesNotExist:
|
except s_models.User.DoesNotExist:
|
||||||
raise Http404("User does not exist")
|
raise Http404("User does not exist")
|
||||||
user_form = UserForm(model_to_dict(user))
|
user_form = UserForm(model_to_dict(user))
|
||||||
|
|
||||||
return render(request, 'groups/company_userchange.html', locals())
|
return render(request, 'groups/company_userchange.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def dump(obj):
|
def dump(obj):
|
||||||
print('\n'.join(['%s:%s' % item for item in obj.__dict__.items()]))
|
print('\n'.join(['%s:%s' % item for item in obj.__dict__.items()]))
|
||||||
|
|
||||||
|
|
||||||
@check_login
|
@check_login
|
||||||
def index(req):
|
def index(req):
|
||||||
first_day, first_day_of_next_month = gettime()
|
first_day, first_day_of_next_month = gettime()
|
||||||
group = GroupUser.objects.get(id=req.session['user_id']).group
|
group = GroupUser.objects.get(id=req.session['user_id']).group
|
||||||
companys = group.members.all()
|
companys = group.members.all()
|
||||||
troublenum = s_models.Trouble.objects.filter(deletemark=1, usecomp__in=companys,
|
troublenum = s_models.Trouble.objects.filter(deletemark=1, usecomp__in=companys,
|
||||||
fxsj__range=(first_day, first_day_of_next_month)).count()
|
fxsj__range=(first_day, first_day_of_next_month)).count()
|
||||||
observenum = s_models.Observe.objects.filter(deletemark=1, usecomp__in=companys,
|
observenum = s_models.Observe.objects.filter(deletemark=1, usecomp__in=companys,
|
||||||
looktime__range=(first_day, first_day_of_next_month)).count()
|
looktime__range=(first_day, first_day_of_next_month)).count()
|
||||||
missnum = s_models.Miss.objects.filter(deletemark=1, usecomp__in=companys,
|
missnum = s_models.Miss.objects.filter(deletemark=1, usecomp__in=companys,
|
||||||
misstime__range=(first_day, first_day_of_next_month)).count()
|
misstime__range=(first_day, first_day_of_next_month)).count()
|
||||||
trainnum = s_models.Train.objects.filter(deletemark=1, usecomp__in=companys,
|
trainnum = s_models.Train.objects.filter(deletemark=1, usecomp__in=companys,
|
||||||
starttime__range=(first_day, first_day_of_next_month)).count()
|
starttime__range=(first_day, first_day_of_next_month)).count()
|
||||||
companynum = len(companys)
|
companynum = len(companys)
|
||||||
usernum = s_models.User.objects.filter(deletemark=1, usecomp__in=companys).count()
|
usernum = s_models.User.objects.filter(deletemark=1, usecomp__in=companys).count()
|
||||||
return render(req, 'groups/index.html', locals())
|
return render(req, 'groups/index.html', locals())
|
||||||
|
|
||||||
|
|
||||||
def updateposition(req):
|
def updateposition(req):
|
||||||
allcompanys = s_models.Partment.objects.filter(deletemark=1, iscompany=1)
|
allcompanys = s_models.Partment.objects.filter(deletemark=1, iscompany=1)
|
||||||
for i in allcompanys:
|
for i in allcompanys:
|
||||||
address = i.partname
|
address = i.partname
|
||||||
data = getPosition(address)
|
data = getPosition(address)
|
||||||
if data['status'] == '1' and int(data['count']) > 0:
|
if data['status'] == '1' and int(data['count']) > 0:
|
||||||
i.position = data['geocodes'][0]
|
i.position = data['geocodes'][0]
|
||||||
i.save()
|
i.save()
|
||||||
else:
|
else:
|
||||||
address = i.partname.replace('公司', '').replace('责任', '').replace('有限', '')
|
address = i.partname.replace('公司', '').replace('责任', '').replace('有限', '')
|
||||||
data = getPosition(address)
|
data = getPosition(address)
|
||||||
if data['status'] == '1' and int(data['count']) > 0:
|
if data['status'] == '1' and int(data['count']) > 0:
|
||||||
i.position = data['geocodes'][0]
|
i.position = data['geocodes'][0]
|
||||||
i.save()
|
i.save()
|
||||||
return JsonResponse({"code": 1})
|
return JsonResponse({"code": 1})
|
||||||
|
|
||||||
|
|
||||||
def getPosition(address):
|
def getPosition(address):
|
||||||
url = 'http://restapi.amap.com/v3/geocode/geo'
|
url = 'http://restapi.amap.com/v3/geocode/geo'
|
||||||
par = {'address': address, 'key': '86e0993305a427ac2d0b5371ad97f242'}
|
par = {'address': address, 'key': '86e0993305a427ac2d0b5371ad97f242'}
|
||||||
res = requests.get(url, par)
|
res = requests.get(url, par)
|
||||||
json_data = json.loads(res.text)
|
json_data = json.loads(res.text)
|
||||||
return json_data
|
return json_data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def apipositions(req):
|
def apipositions(req):
|
||||||
companys = GroupUser.objects.get(id = req.session['user_id']).group.members.all()
|
companys = GroupUser.objects.get(id = req.session['user_id']).group.members.all()
|
||||||
positions = companys.values('position','partname')
|
positions = companys.values('position','partname')
|
||||||
return JsonResponse({"code":1,"data":list(positions)})
|
return JsonResponse({"code":1,"data":list(positions)})
|
||||||
def trouble(request):#隐患排查
|
def trouble(request):#隐患排查
|
||||||
return render(request, 'groups/troublepic.html', locals())
|
return render(request, 'groups/troublepic.html', locals())
|
||||||
def observe(request):#行为观察
|
def observe(request):#行为观察
|
||||||
return render(request, 'groups/observe.html', locals())
|
return render(request, 'groups/observe.html', locals())
|
||||||
def miss(request):#未遂事件
|
def miss(request):#未遂事件
|
||||||
return render(request, 'groups/miss.html', locals())
|
return render(request, 'groups/miss.html', locals())
|
||||||
def risk(request):#风险管控
|
def risk(request):#风险管控
|
||||||
return render(request, 'groups/risk.html', locals())
|
return render(request, 'groups/risk.html', locals())
|
||||||
def train(request):#教育培训
|
def train(request):#教育培训
|
||||||
return render(request, 'groups/train.html', locals())
|
return render(request, 'groups/train.html', locals())
|
||||||
def exam(request):#在线考试
|
def exam(request):#在线考试
|
||||||
return render(request, 'groups/exam.html', locals())
|
return render(request, 'groups/exam.html', locals())
|
||||||
def troubleChart(request):#隐患统计图
|
def troubleChart(request):#隐患统计图
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
if code=='tbpic':
|
if code=='tbpic':
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
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')
|
troublelist = s_models.Trouble.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname')
|
||||||
if start:
|
if start:
|
||||||
troublelist = troublelist.filter(fxsj__gte=start)
|
troublelist = troublelist.filter(fxsj__gte=start)
|
||||||
if end:
|
if end:
|
||||||
troublelist = troublelist.filter(fxsj__lte=end)
|
troublelist = troublelist.filter(fxsj__lte=end)
|
||||||
troublelist=troublelist.annotate(number = Count('usecomp')).order_by('-number')
|
troublelist=troublelist.annotate(number = Count('usecomp')).order_by('-number')
|
||||||
|
|
||||||
return HttpResponse(json.dumps({'code':1,'data':{'troublelist':list(troublelist)}}), content_type='application/json')
|
return HttpResponse(json.dumps({'code':1,'data':{'troublelist':list(troublelist)}}), content_type='application/json')
|
||||||
def observeChart(request):#行为观察
|
def observeChart(request):#行为观察
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
if code=='obv':
|
if code=='obv':
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
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')
|
observelist = s_models.Observe.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname')
|
||||||
if start:
|
if start:
|
||||||
observelist = observelist.filter(looktime__gte=start)
|
observelist = observelist.filter(looktime__gte=start)
|
||||||
if end:
|
if end:
|
||||||
observelist = observelist.filter(looktime__lte=end)
|
observelist = observelist.filter(looktime__lte=end)
|
||||||
observelist=observelist.annotate(number = Count('usecomp')).order_by('-number')
|
observelist=observelist.annotate(number = Count('usecomp')).order_by('-number')
|
||||||
return HttpResponse(json.dumps({'code':1,'data':{'observelist':list(observelist)}}), content_type='application/json')
|
return HttpResponse(json.dumps({'code':1,'data':{'observelist':list(observelist)}}), content_type='application/json')
|
||||||
|
|
||||||
def missChart(request):#未遂事件
|
def missChart(request):#未遂事件
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
if code=='miss':
|
if code=='miss':
|
||||||
|
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
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')
|
misslist = s_models.Miss.objects.filter(deletemark=1,usecomp__in=companys).values('usecomp__partid','usecomp__partname')
|
||||||
if start:
|
if start:
|
||||||
misslist = misslist.filter(misstime__gte=start)
|
misslist = misslist.filter(misstime__gte=start)
|
||||||
if end:
|
if end:
|
||||||
misslist = misslist.filter(misstime__lte=end)
|
misslist = misslist.filter(misstime__lte=end)
|
||||||
misslist=misslist.annotate(number = Count('usecomp')).order_by('-number')
|
misslist=misslist.annotate(number = Count('usecomp')).order_by('-number')
|
||||||
return HttpResponse(json.dumps({'code':1,'data':{'misslist':list(misslist)}}), content_type='application/json')
|
return HttpResponse(json.dumps({'code':1,'data':{'misslist':list(misslist)}}), content_type='application/json')
|
||||||
|
|
||||||
def riskChart(request):#风险管控
|
def riskChart(request):#风险管控
|
||||||
|
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
risks = []
|
risks = []
|
||||||
if code=='risk':
|
if code=='risk':
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
||||||
for i in companys:
|
for i in companys:
|
||||||
risk= s_models.RiskAct.objects.filter(usecomp__partid=i.partid)
|
risk= s_models.RiskAct.objects.filter(usecomp__partid=i.partid)
|
||||||
if start:
|
if start:
|
||||||
risk = risk.filter(createtime__gte=start)
|
risk = risk.filter(createtime__gte=start)
|
||||||
if end:
|
if end:
|
||||||
risk = risk.filter(createtime__lte=end)
|
risk = risk.filter(createtime__lte=end)
|
||||||
datariskact=risk.count()
|
datariskact=risk.count()
|
||||||
datariskact1=risk.filter(level="低风险").count()
|
datariskact1=risk.filter(level="低风险").count()
|
||||||
datariskact2=risk.filter(level="一般风险").count()
|
datariskact2=risk.filter(level="一般风险").count()
|
||||||
datariskact3=risk.filter(level="较大风险").count()
|
datariskact3=risk.filter(level="较大风险").count()
|
||||||
datariskact4=risk.filter(level="重大风险").count()
|
datariskact4=risk.filter(level="重大风险").count()
|
||||||
risks.append({'companyName':i.partname,'datariskact':datariskact,'datariskact1':datariskact1,'datariskact2':datariskact2,'datariskact3':datariskact3,'datariskact4':datariskact4})
|
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')
|
return HttpResponse(json.dumps({'code':1,'risks':risks}), content_type='application/json')
|
||||||
|
|
||||||
def trainChart(request):#教育培训
|
def trainChart(request):#教育培训
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
if code=='train':
|
if code=='train':
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
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')
|
trainlist = s_models.Train.objects.filter(usecomp__in=companys,deletemark=1).values('usecomp__partid','usecomp__partname')
|
||||||
if start:
|
if start:
|
||||||
trainlist = trainlist.filter(starttime__gte=start)
|
trainlist = trainlist.filter(starttime__gte=start)
|
||||||
if end:
|
if end:
|
||||||
trainlist = trainlist.filter(starttime__lte=end)
|
trainlist = trainlist.filter(starttime__lte=end)
|
||||||
trainlist=trainlist.annotate(number = Count('usecomp')).order_by('-number')
|
trainlist=trainlist.annotate(number = Count('usecomp')).order_by('-number')
|
||||||
|
|
||||||
return HttpResponse(json.dumps({'code':1,'data':{'trainlist':list(trainlist)}}), content_type='application/json')
|
return HttpResponse(json.dumps({'code':1,'data':{'trainlist':list(trainlist)}}), content_type='application/json')
|
||||||
|
|
||||||
def examChart(request):#在线考试
|
def examChart(request):#在线考试
|
||||||
code = request.GET.get('code')
|
code = request.GET.get('code')
|
||||||
start = request.GET.get('start')
|
start = request.GET.get('start')
|
||||||
end = request.GET.get('end')
|
end = request.GET.get('end')
|
||||||
examjson = []
|
examjson = []
|
||||||
if code=='exam':
|
if code=='exam':
|
||||||
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
companys = GroupUser.objects.get(id = request.session['user_id']).group.members.all()
|
||||||
|
|
||||||
for i in companys:
|
for i in companys:
|
||||||
examnumber = s_models.ExamTest.objects.filter(usecomps__contains=','+str(i.partid)+',')
|
examnumber = s_models.ExamTest.objects.filter(usecomps__contains=','+str(i.partid)+',')
|
||||||
if start:
|
if start:
|
||||||
examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__gte=start)
|
examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__gte=start)
|
||||||
if end:
|
if end:
|
||||||
examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__lte=end)
|
examnumber = examnumber.filter(usecomps__contains=','+str(i.partid)+',',starttime__lte=end)
|
||||||
examjson.append({'companyName':i.partname,'number':examnumber.count()})
|
examjson.append({'companyName':i.partname,'number':examnumber.count()})
|
||||||
return HttpResponse(json.dumps({'code':1,'data':examjson}), content_type='application/json')
|
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)
|
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):#设备表
|
class Equipment(models.Model):#设备表
|
||||||
id = models.AutoField(primary_key=True)
|
id = models.AutoField(primary_key=True)
|
||||||
num = models.CharField(max_length=30,null=True,blank=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)
|
zrr = models.ForeignKey(User,on_delete=models.CASCADE,null=True,blank=True)
|
||||||
img = models.CharField(max_length=1000,blank=True,null=True)
|
img = models.CharField(max_length=1000,blank=True,null=True)
|
||||||
qrcode = models.CharField(max_length=200,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):#设备巡检记录
|
class Inspect(models.Model):#设备巡检记录
|
||||||
id = models.AutoField(primary_key=True)
|
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)
|
user = models.ForeignKey(User,blank=True,null=True,on_delete=models.CASCADE)
|
||||||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||||||
trouble = models.ForeignKey(Trouble,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):#风险表
|
class Risk(models.Model):#风险表
|
||||||
tasktype_choices = (
|
tasktype_choices = (
|
||||||
|
|
|
||||||
|
|
@ -64,11 +64,15 @@
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><label>责任部门:</label><input id="zrbm" name="zrbm" /></td>
|
<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>
|
||||||
<tr>
|
<tr>
|
||||||
<td><label>技术参数:</label><input id="parameter" class="easyui-textbox" name="parameter"
|
<td colspan="3"><label>技术参数:</label><input id="parameter" class="easyui-textbox" name="parameter"
|
||||||
style="height:100px" data-options="multiline:true" /></td>
|
style="height:100px;width:90%" data-options="multiline:true" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><a id="savesb" onclick="savesb()" class="easyui-linkbutton" data-options="iconCls: 'fa-save'">保存</a></td>
|
<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)
|
$('#cate').combobox('setValue', res.cate__dickeyid)
|
||||||
$('#area').combotree('setValue', res.area__id)
|
$('#area').combotree('setValue', res.area__id)
|
||||||
$('#zrbm').combotree('setValue', res.zrbm__partid)
|
$('#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)
|
$('#zrr').combobox({ url: 'getuser?partid=' + res.zrbm__partid + '&a=combobox', }).combobox('setValue', res.zrr__userid)
|
||||||
if (res.iskey == 1) {
|
if (res.iskey == 1) {
|
||||||
$('#iskey').prop("checked", true);
|
$('#iskey').prop("checked", true);
|
||||||
|
|
@ -320,4 +331,9 @@
|
||||||
}; //请求完成
|
}; //请求完成
|
||||||
xhr.onerror = function (evt) { $.messager.alert('提示', '失败!文件内容有误'); document.getElementById('drfile').value = ''; }; //请求失败
|
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>
|
</script>
|
||||||
|
|
@ -14,14 +14,15 @@
|
||||||
animate: true,
|
animate: true,
|
||||||
checkbox: true,
|
checkbox: true,
|
||||||
lines: true,
|
lines: true,
|
||||||
loadFilter: function (rows) {
|
loadFilter: function (rows) {
|
||||||
return convertmenu(rows);
|
var rows = convertmenu(rows)
|
||||||
|
return rows;
|
||||||
},
|
},
|
||||||
onClick: function (node) {
|
onClick: function (node) {
|
||||||
|
|
||||||
},
|
},
|
||||||
onCheck:function(node){
|
onCheck:function(node){
|
||||||
console.log($('#rightstree').tree('getChecked', ['checked','indeterminate']))
|
//console.log($('#rightstree').tree('getChecked', ['checked','indeterminate']))
|
||||||
},
|
},
|
||||||
onBeforeLoad: function (node, param) {
|
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('提示', '未选择作业类型!');
|
$.messager.alert('提示', '未选择作业类型!');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
function addspjd(){
|
||||||
|
var row = $('#zylxlist').datalist('getSelected')
|
||||||
|
if (row){
|
||||||
|
opendg('新增审批节点','html/operationspjd/add')
|
||||||
|
}else{
|
||||||
|
$.messager.alert('提示', '未选择作业类型!');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
function delspjd(){
|
function delspjd(){
|
||||||
var row = $('#spjdtable').datagrid('getSelected')
|
var row = $('#spjdtable').datagrid('getSelected')
|
||||||
|
|
|
||||||
|
|
@ -88,6 +88,7 @@ urlpatterns = [
|
||||||
path('html/bhr',views.bhrhtml),
|
path('html/bhr',views.bhrhtml),
|
||||||
path('riskas',views.riskas),
|
path('riskas',views.riskas),
|
||||||
path('html/examhistory/<int:id>/',views.examhistory),
|
path('html/examhistory/<int:id>/',views.examhistory),
|
||||||
|
path('html/riskact/chose',views.riskactchose),
|
||||||
path('html/trainfig',views.trainfigure),
|
path('html/trainfig',views.trainfigure),
|
||||||
path('html/examfig',views.examfigure),
|
path('html/examfig',views.examfigure),
|
||||||
#html页面
|
#html页面
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ import decimal
|
||||||
from . import forms
|
from . import forms
|
||||||
from .models import CompanyInfo
|
from .models import CompanyInfo
|
||||||
from django.contrib.sessions.models import Session
|
from django.contrib.sessions.models import Session
|
||||||
|
from groups import models as g_models
|
||||||
import logging
|
import logging
|
||||||
logger = logging.getLogger('log')
|
logger = logging.getLogger('log')
|
||||||
|
|
||||||
|
|
@ -96,6 +97,11 @@ def taskdo(req):
|
||||||
return render(req,'taskdo.html')
|
return render(req,'taskdo.html')
|
||||||
def task(req):
|
def task(req):
|
||||||
return render(req,'task.html')
|
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):
|
def riskactedit(req,id):
|
||||||
return render(req,'riskactedit.html',{'id':id})
|
return render(req,'riskactedit.html',{'id':id})
|
||||||
def riskactadd(req):
|
def riskactadd(req):
|
||||||
|
|
@ -512,11 +518,11 @@ def getspr(ubp):
|
||||||
|
|
||||||
def getsprs(userid,ubp):
|
def getsprs(userid,ubp):
|
||||||
currentpart=ubp
|
currentpart=ubp
|
||||||
a=getsprs_ubp(userid,currentpart)
|
a=getsprs_ubp2(userid,currentpart)
|
||||||
while a==False:
|
while a==False:
|
||||||
currentpart=currentpart.parentid #已找不到上级部门
|
currentpart=currentpart.parentid #已找不到上级部门
|
||||||
if currentpart:
|
if currentpart:
|
||||||
a=getsprs_ubp(userid,currentpart)
|
a=getsprs_ubp2(userid,currentpart)
|
||||||
else:
|
else:
|
||||||
return User.objects.get(ubelongpart=currentpart,issuper=1)
|
return User.objects.get(ubelongpart=currentpart,issuper=1)
|
||||||
return a
|
return a
|
||||||
|
|
@ -545,6 +551,16 @@ def getsprs_ubp(userid,ubp):
|
||||||
else:
|
else:
|
||||||
return False
|
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
|
@check_login
|
||||||
def menutree(req):
|
def menutree(req):
|
||||||
userid = req.session['userid']
|
userid = req.session['userid']
|
||||||
|
|
@ -573,7 +589,7 @@ def apirights(req):
|
||||||
allrights = Group.objects.get(usecomp__partid=companyid,grouptype=0).menulink.split(',')
|
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()
|
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:
|
for i in menus:
|
||||||
if str(i['menuid']) in haverights:
|
if str(i['menuid']) in haverights and i['url'] != None:
|
||||||
i['checked']=True
|
i['checked']=True
|
||||||
else:
|
else:
|
||||||
i['checked']=False
|
i['checked']=False
|
||||||
|
|
@ -585,6 +601,10 @@ def apirights(req):
|
||||||
rlist = ['11','9']
|
rlist = ['11','9']
|
||||||
for i in data:
|
for i in data:
|
||||||
rlist.append(str(i['id']))
|
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))))
|
Group.objects.filter(groupid=groupid).update(menulink=','.join(list(set(rlist))))
|
||||||
return JsonResponse({"code":1})
|
return JsonResponse({"code":1})
|
||||||
elif a=='have':
|
elif a=='have':
|
||||||
|
|
@ -1272,7 +1292,7 @@ def getdickey(req):
|
||||||
if req.GET.get('dicclass')=='33':
|
if req.GET.get('dicclass')=='33':
|
||||||
for i in a:
|
for i in a:
|
||||||
objs = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=i['dickeyid']),usecomp=Partment.objects.get(partid=companyid))
|
objs = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=i['dickeyid']),usecomp=Partment.objects.get(partid=companyid))
|
||||||
str='作业部门主管-属地部门主管'
|
str='作业负责人-作业部门安全员-属地部门安全员'
|
||||||
for x in objs:
|
for x in objs:
|
||||||
str = str + '-' + x.jdmc
|
str = str + '-' + x.jdmc
|
||||||
i['splcdetail'] = str
|
i['splcdetail'] = str
|
||||||
|
|
@ -4043,6 +4063,19 @@ def apitool(req):
|
||||||
x['id']=i.partid
|
x['id']=i.partid
|
||||||
m.append(x)
|
m.append(x)
|
||||||
return JsonResponse({'wxgs':m})
|
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.zyzt = {'zyzt':'确认中','index':0}
|
||||||
obj.save()
|
obj.save()
|
||||||
splc = []
|
splc = []
|
||||||
splc.append({'jdmc':'作业负责人审批','sprs':[userid]})
|
splc.append({'jdmc':'作业负责人','sprs':[userid]})
|
||||||
splc.append({'jdmc':'作业部门审批','sprs':getsprs(userid,obj.zybm)})
|
splc.append({'jdmc':'作业部门审批中','sprs':getsprs(userid,obj.zybm)})
|
||||||
splc.append({'jdmc':'属地部门审批','sprs':getsprs(userid,obj.sdbm)})
|
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'):
|
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})
|
splc.append({'jdmc':i.jdmc,'sprs':i.sprs})
|
||||||
obj.zyzt['splc']=splc
|
obj.zyzt['splc']=splc
|
||||||
|
|
@ -5360,6 +5393,8 @@ def apiequipment(req):
|
||||||
obj.zrbm = Partment.objects.get(partid=data['zrbm'])
|
obj.zrbm = Partment.objects.get(partid=data['zrbm'])
|
||||||
if data['zrr']:
|
if data['zrr']:
|
||||||
obj.zrr = User.objects.get(userid=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.parameter = data['parameter']
|
||||||
obj.usecomp=Partment.objects.get(partid=companyid)
|
obj.usecomp=Partment.objects.get(partid=companyid)
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
@ -5377,7 +5412,7 @@ def apiequipment(req):
|
||||||
return JsonResponse({"code":0})
|
return JsonResponse({"code":0})
|
||||||
elif a == 'detail':
|
elif a == 'detail':
|
||||||
id = req.GET.get('id')
|
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])
|
return JsonResponse(a[0])
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5482,9 +5517,9 @@ def apiriskact(req):
|
||||||
companyid = getcompany(userid)
|
companyid = getcompany(userid)
|
||||||
if a=='listall':
|
if a=='listall':
|
||||||
a = RiskAct.objects.filter(usecomp__partid=companyid)
|
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'))
|
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'))
|
a = a.filter(type__dickeyid=req.GET.get('type'))
|
||||||
total = a.count()
|
total = a.count()
|
||||||
startnum,endnum=fenye(req)
|
startnum,endnum=fenye(req)
|
||||||
|
|
@ -5620,8 +5655,14 @@ def apirisk(req):
|
||||||
data = json.loads(req.body.decode('utf-8'))
|
data = json.loads(req.body.decode('utf-8'))
|
||||||
if req.GET.get('type') == 'equipment':
|
if req.GET.get('type') == 'equipment':
|
||||||
areaid = data['areaid']
|
areaid = data['areaid']
|
||||||
|
equipmentid = data['id']
|
||||||
equipmentname = data['name']
|
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():
|
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'))})
|
return JsonResponse({'code':1,'steps':list(objs.values('id','step','hazard','result','level','riskact__group__groupname','riskact__zrbm__partname','riskact__zrr__name'))})
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue