This commit is contained in:
caoqianming 2019-11-04 16:55:29 +08:00
parent 19368b7901
commit a6808ea7f0
8 changed files with 162 additions and 29 deletions

Binary file not shown.

View File

@ -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'),
),
]

View File

@ -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 = (

View File

@ -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>

View File

@ -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) {

View File

@ -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 += '&nbsp;<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>

View File

@ -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),
#html页面

View File

@ -95,6 +95,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):
@ -566,7 +571,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
@ -578,6 +583,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':
@ -4036,6 +4045,12 @@ 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})
@ -5353,6 +5368,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()
@ -5370,7 +5387,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])
@ -5475,9 +5492,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)
@ -5613,8 +5630,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: