spjdedit
This commit is contained in:
parent
19368b7901
commit
a6808ea7f0
BIN
groups.zip
BIN
groups.zip
Binary file not shown.
|
@ -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>
|
|
@ -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页面
|
||||
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue