This commit is contained in:
caoqianming 2021-12-27 00:43:30 +08:00
commit 68ce1021a8
9 changed files with 645 additions and 137 deletions

1
.gitignore vendored
View File

@ -121,6 +121,7 @@ celerybeat.pid
.venv
env/
venv/
venv2/
ENV/
env.bak/
venv.bak/

View File

@ -0,0 +1,54 @@
# Generated by Django 2.2.8 on 2021-12-26 21:32
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('safesite', '0391_auto_20211219_1812'),
]
operations = [
migrations.RemoveField(
model_name='checklistitem',
name='checklist',
),
migrations.AddField(
model_name='risk',
name='content',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='riskact',
name='table_type',
field=models.IntegerField(default=1, help_text='默认风险点,2是普通检查表', verbose_name='表格类型'),
),
migrations.AddField(
model_name='trouble',
name='riskcheck2',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='trouble_riskcheck2', to='safesite.Riskcheck2', verbose_name='关联检查'),
),
migrations.AlterField(
model_name='gridtaskset',
name='gridlevel',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Dickey', verbose_name='网格化层级'),
),
migrations.AlterField(
model_name='riskcheck',
name='trouble',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='riskcheck_trouble', to='safesite.Trouble'),
),
migrations.AlterField(
model_name='riskcheck2',
name='trouble',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='riskcheck2_trouble', to='safesite.Trouble'),
),
migrations.DeleteModel(
name='CheckList',
),
migrations.DeleteModel(
name='CheckListItem',
),
]

View File

@ -0,0 +1,33 @@
# Generated by Django 2.2.8 on 2021-12-27 00:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0392_auto_20211226_2132'),
]
operations = [
migrations.AlterField(
model_name='risk',
name='riskc',
field=models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True),
),
migrations.AlterField(
model_name='risk',
name='riskd',
field=models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True),
),
migrations.AlterField(
model_name='risk',
name='riske',
field=models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True),
),
migrations.AlterField(
model_name='risk',
name='riskl',
field=models.DecimalField(blank=True, decimal_places=1, max_digits=6, null=True),
),
]

View File

