This commit is contained in:
commit
68ce1021a8
|
@ -121,6 +121,7 @@ celerybeat.pid
|
|||
.venv
|
||||
env/
|
||||
venv/
|
||||
venv2/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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),
|
||||
),
|
||||
]
|
|
@ -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)
|
||||
|
||||
|
||||
|
@ -1451,23 +1459,3 @@ class SafeFeedBack(models.Model):
|
|||
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='关联检查表')
|
|
@ -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>
|
|
@ -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');
|
||||
|
|
|
@ -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
|
||||
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)
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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'])
|
||||
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.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]
|
||||
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,19 +7991,21 @@ 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']
|
||||
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:
|
||||
|
@ -7993,18 +8026,19 @@ 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']
|
||||
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:
|
||||
|
@ -8015,39 +8049,6 @@ def apirisk(req):
|
|||
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.save()
|
||||
try:
|
||||
cal_riskact_level(obj.riskact)
|
||||
|
|
Loading…
Reference in New Issue