@ -258,6 +258,9 @@ class Trouble(models.Model): # 隐患排查
submituser = models.ForeignKey(User, related_name='submituser',
on_delete=models.CASCADE, null=True, blank=True) # 记录人
riskcheck2 = models.ForeignKey('safesite.riskcheck2',
verbose_name='关联检查', null=True, blank=True, related_name='trouble_riskcheck2', on_delete=models.SET_NULL)
class TroubleAccess(models.Model): # 隐患流程表
troubleid = models.ForeignKey(Trouble, on_delete=models.CASCADE)
@ -918,7 +921,11 @@ class Relation(models.Model): # 各模块关系表,没用到
remark = models.CharField(max_length=200, null=True, blank=True)
class RiskAct(models.Model): # 风险点表
class RiskAct(models.Model):
"""
风险点表/检查表
"""
table_type = models.IntegerField(default=1, verbose_name='表格类型', help_text='默认风险点,2是普通检查表')
kind_choices = (
(1, '工厂'),
(2, '矿山'),
@ -1050,6 +1057,7 @@ class Risk(models.Model): # 风险表
)
id = models.AutoField(primary_key=True)
order = models.IntegerField(default=1)
content = models.TextField(null=True, blank=True)
step = models.TextField(null=True, blank=True)
hazard = models.TextField(null=True, blank=True)
result = models.TextField(null=True, blank=True)
@ -1068,10 +1076,10 @@ class Risk(models.Model): # 风险表
createtime = models.DateTimeField(default=timezone.now)
createuser = models.ForeignKey(
User, related_name='riskcjr', on_delete=models.CASCADE, null=True, blank=True)
riskl = models.DecimalField(max_digits=6, decimal_places=1)
riske = models.DecimalField(max_digits=6, decimal_places=1)
riskc = models.DecimalField(max_digits=6, decimal_places=1)
riskd = models.DecimalField(max_digits=6, decimal_places=1)
riskl = models.DecimalField(max_digits=6, decimal_places=1, null=True, blank=True)
riske = models.DecimalField(max_digits=6, decimal_places=1, null=True, blank=True)
riskc = models.DecimalField(max_digits=6, decimal_places=1, null=True, blank=True)
riskd = models.DecimalField(max_digits=6, decimal_places=1, null=True, blank=True)
level = models.CharField(max_length=50, null=True, blank=True)
usecomp = models.ForeignKey(
Partment, related_name='riskusecomp', on_delete=models.CASCADE, null=True, blank=True)
@ -1113,11 +1121,11 @@ class EdulessonWatch(models.Model): # 在线视频观看情况表
class GridTaskSet(models.Model):
"""
网格化管理任务制定
隐患跟踪任务/风险点排查任务
隐患跟踪任务/风险点排查任务/检查表任务
"""
riskact = models.ForeignKey(RiskAct, on_delete=models.CASCADE, related_name='gridtaskset_riskact', null=True, blank=True)
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE, related_name='gridtaskset_trouble', null=True, blank=True)
gridlevel = models.ForeignKey(Dickey, on_delete=models.CASCADE, verbose_name='网格化层级')
gridlevel = models.ForeignKey(Dickey, on_delete=models.CASCADE, verbose_name='网格化层级', null=True, blank=True)
user = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='执行人')
note = models.TextField('备注', null=True)
myschedule = models.ForeignKey(MySchedule,on_delete=models.SET_NULL, null=True, blank=True)
@ -1183,7 +1191,7 @@ class Riskcheck2(models.Model): # 风险排查记录2
Risk, on_delete=models.CASCADE, null=True, blank=True)
dotime = models.DateTimeField(null=True, blank=True)
trouble = models.ForeignKey(
Trouble, on_delete=models.CASCADE, null=True, blank=True)
Trouble, on_delete=models.CASCADE, null=True, blank=True, related_name='riskcheck2_trouble')
note = models.TextField(null=True, blank=True)
@ -1197,7 +1205,7 @@ class Riskcheck(models.Model): # 风险排查记录
Risktask, on_delete=models.CASCADE, null=True, blank=True)
dotime = models.DateTimeField(null=True, blank=True)
trouble = models.ForeignKey(
Trouble, on_delete=models.CASCADE, null=True, blank=True)
Trouble, on_delete=models.CASCADE, null=True, blank=True, related_name='riskcheck_trouble')
note = models.TextField(null=True, blank=True)
@ -1450,24 +1458,4 @@ class SafeFeedBack(models.Model):
isdone = models.IntegerField(default=1) # 默认是完成0是未完成
content = models.TextField('反馈内容')
createtime = models.DateTimeField(default=timezone.now, verbose_name="创建时间")
updatetime = models.DateTimeField(auto_now=True)
class CheckList(models.Model):
"""
检查表
"""
name = models.CharField('清单名称', max_length=200)
usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name="所属公司")
qrcode = models.CharField(max_length=200, blank=True, null=True) # 检查表二维码
createtime = models.DateTimeField(default=timezone.now, verbose_name="创建时间")
updatetime = models.DateTimeField(auto_now=True)
createby = models.ForeignKey(User, on_delete=models.CASCADE, related_name='checklist_createby')
updateby = models.ForeignKey(User, on_delete=models.CASCADE, related_name='checklist_updateby')
deletemark = models.IntegerField(default=1)
class CheckListItem(models.Model):
"""
检查表条目
"""
content = models.TextField('检查项目')
checklist = models.ForeignKey(CheckList, on_delete=models.CASCADE, verbose_name='关联检查表')
updatetime = models.DateTimeField(auto_now=True)

View File

@ -0,0 +1,419 @@
<div class="easyui-layout" style="width:100%;height:100%;">
<div data-options="region:'west',split:true,border:false" style="width:30%;height:100%;" title="检查表">
<div id="checklistbar" style="height:auto">
<div>
{% load myfilter %}
<a onclick="addchecklist()" class="easyui-linkbutton"
data-options="iconCls:'fa-plus',plain:true">新增</a>
<a onclick="editchecklist()" class="easyui-linkbutton"
data-options="iconCls:'fa-pencil',plain:true">编辑</a>
<a onclick="delchecklist()" class="easyui-linkbutton"
data-options="iconCls:'fa-trash',plain:true">删除</a>
</div>
</div>
<table id="checklisttable" style="height:100%;"></table>
</div>
<div data-options="region:'center',split:true,border:false" style="width:70%;height:100%;">
<div class="easyui-layout" style="width:100%;height:100%;">
<div data-options="region:'center',split:true,border:false" title='检查条目' style="height: 50%;">
<div id="checkitembar" style="padding:5px;height:auto">
<a onclick="addcheckitem()" class="easyui-linkbutton"
data-options="iconCls:'fa-plus',plain:true">新增</a>
<a onclick="editcheckitem()" class="easyui-linkbutton"
data-options="iconCls:'fa-pencil',plain:true">编辑</a>
<a onclick="delcheckitem()" class="easyui-linkbutton"
data-options="iconCls:'fa-trash',plain:true">删除</a>
</div>
<table id="checkitemtable" style="height:100%;"></table>
</div>
<div data-options="region:'south',split:true,border:false" title='任务配置' style="height: 50%;">
<div id="checklisttasksetbar" style="padding:5px;height:auto">
<a onclick="addchecklisttaskset()" class="easyui-linkbutton"
data-options="iconCls:'fa-plus',plain:true">新增</a>
<a onclick="editchecklisttaskset()" class="easyui-linkbutton"
data-options="iconCls:'fa-pencil',plain:true">编辑</a>
<a onclick="togglechecklisttaskset()" class="easyui-linkbutton"
data-options="iconCls:'fa-pencil',plain:true">暂停/启用派发</a>
<a onclick="delchecklisttaskset()" class="easyui-linkbutton"
data-options="iconCls:'fa-trash',plain:true">删除</a>
</div>
<table id="checklisttasksettable" style="height:100%;"></table>
</div>
</div>
</div>
<div id="checklistdg" class="easyui-dialog" style="width:400px;height:400px;padding:5px 15px;"
data-options="resizable:true,modal:true,closed:true,border:false">
<form method="post" id="checklistff">
<input id="checklist" name="id" type="hidden">
<div style="margin-bottom:10px">
<input id="checklistname" name="name" data-options="label:'表名'" class="easyui-textbox" style="width:300px"
required></input>
</div>
<div style="margin-bottom:10px;text-align: center;" id="qrcodediv">
<div class="labeldiv">检查表二维码</div>
<img id="qrcode" height=160px width=160px>
</div>
<div style="text-align: center;">
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="savechecklist()">保存</a>
</div>
</form>
</div>
<div id="checkitemdg" class="easyui-dialog" style="width:400px;height:200px;padding:5px 15px;"
data-options="resizable:true,modal:true,closed:true,border:false">
<form method="post" id="checkitemff">
<input name="id" type="hidden">
<input name="riskact" type="hidden" id = "checklistId">
<div style="margin-bottom:10px">
<input id="checkitemname" name="content" data-options="label:'条目描述',multiline:true" class="easyui-textbox"
style="width:300px;height:60px" required></input>
</div>
<div style="text-align: center;">
<a class="easyui-linkbutton" iconCls="fa-floppy-o" onclick="savecheckitem()">保存</a>
</div>
</form>
</div>
<script>
var table_type = 2
var checklist_cu_url = "/api/riskact?a=add";
var checkitem_cu_url = "/api/risk?a=add";
$('#checklisttable').datagrid({
url: 'api/riskact?a=listall&table_type='+table_type,
singleSelect:true,
rownumbers: true,
fitColumns: true,
striped: true,
method: 'get',
toolbar: '#checklistbar',
pagination: 'true',
pageSize: 20,
columns: [[
// { field: 'ck', checkbox:true },
{ field: 'id', title: 'ID', hidden: true },
{ field: 'name', title: '名称', width: 100 },
{ field: 'createtime', title: '创建时间', width: 60 },
]],
onSelect: function (index, data) {
$('#checkitemtable').datagrid({url:'api/risk?a=listall&riskact='+data.id + '&table_type=2'})
$('#checklisttasksettable').datagrid({url:'api/gridtaskset/?a=listall&riskact='+data.id + '&table_type=2'})
}
})
$('#checkitemtable').datagrid({
url: '',
rownumbers: true,
singleSelect: true,
striped: true,
fitColumns: true,
method: 'get',
toolbar: '#checkitembar',
pagination: 'true',
pageSize: 20,
columns: [[
{ field: 'id', title: 'ID', hidden: true },
{ field: 'content', title: '内容', width: 100 },
{ field: 'createtime', title: '创建时间', width: 20 },
]],
});
$('#checklisttasksettable').datagrid({
url: '',
rownumbers: true,
singleSelect: true,
striped: true,
method: 'get',
toolbar: '#checklisttasksetbar',
pagination: 'true',
pageSize: 20,
columns: [[
{ field: 'id', title: 'ID', hidden: true },
{ field: 'user__name', title: '执行人', width: 100 },
{ field: 'myschedule__name', title: '任务策略', width: 200 ,
// formatter: function (value, row, index) {
// if(value.hasOwnProperty('interval')){
// return value.interval.replace(',hours', '小时').replace(',days', '天').replace(',weeks', '星期').replace(',months', '月').replace(',years', '年').replace(',seconds', '秒')
// }
// }
},
{ field: 'last_run_at', title: '最近派发时间', width: 150 },
{ field: 'periodictask__enabled', title: '派发状态', width: 100,
formatter: function (value, row, index) {
switch (value) {
case true: return '正常'; break;
case false: return '暂停'; break;
}
},
styler: function (value, row, index) {
switch (value) {
case true: return 'font-weight:bold;color:green'; break;
case false: return 'color:red;font-weight:bold'; break;
}
}
},
{ field: 'count', title: '已派发次数', width: 100 },
{ field: 'note', title: '执行备注', width: 100 },
]],
});
function addchecklist() {
$('#checklistdg').dialog('open').dialog('setTitle', '创建检查表').window('center');
$('#checklistff').form('clear');
$('#qrcodediv').hide()
checklist_cu_url = '/api/riskact?a=add'
}
function editchecklist() {
var row = $('#checklisttable').datagrid('getSelected');
if(row){
$('#checklistdg').dialog('open').dialog('setTitle', '编辑检查表').window('center');
$('#checklistff').form('load', row);
$('#qrcodediv').show();
$('#qrcode').attr('src',row.qrcode);
checklist_cu_url = '/api/riskact?a=edit&id=' + row.id}
else{
$.messager.alert('提示', '请选择一条数据!');
}
}
function savechecklist() {
var data = $('#checklistff').serializeJSON();
data['table_type'] = 2
$.ajax({
type: "POST",
url: checklist_cu_url,
data: JSON.stringify(data),
datatype: "json",
processData: false,
contentType: "application/json;charset=utf-8",
beforeSend: function () {
return $('#checklistff').form('validate')
},
success: function (data) {
if (data.code == 1) {
$("#checklisttable").datagrid('reload');
$("#checklistdg").dialog("close");
} else { $.messager.alert('提示', '失败!'); }
},
});
}
function addcheckitem() {
$('#checkitemff').form('clear');
var row = $('#checklisttable').datagrid('getSelected');
if(row){
$('#checklistId').attr('value', row.id);
checkitem_cu_url = '/api/risk?a=add'
$('#checkitemdg').dialog('open').dialog('setTitle', '新增项目').window('center');
}else{
$.messager.alert('提示', '请选择一张检查表!');
}
}
function editcheckitem() {
var row = $('#checkitemtable').datagrid('getSelected');
if(row){
$('#checkitemdg').dialog('open').dialog('setTitle', '编辑项目').window('center');
$('#checkitemff').form('load', row);
checkitem_cu_url = '/api/risk?a=update&id=' + row.id}
else{
$.messager.alert('提示', '请选择一条数据!');
}
}
function savecheckitem() {
var data = $('#checkitemff').serializeJSON();
$.ajax({
type: "POST",
url: checkitem_cu_url,
data: JSON.stringify(data),
datatype: "json",
processData: false,
contentType: "application/json;charset=utf-8",
beforeSend: function () {
return $('#checkitemff').form('validate')
},
success: function (data) {
if (data.code == 1) {
$("#checkitemtable").datagrid('reload');
$("#checkitemdg").dialog("close");
} else { $.messager.alert('提示', '失败!'); }
},
});
}
//ajax接收的才是js对象
function delcheckitem() {
var row = $('#checkitemtable').datagrid('getSelected');
if (row) {
$.messager.confirm('提示', '确定删除吗?', function (r) {
if (r) {
$.ajax({
type: "GET",
url: 'api/risk?a=del&id=' + row.id,
datatype: "json",
beforeSend: function () { },
success: function (data) {
if (data.code == 1) {
$("#checkitemtable").datagrid('reload');
$("#checklisttable").datagrid('reload');
} else {
$.messager.alert('提示', '您无权删除!');
}
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function () {
}
});
}
}
);
}
else {
$.messager.alert('提示', '未选择数据!');
}
}
function delchecklist() {
var row = $('#checklisttable').datagrid('getSelected');
if (row) {
$.messager.confirm('提示', '确定删除吗?', function (r) {
if (r) {
$.ajax({
type: "GET",
url: 'api/riskact?a=del&id=' + row.id,
datatype: "json",
beforeSend: function () { },
success: function (data) {
if (data.code == 1) {
$("#checkitemtable").datagrid('reload');
$("#checklisttable").datagrid('reload');
} else {
$.messager.alert('提示', '您无权删除!');
}
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function () {
}
});
}
}
);
}
else {
$.messager.alert('提示', '未选择数据!');
}
}
function addchecklisttaskset(){
var row = $('#checklisttable').datagrid('getSelected');
if (row) {
opendg('新增','html/gridtaskset/add/' + row.id + '/?table_type=2')
}
else {
$.messager.alert('提示', '请先选择一份检查表!');
}
}
function editchecklisttaskset(){
var row = $('#checklisttasksettable').datagrid('getSelected');
if (row) {
opendg('编辑','html/gridtaskset/edit/' + row.id)
}
else {
$.messager.alert('提示', '请先选择一个任务配置!');
}
}
function togglechecklisttaskset() {
var row = $('#checklisttasksettable').datagrid('getSelected');
if (row) {
var msg = '确定启动派发吗?'
if(row.periodictask__enabled){
msg = '确定暂停派发吗?'
}
$.messager.confirm('提示', msg, function (r) {
if (r) {
$.ajax({
type: "GET",
url: 'api/gridtaskset?a=toggle&id=' + row.id,
datatype: "json",
beforeSend: function () { },
success: function (data) {
$("#checklisttasksettable").datagrid('reload');
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function () {
}
});
}
}
);
}
else {
$.messager.alert('提示', '未选择数据!');
}
}
function delchecklisttaskset() {
var row = $('#checklisttasksettable').datagrid('getSelected');
if (row) {
$.messager.confirm('提示', '确定删除吗?', function (r) {
if (r) {
$.ajax({
type: "GET",
url: 'api/gridtaskset?a=del&id=' + row.id,
datatype: "json",
beforeSend: function () { },
success: function (data) {
if (data.code == 1) {
$("#checklisttasksettable").datagrid('reload');
} else {
$.messager.alert('提示', '您无权删除!');
}
},
complete: function (XMLHttpRequest, textStatus) {
},
error: function () {
}
});
}
}
);
}
else {
$.messager.alert('提示', '未选择数据!');
}
}
</script>

View File

@ -7,7 +7,7 @@
</div>
<div data-options="region:'center'" style="width:100%;height:100%;padding:5px 15px;">
<form method="post" id="gridtasksetff">
<div style="margin-bottom:10px">
<div style="margin-bottom:10px" id="gridleveldiv">
<input id="gridlevel" class="easyui-combobox" name="gridlevel" style="width:480px" data-options="
label:'网格类型',
url: 'getdickey?a=combobox&dicclass=58',
@ -52,6 +52,10 @@
</div>
<script>
var riskact = {{riskact}}
var table_type = {{table_type}}
if (table_type==2){
$('#gridleveldiv').remove()
}
function choseuser() {
var myh = screen.availHeight * 0.5;
$('#userdd').dialog({
@ -98,6 +102,7 @@
success: function (data) {
if (data.code == 1) {
$("#girdtasksettable").datagrid('reload');
$("#checklisttasksettable").datagrid('reload');
$("#dd").dialog("close");
} else { $.messager.alert('提示', '失败!'); }
$('#submitb').linkbutton('enable');

View File

@ -7,7 +7,7 @@
</div>
<div data-options="region:'center'" style="width:100%;height:100%;padding:5px 15px;">
<form method="post" id="gridtasksetff">
<div style="margin-bottom:10px">
<div style="margin-bottom:10px" id="gridleveldiv">
<input id="gridlevel" class="easyui-combobox" name="gridlevel" style="width:480px" data-options="
label:'网格类型',
url: 'getdickey?a=combobox&dicclass=58',
@ -54,7 +54,12 @@
var girdtasksetid = {{id}}
$.get('api/gridtaskset?a=detail&id='+girdtasksetid,function(res){
var data = res.data
$('#gridlevel').combobox('setValue', data.gridlevel__dickeyid)
if(data.gridlevel__dickeyid==null){
$('#gridleveldiv').remove()
}else{
$('#gridlevel').combobox('setValue', data.gridlevel__dickeyid)
}
$('#username').textbox('setValue',data.user__name)
$('#user').val(data.user__userid)
$('#note').textbox('setValue',data.note)

View File

@ -150,6 +150,8 @@ urlpatterns = [
# 违章举报
path('html/offence/', views.offence),
path('html/offence/detail/<int:id>/', views.offencedetail),
# 检查表
path('html/checklist/', views.checklisthtml),
path('html/safelist/', views.safelist),
path('html/safefeedback/', views.safefeedback),

View File

@ -245,7 +245,8 @@ def gridtaskset(req):
return render(req, 'gridtaskset.html')
def gridtasksetadd(req, riskact):
return render(req, 'gridtasksetadd.html', {'riskact': riskact})
table_type = req.GET.get('table_type', 1)
return render(req, 'gridtasksetadd.html', {'riskact': riskact, 'table_type':table_type})
def gridtasksetedit(req, id):
return render(req, 'gridtasksetedit.html', {'id': id})
@ -607,6 +608,10 @@ def detailjob(req,id):
return render(req,'checkjobdetail.html',{'id':id})
def updchecktable(req,id):
return render(req,'checktabupd.html',{'id':id})
def checklisthtml(req):
return render(req, 'checklist_new.html')
def mainhtml(req):
# 计算一些数据
userid = req.session['userid']
@ -7638,28 +7643,42 @@ def apiriskact(req):
companyid = getcompany(userid)
if a == 'listall':
a = RiskAct.objects.filter(usecomp__partid=companyid)
if req.GET.get('table_type', None):
a = a.filter(table_type=req.GET.get('table_type'))
else:
a = a.filter(table_type=1)
if req.GET.get('area', None):
a = a.filter(area__id=req.GET.get('area'))
if req.GET.get('type', None):
a = a.filter(type__dickeyid=req.GET.get('type'))
if req.GET.get('kind', None):
a = a.filter(kind=req.GET.get('kind'))
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('area')[startnum:endnum].values('id', 'area__name', 'type__dickeyname',
'name', 'level', 'qrcode', 'group__groupname', 'zrbm__partname', 'zrr__name', 'gkcj')
'name', 'level', 'qrcode', 'group__groupname',
'zrbm__partname', 'zrr__name', 'gkcj', 'createtime')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listall2':
a = RiskAct.objects
if req.GET.get('table_type', None):
a = a.filter(table_type=req.GET.get('table_type'))
else:
a = a.filter(table_type=1)
if req.GET.get('area'):
a = a.filter(area__id=req.GET.get('area'))
total = a.count()
a = a.values('id', 'area__name', 'type__dickeyname', 'name', 'level',
'qrcode', 'group__groupname', 'zrbm__partname', 'zrr__name', 'gkcj')
'qrcode', 'group__groupname', 'zrbm__partname', 'zrr__name', 'gkcj', 'createtime')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
groups = Group.objects.filter(users=User.objects.get(userid=userid))
objs = RiskAct.objects.filter(group__in=groups)
if req.GET.get('table_type', None):
a = a.filter(table_type=req.GET.get('table_type'))
else:
a = a.filter(table_type=1)
if req.GET.get('area'):
objs = objs.filter(area__id=req.GET.get('area'))
if req.GET.get('type'):
@ -7674,16 +7693,17 @@ def apiriskact(req):
obj = RiskAct()
if 'area' in data and data['area']:
obj.area = Area.objects.get(id=data['area'])
obj.type = Dickey.objects.get(dickeyid=data['type'])
obj.type = Dickey.objects.get(dickeyid=data['type']) if data.get('type', None) else None
obj.name = data['name']
obj.place = data['place'] if data['place'] else None
obj.place = data['place'] if data.get('place', None) else None
obj.usecomp = Partment.objects.get(partid=companyid)
obj.gkcj = data['gkcj']
obj.zrbm = Partment.objects.get(partid=data['zrbm'])
obj.zrr = User.objects.get(userid=data['zrr'])
obj.group = Group.objects.get(groupid=data['group'])
obj.gkcj = data.get('gkcj', None)
obj.zrbm = Partment.objects.get(partid=data['zrbm']) if data.get('zrbm', None) else None
obj.zrr = User.objects.get(userid=data['zrr']) if data.get('zrr', None) else None
obj.group = Group.objects.get(groupid=data['group']) if data.get('group', None) else None
if 'kind' in data and data['kind']:
obj.kind = data['kind']
obj.table_type = data.get('table_type', 1)
obj.save()
obj.qrcode = makeqr_riskact(
'https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
@ -7692,15 +7712,15 @@ def apiriskact(req):
elif a == 'edit':
data = json.loads(req.body.decode('utf-8'))
obj = RiskAct.objects.get(id=data['id'])
obj.area = Area.objects.get(id=data['area'])
obj.type = Dickey.objects.get(dickeyid=data['type'])
if 'area' in data and data['area']:
obj.area = Area.objects.get(id=data['area'])
obj.type = Dickey.objects.get(dickeyid=data['type']) if data.get('type', None) else None
obj.name = data['name']
obj.place = data['place'] if data['place'] else None
obj.usecomp = Partment.objects.get(partid=companyid)
obj.gkcj = data['gkcj']
obj.zrbm = Partment.objects.get(partid=data['zrbm'])
obj.zrr = User.objects.get(userid=data['zrr'])
obj.group = Group.objects.get(groupid=data['group'])
obj.place = data['place'] if data.get('place', None) else None
obj.gkcj = data.get('gkcj', None)
obj.zrbm = Partment.objects.get(partid=data['zrbm']) if data.get('zrbm', None) else None
obj.zrr = User.objects.get(userid=data['zrr']) if data.get('zrr', None) else None
obj.group = Group.objects.get(groupid=data['group']) if data.get('group', None) else None
obj.save()
return JsonResponse({'code': 1})
elif a == 'detail':
@ -7726,6 +7746,10 @@ def apiriskact(req):
elif a == 'listalltask':
a = RiskAct.objects.filter(
usecomp__partid=companyid, type__dickeyid=396)
if req.GET.get('table_type', None):
a = a.filter(table_type=req.GET.get('table_type'))
else:
a = a.filter(table_type=1)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-tasktype', 'group')[startnum:endnum].values('group__groupname',
@ -7841,7 +7865,7 @@ def apigridtaskset(req):
elif 'trouble' in data and data['trouble']:
obj.trouble = Trouble.objects.get(troubleid=data['trouble'])
obj.user = User.objects.get(userid=data['user'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel']) if data.get('gridlevel', None) else None
obj.note = data['note'] if 'note' in data and data['note'] else None
obj.expire = data['expire'] if 'expire' in data and data['expire'] else None
obj.periodictask = pobj
@ -7866,7 +7890,7 @@ def apigridtaskset(req):
data = json.loads(req.body.decode('utf-8'))
obj = GridTaskSet.objects.get(id=data['id'])
obj.user = User.objects.get(userid=data['user'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel'])
obj.gridlevel = Dickey.objects.get(dickeyid=data['gridlevel']) if data.get('gridlevel', None) else None
obj.note = data['note'] if 'note' in data and data['note'] else None
obj.expire = data['expire'] if 'expire' in data and data['expire'] else None
pobj = obj.periodictask
@ -7897,17 +7921,22 @@ def apirisk(req):
companyid = getcompany(userid)
if a == 'listall':
a = Risk.objects.filter(usecomp__partid=companyid)
if req.GET.get('table_type', None):
a = a.filter(riskact__table_type=req.GET.get('table_type'))
else:
a = a.filter(riskact__table_type=1)
if req.GET.get('riskact'):
a = a.filter(riskact__id=req.GET.get('riskact'))
total = a.count()
else:
if req.GET.get('kind', None):
a = a.filter(riskact__kind=req.GET.get('kind'))
startnum, endnum = fenye(req)
total = a.count()
a = a[startnum:endnum]
if req.GET.get('kind', None):
a = a.filter(riskact__kind=req.GET.get('kind'))
startnum, endnum = fenye(req)
total = a.count()
a = a[startnum:endnum]
a = a.values('id', 'step', 'hazard', 'result', 'level', 'riskl', 'riske', 'riskc', 'riskd', 'measure1', 'measure2',
'measure3', 'measure4', 'measure5', 'riskact__name', 'riskact__area__name', 'riskact__area__id', 'riskact__place')
'measure3', 'measure4', 'measure5', 'riskact__name', 'riskact__area__name',
'riskact__area__id', 'riskact__place', 'content', 'createtime')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listall2': # 按风险点聚合
a = Risk.objects.filter(usecomp__partid=companyid,
@ -7915,7 +7944,9 @@ def apirisk(req):
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-tasktype', 'group__groupid')[startnum:endnum].values('group__groupname', 'riskact__area__name',
'riskact__type__dickeyname', 'riskact__id', 'group__groupid', 'riskact__name', 'tasktype', 'tasktime').annotate(num=Count('group'))
'riskact__type__dickeyname', 'riskact__id',
'group__groupid', 'riskact__name', 'tasktype',
'tasktime', 'content').annotate(num=Count('group'))
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
groups = Group.objects.filter(users=User.objects.get(userid=userid))
@ -7960,29 +7991,31 @@ def apirisk(req):
elif a == 'add':
data = json.loads(req.body.decode('utf-8'))
obj = Risk()
obj.step = data['step']
obj.hazard = data['hazard']
obj.result = data['result']
obj.measure1 = data['measure1'] if data['measure1'] else None
obj.measure2 = data['measure2'] if data['measure2'] else None
obj.measure3 = data['measure3'] if data['measure3'] else None
obj.measure4 = data['measure4'] if data['measure4'] else None
obj.measure5 = data['measure5'] if data['measure5'] else None
obj.step = data.get('step', None)
obj.hazard = data.get('hazard', None)
obj.result = data.get('result', None)
obj.measure1 = data.get('measure1', None)
obj.measure2 = data.get('measure2', None)
obj.measure3 = data.get('measure3', None)
obj.measure4 = data.get('measure4', None)
obj.measure5 = data.get('measure5', None)
obj.riskact = RiskAct.objects.get(id=data['riskact'])
obj.createuser = User.objects.get(userid=userid)
obj.riskl = data['riskl']
obj.riske = data['riske']
obj.riskc = data['riskc']
riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc'])
obj.riskd = riskd
if riskd >= 320:
obj.level = '重大风险'
elif 320 > riskd >= 160:
obj.level = '较大风险'
elif 160 > riskd >= 70:
obj.level = '一般风险'
else:
obj.level = '低风险'
obj.riskl = data.get('riskl', None)
obj.riske = data.get('riskl', None)
obj.riskc = data.get('riskl', None)
obj.content = data.get('content', None)
if obj.riskl and obj.riske and obj.riskc:
riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc'])
obj.riskd = riskd
if riskd >= 320:
obj.level = '重大风险'
elif 320 > riskd >= 160:
obj.level = '较大风险'
elif 160 > riskd >= 70:
obj.level = '一般风险'
else:
obj.level = '低风险'
obj.usecomp = Partment.objects.get(partid=companyid)
obj.save()
try:
@ -7993,61 +8026,29 @@ def apirisk(req):
elif a == 'update':
data = json.loads(req.body.decode('utf-8'))
obj = Risk.objects.get(id=data['id'])
obj.step = data['step']
obj.hazard = data['hazard']
obj.result = data['result']
obj.measure1 = data['measure1'] if data['measure1'] else None
obj.measure2 = data['measure2'] if data['measure2'] else None
obj.measure3 = data['measure3'] if data['measure3'] else None
obj.measure4 = data['measure4'] if data['measure4'] else None
obj.measure5 = data['measure5'] if data['measure5'] else None
obj.createuser = User.objects.get(userid=userid)
obj.riskl = data['riskl']
obj.riske = data['riske']
obj.riskc = data['riskc']
riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc'])
obj.riskd = riskd
if riskd >= 320:
obj.level = '重大风险'
elif 320 > riskd >= 160:
obj.level = '较大风险'
elif 160 > riskd >= 70:
obj.level = '一般风险'
else:
obj.level = '低风险'
obj.usecomp = Partment.objects.get(partid=companyid)
obj.save()
try:
cal_riskact_level(obj.riskact)
except:
pass
return JsonResponse({"code": 1})
elif a == 'update':
data = json.loads(req.body.decode('utf-8'))
obj = Risk.objects.get(id=data['id'])
obj.step = data['step']
obj.hazard = data['hazard']
obj.result = data['result']
obj.measure1 = data['measure1'] if data['measure1'] else None
obj.measure2 = data['measure2'] if data['measure2'] else None
obj.measure3 = data['measure3'] if data['measure3'] else None
obj.measure4 = data['measure4'] if data['measure4'] else None
obj.measure5 = data['measure5'] if data['measure5'] else None
obj.createuser = User.objects.get(userid=userid)
obj.riskl = data['riskl']
obj.riske = data['riske']
obj.riskc = data['riskc']
riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc'])
obj.riskd = riskd
if riskd >= 320:
obj.level = '重大风险'
elif 320 > riskd >= 160:
obj.level = '较大风险'
elif 160 > riskd >= 70:
obj.level = '一般风险'
else:
obj.level = '低风险'
obj.usecomp = Partment.objects.get(partid=companyid)
obj.step = data.get('step', None)
obj.hazard = data.get('hazard', None)
obj.result = data.get('result', None)
obj.measure1 = data.get('measure1', None)
obj.measure2 = data.get('measure2', None)
obj.measure3 = data.get('measure3', None)
obj.measure4 = data.get('measure4', None)
obj.measure5 = data.get('measure5', None)
obj.riskl = data.get('riskl', None)
obj.riske = data.get('riskl', None)
obj.riskc = data.get('riskl', None)
obj.content = data.get('content', None)
if obj.riskl and obj.riske and obj.riskc:
riskd = float(data['riskl'])*float(data['riske'])*float(data['riskc'])
obj.riskd = riskd
if riskd >= 320:
obj.level = '重大风险'
elif 320 > riskd >= 160:
obj.level = '较大风险'
elif 160 > riskd >= 70:
obj.level = '一般风险'
else:
obj.level = '低风险'
obj.save()
try:
cal_riskact_level(obj.riskact)