隐患跟踪part1
This commit is contained in:
parent
96e2da6246
commit
a484dff662
|
@ -10,7 +10,7 @@ admin.site.register(models.MySchedule)
|
|||
admin.site.register(models.GridTaskSet)
|
||||
@admin.register(models.Menu)
|
||||
class Menuadmin(admin.ModelAdmin):
|
||||
list_display = ('menuname','menucode','type','url')
|
||||
list_display = ('menuname','menucode','type','url', 'sortnum')
|
||||
list_display_links = ('menuname',)
|
||||
search_fields = ('menuname', 'menucode',)
|
||||
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||
|
|
|
@ -6,6 +6,8 @@ from django.contrib.postgres.fields import JSONField, ArrayField
|
|||
import jwt
|
||||
import datetime
|
||||
# Create your models here.
|
||||
from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule
|
||||
|
||||
|
||||
|
||||
class Menu(models.Model): # 菜单
|
||||
|
@ -57,7 +59,14 @@ class Partment(models.Model):
|
|||
def __str__(self):
|
||||
return self.partname
|
||||
|
||||
|
||||
class MySchedule(models.Model):
|
||||
name = models.CharField('名称', max_length=200)
|
||||
typeset = models.CharField('类型', default=1,max_length=10)
|
||||
interval = models.ForeignKey(IntervalSchedule, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
crontab = models.ForeignKey(CrontabSchedule, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
usecomp = models.ForeignKey(
|
||||
Partment, on_delete=models.CASCADE)
|
||||
|
||||
class Map(models.Model):
|
||||
# type_choices = (
|
||||
# (1, '工厂'),
|
||||
|
@ -259,7 +268,6 @@ class TroubleAccess(models.Model): # 隐患流程表
|
|||
yhzt = models.IntegerField(default='1')
|
||||
accesssj = models.DateTimeField(default=timezone.now)
|
||||
|
||||
|
||||
class Drill(models.Model): # 应急演练
|
||||
drillid = models.AutoField(primary_key=True)
|
||||
drillnum = models.CharField(max_length=100, default='1')
|
||||
|
@ -1066,30 +1074,37 @@ class EdulessonWatch(models.Model): # 在线视频观看情况表
|
|||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
submittime = models.DateTimeField(default=timezone.now)
|
||||
|
||||
from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule
|
||||
|
||||
class MySchedule(models.Model):
|
||||
name = models.CharField('名称', max_length=200)
|
||||
typeset = models.CharField('类型', default=1,max_length=10)
|
||||
interval = models.ForeignKey(IntervalSchedule, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
crontab = models.ForeignKey(CrontabSchedule, null=True, blank=True, on_delete=models.SET_NULL)
|
||||
usecomp = models.ForeignKey(
|
||||
Partment, on_delete=models.CASCADE)
|
||||
|
||||
class GridTaskSet(models.Model):
|
||||
"""
|
||||
网格化管理任务制定
|
||||
隐患跟踪任务/风险点排查任务
|
||||
"""
|
||||
riskact = models.ForeignKey(RiskAct, on_delete=models.CASCADE, related_name='gridtaskset_riskact')
|
||||
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='网格化层级')
|
||||
user = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='执行人')
|
||||
note = models.TextField('检查备注', null=True)
|
||||
note = models.TextField('备注', null=True)
|
||||
myschedule = models.ForeignKey(MySchedule,on_delete=models.SET_NULL, null=True, blank=True)
|
||||
expire = models.IntegerField('执行有效期', null=True, blank=True)
|
||||
count = models.IntegerField('派发次数', default=0)
|
||||
last_run_at = models.DateTimeField('最近派发时间', null=True, blank=True)
|
||||
periodictask = models.ForeignKey(PeriodicTask, on_delete=models.CASCADE, related_name='gridtaskset_periodictask')
|
||||
|
||||
class TroubleFollowTask(models.Model):
|
||||
"""
|
||||
隐患跟踪任务
|
||||
"""
|
||||
trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="跟踪人")
|
||||
taskadd = models.DateTimeField('任务创建时间', null=True, blank=True)
|
||||
taskdo = models.DateTimeField('任务执行时间', null=True, blank=True)
|
||||
taskexpire = models.DateTimeField('任务过期时间', null=True, blank=True)
|
||||
desc = models.TextField('跟踪描述', null=True, blank=True)
|
||||
tasknote = models.TextField('任务执行说明', null=True, blank=True)
|
||||
taskset = models.ForeignKey(GridTaskSet, null=True, blank=True, verbose_name='由哪个设置派发', on_delete=models.SET_NULL)
|
||||
|
||||
class RiskActTask(models.Model): # 风险点排查执行记录
|
||||
id = models.AutoField(primary_key=True)
|
||||
riskact = models.ForeignKey(
|
||||
|
@ -1127,8 +1142,7 @@ class Risktask(models.Model): # 风险排查任务清单
|
|||
|
||||
class Riskcheck2(models.Model): # 风险排查记录2
|
||||
id = models.AutoField(primary_key=True)
|
||||
riskacttask = models.ForeignKey(
|
||||
RiskActTask, on_delete=models.CASCADE, null=True, blank=True)
|
||||
riskacttask = models.ForeignKey(RiskActTask, on_delete=models.CASCADE, null=True, blank=True)
|
||||
risk = models.ForeignKey(
|
||||
Risk, on_delete=models.CASCADE, null=True, blank=True)
|
||||
dotime = models.DateTimeField(null=True, blank=True)
|
||||
|
|
|
@ -0,0 +1,435 @@
|
|||
<div id="yhtablebar" style="padding:4px;">
|
||||
<div>
|
||||
<label>快捷查询</label>
|
||||
<select id='kjcxyh' style='width:150px;'>
|
||||
<option value="">请选择</option>
|
||||
<option value="listself">我的隐患</option>
|
||||
<option value="listtodo">待办隐患</option>
|
||||
<option value="listall">全部隐患</option>
|
||||
</select>
|
||||
<a onclick="javascript:$('#sdg_yh').dialog('open')" class="easyui-linkbutton" data-options="iconCls: 'fa-search',plain:true">详细筛选</a>
|
||||
</div>
|
||||
<div>
|
||||
{% load myfilter %}
|
||||
{% if request|has_permission:'b_trouble_add' %}
|
||||
<a id="addyh" onclick="javascript:opendg('新增隐患','addtrouble?a=addyh')">新增</a>
|
||||
{% endif %}
|
||||
<a id="doyh" onclick="doyh()">处理</a>
|
||||
<a id="delyh" onclick="delyh()">删除</a>
|
||||
<a id="duibiao" class='easyui-linkbutton' onclick="duibiao()" data-options="iconCls: 'fa-thumb-tack',plain:true">对标</a>
|
||||
|
||||
<a id="detailyh2" onclick="detailyh()">查看详情</a>
|
||||
|
||||
{% if request|has_permission:'b_trouble_import' %}
|
||||
<a onclick="javascript:$('#drtroubledg').dialog('open').window('center');" class="easyui-linkbutton"
|
||||
data-options="iconCls:'fa-upload',plain:true">导入待整改隐患</a>
|
||||
{% endif %}
|
||||
{% if request|has_permission:'b_trouble_exportdoc' %}
|
||||
<a id="exportword" onclick="exportyhword()">导出Word</a>
|
||||
{% endif %}
|
||||
|
||||
{% if request|has_permission:'b_trouble_exportxls' %}
|
||||
<a id="exportexcel" onclick="exportyhexcel()">导出Excel</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="sdg_yh" class="easyui-dialog" title="筛选条件" style="width:400px;height:420px;"
|
||||
data-options="iconCls:'fa-search',resizable:true,modal:true,closed:true,border:false">
|
||||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
<div data-options="region:'center'" style="height:100%;text-align:right;">
|
||||
<form id='searchyhff' style="margin-right: 10px">
|
||||
<div style="margin-top:4px"><label>起始时间</label><input name='qssj' id='qssjyh' style="width:300px"></div>
|
||||
<div style="margin-top:4px"><label>结束时间</label><input name='jssj' id='jssjyh' style="width:300px"></div>
|
||||
<div style="margin-top:4px">
|
||||
<label>流程状态</label>
|
||||
<select name='yhzt' id='syhzt' style="width:300px">
|
||||
<option value="">请选择</option>
|
||||
<option value="0">待新增</option>
|
||||
<option value="1">待评估</option>
|
||||
<option value="7">措施/方案待提交</option>
|
||||
<option value="2">措施/方案待确认</option>
|
||||
<option value="3">待整改</option>
|
||||
<option value="4">待审核</option>
|
||||
<option value="5">待复查</option>
|
||||
<option value="6">已归档</option>
|
||||
</select>
|
||||
</div>
|
||||
<div style="margin-top:4px"><label>隐患大类</label><input name='yhlx' id="syhlx" style="width:300px;" /></div>
|
||||
<div style="margin-top:4px"><label>隐患类别</label><input name='yhlb' id="syhlb" style="width:300px;" /></div>
|
||||
<div style="margin-top:4px"><label>检查类型</label><input name='jclx' id="sjclx" style="width:300px;" /></div>
|
||||
<div style="margin-top:4px"><label>隐患评估</label><input name='yhpg' id="syhpg" style="width:300px;" /></div>
|
||||
<div style="margin-top:4px"><label>发现部门</label><input id="sfxbm" name="fxbm" style="width:300px;" /></div>
|
||||
<div style="margin-top:4px"><label>发现人</label><input name="fxrname" style="width:300px" class="easyui-textbox"/></div>
|
||||
<div style="margin-top:4px"><label>整改部门</label><input id="szgbm" name="zgbm" style="width:300px" /></div>
|
||||
</form>
|
||||
</div>
|
||||
<div id='southdiv' data-options="region:'south'" style="height:44px;text-align:center;padding:4px">
|
||||
<a id="yhsearch" onclick="yhsearch()">查询</a>
|
||||
<a id="searchreset" onclick="reset()" class="easyui-linkbutton">重置</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<table id="yhtable" style="width:100%;height:100%;"></table>
|
||||
<div id="drtroubledg" class="easyui-dialog" title="导入隐患" style="width:400px;height:200px;"
|
||||
data-options="iconCls:'fa-upload',resizable:true,modal:true,closed:true,border:false">
|
||||
<p style="color:red;margin-left: 10px">请按模板录入后导入</p>
|
||||
<p style="margin-left: 10px"><a href="/static/safesite/muban/trouble.xlsx" target="_blank">点击下载模板</a></p>
|
||||
<p style="margin-left: 10px">录入完成后点击下方按钮上传文件</p>
|
||||
<input type="file" id="drfile" name="" accept=".xls,.xlsx" style="margin-left: 10px" />
|
||||
</div>
|
||||
<!-- <a id="downa" href="" target="_blank" style="display:none"></a> -->
|
||||
<script>
|
||||
$(function () {
|
||||
var option = $('#main').attr('value')
|
||||
$('#yhtable').datagrid({ url: 'troublehandle', queryParams: { a: option } });
|
||||
$("#searchyhff").form('clear');
|
||||
})
|
||||
|
||||
$('#yhtable').datagrid({
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
method: 'get',
|
||||
url: '',
|
||||
fitColumns: true,
|
||||
pagination: true,
|
||||
pageSize: 20,
|
||||
toolbar: '#yhtablebar',
|
||||
border: false,
|
||||
columns: [[
|
||||
{ field: 'troubleid', hidden: true },
|
||||
{ field: 'yhnum', title: '编号', width: 100 },
|
||||
{
|
||||
field: 'yhzt', title: '流程状态', width: 100, styler: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 0: return 'background-color:yellow;'; break;
|
||||
case 1: return 'background-color:yellow;'; break;
|
||||
case 2: return 'background-color:yellow;'; break;
|
||||
case 3: return 'background-color:yellow;'; break;
|
||||
case 4: return 'background-color:yellow;'; break;
|
||||
case 5: return 'background-color:yellow;'; break;
|
||||
case 6: return 'background-color:green;'; break;
|
||||
case 7: return 'background-color:yellow;'; break;
|
||||
}
|
||||
if (row.zgqx) {
|
||||
|
||||
}
|
||||
}, formatter: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 0: return '待新增'; break;
|
||||
case 1: return '待评估'; break;
|
||||
case 2: return '措施/方案待确认'; break;
|
||||
case 3: return '待整改'; break;
|
||||
case 4: return '待审核'; break;
|
||||
case 5: return '待复查'; break;
|
||||
case 6: return '已归档'; break;
|
||||
case 7: return '措施/方案待提交'; break;
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'todouser__name', title: '下一步处理人', width: 80 },
|
||||
{ field: 'yhdj__dickeyname', title: '隐患等级', width: 80 },
|
||||
{ field: 'yhlb__dickeyname', title: '隐患类别', width: 80 },
|
||||
{ field: 'yhpg__dickeyname', title: '隐患评估', width: 80 },
|
||||
{ field: 'fxr__name', title: '发现人', width: 80 },
|
||||
{ field: 'yhms', title: '隐患描述', width: 150 },
|
||||
{ field: 'todouser__userid', hidden: true },
|
||||
{ field: 'sybzt', hidden: true },
|
||||
{
|
||||
field: 'shresult', title: '隐患状态', width: 100, styler: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 1: return ''; break;
|
||||
case 2: return 'color:red;font-weight:bold'; break;
|
||||
case 3: return 'color:red;font-weight:bold'; break;
|
||||
case 4: return 'color:orange;font-weight:bold'; break;
|
||||
case 6: return 'color:orange;font-weight:bold'; break;
|
||||
}
|
||||
let zgqx = new Date(row.zgqx);
|
||||
if (new Date() > zgqx && row.yhzt == 3) {
|
||||
return 'color:red;font-weight:bold'
|
||||
}
|
||||
}, formatter: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 1: return ''; break;
|
||||
case 2: return '审核未通过'; break;
|
||||
case 3: return '复查未通过'; break;
|
||||
case 4: return '已修改'; break;
|
||||
case 5: return '评估未通过'; break;
|
||||
case 6: return '未采纳'; break;
|
||||
}
|
||||
let zgqx = new Date(row.zgqx);
|
||||
if (new Date() > zgqx && row.yhzt == 3) {
|
||||
return '超期未整改'
|
||||
}
|
||||
}
|
||||
},
|
||||
{ field: 'tbsj', title: '提交时间', width: 100 },
|
||||
]]
|
||||
});
|
||||
$('#kjcxyh').combobox({
|
||||
editable: false,
|
||||
onSelect: function (node) {
|
||||
if (node.value != '') {
|
||||
$('#yhtable').datagrid({ url: 'troublehandle', queryParams: { a: node.value } });
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
$('#wdyh').linkbutton({
|
||||
iconCls: 'icon-man',
|
||||
plain: true
|
||||
});
|
||||
$('#detailyh2').linkbutton({
|
||||
iconCls: 'fa-info-circle',
|
||||
plain: true
|
||||
});
|
||||
$('#yhsearch').linkbutton({
|
||||
iconCls: 'fa-search',
|
||||
});
|
||||
$('#exportword').linkbutton({
|
||||
iconCls: 'fa-download',
|
||||
plain: true
|
||||
});
|
||||
$('#exportexcel').linkbutton({
|
||||
iconCls: 'fa-download',
|
||||
plain: true
|
||||
});
|
||||
$('#addyh').linkbutton({
|
||||
iconCls: 'fa-plus',
|
||||
plain: true
|
||||
});
|
||||
$('#delyh').linkbutton({
|
||||
iconCls: 'fa-trash',
|
||||
plain: true
|
||||
});
|
||||
$('#doyh').linkbutton({
|
||||
iconCls: 'fa-flash',
|
||||
plain: true
|
||||
});
|
||||
$("#qssjyh").datebox({
|
||||
editable: false
|
||||
});
|
||||
$("#jssjyh").datebox({
|
||||
editable: false
|
||||
});
|
||||
$("#syhzt").combobox({
|
||||
editable: false
|
||||
});
|
||||
$("#syhlb").combobox({
|
||||
editable: false
|
||||
});
|
||||
$("#sfxr").combobox({
|
||||
editable: false
|
||||
});
|
||||
$("#syhlx").combobox({
|
||||
url: 'getdicclass?dicid=15',
|
||||
editable: false,
|
||||
onSelect: function (node) {
|
||||
$('#syhlb').combobox({
|
||||
url: 'getdickey?dicclass=' + node.value + '&a=combobox',
|
||||
editable: false,
|
||||
});
|
||||
}
|
||||
});
|
||||
$("#sjclx").combobox({
|
||||
url: 'getdickey?dicclass=14&a=combobox',
|
||||
valueField: 'value',
|
||||
textField: 'text',
|
||||
editable: false,
|
||||
});
|
||||
$("#syhpg").combobox({
|
||||
url: 'getdickey?dicclass=19&a=combobox',
|
||||
editable: false,
|
||||
});
|
||||
// $.get('parthandle?a=tree',function(res){
|
||||
// var data = convert(res);
|
||||
// $('#sfxbm,#szgbm').combotree();
|
||||
// $("#sfxbm").combotree('loadData',data);
|
||||
// $("#szgbm").combotree('loadData',data);
|
||||
// })
|
||||
$("#sfxbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
editable: false,
|
||||
loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},
|
||||
});
|
||||
$("#szgbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
editable: false,
|
||||
loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},
|
||||
});
|
||||
function detailyh() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
url = 'troublehandle?a=detailhtml&troubleid=' + row.troubleid
|
||||
opendg('查看详情', url)
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
}
|
||||
|
||||
function exportyhword() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: 'troublehandle?a=exportword&troubleid=' + row.troubleid,
|
||||
datatype: "json",
|
||||
async: false,
|
||||
beforeSend: function () {
|
||||
loading()
|
||||
},
|
||||
success: function (data) {
|
||||
removeLoading();
|
||||
if (data.code == 1) {
|
||||
//$('#downa').attr('href', downloadurl);
|
||||
//document.getElementById("downa").click();
|
||||
window.open(data.downloadurl);
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '导出Word失败!');
|
||||
}
|
||||
},
|
||||
complete: function (XMLHttpRequest, textStatus) {
|
||||
},
|
||||
error: function () {
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
}
|
||||
function yhsearch() {
|
||||
var querydata = $('#searchyhff').serializeJSON();
|
||||
querydata.a = 'listall'
|
||||
$('#sdg_yh').dialog('close')
|
||||
$('#yhtable').datagrid('load', querydata);
|
||||
|
||||
}
|
||||
function reset() {
|
||||
$('#searchyhff').form('clear')
|
||||
$('#yhtable').datagrid('options').queryParams={
|
||||
a:'listall'
|
||||
}
|
||||
$('#yhtable').datagrid('load');
|
||||
|
||||
}
|
||||
function exportyhexcel() {
|
||||
var querydata = $('#searchyhff').serializeJSON();
|
||||
let url = 'troublehandle?a=exportexcel&' + parseParams(querydata)
|
||||
window.open(url);
|
||||
// $('<form method="post" action="' + url + '"></form>').appendTo('body').submit().remove();
|
||||
}
|
||||
function delyh() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'troublehandle?a=del',
|
||||
data: { 'troubleid': row.troubleid },
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#yhtable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '流程已进行,您无权删除!');
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
}
|
||||
function doyh() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
if (row.yhzt != 6) {
|
||||
if ($("#userindex").attr('userid') == row.todouser__userid) {
|
||||
if (row.yhzt == 0) {
|
||||
opendg('编辑隐患', 'addtrouble?a=edityh&troubleid=' + row.troubleid)
|
||||
} else {
|
||||
var troubleid = row.troubleid;
|
||||
var yhzt = row.yhzt;
|
||||
var url = 'accesstrouble?troubleid=' + troubleid + '&yhzt=' + yhzt;
|
||||
opendg('处理隐患', url)
|
||||
}
|
||||
} else { $.messager.alert('提示', '该条您无权操作!'); }
|
||||
|
||||
|
||||
} else { $.messager.alert('提示', '无需处理!'); }
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一条数据!'); }
|
||||
|
||||
}
|
||||
function duibiao() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
loading('正在比对,请稍等..');
|
||||
$.post('api/duibiao', { 'yhms': row.yhms }, function (result, status) {
|
||||
if (result.code = 1) {
|
||||
html = '<p style="color:red;margin-left: 10px">根据您的描述,搜索到以下安标结果:</p>'
|
||||
for (var j = 0, len = result.data.length; j < len; j++) {
|
||||
html = html + '<p style="margin-left: 10px;margin-right: 10px">' + result.data[j] + '</p>'
|
||||
}
|
||||
$("<div/>").dialog({
|
||||
title: '对标结果',
|
||||
width: 800,
|
||||
height: 400,
|
||||
closed: false,
|
||||
cache: false,
|
||||
content: html,
|
||||
modal: true,
|
||||
border: false,
|
||||
onClose: function () {
|
||||
$(this).dialog('close');
|
||||
}
|
||||
});
|
||||
}
|
||||
removeLoading()
|
||||
});
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
}
|
||||
document.getElementById('drfile').onchange = function () {
|
||||
var fileObj = this.files[0];
|
||||
var url = 'drapi?a=todotrouble'
|
||||
var form = new FormData();
|
||||
form.append("upfile", fileObj); // 文件对象
|
||||
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
|
||||
xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
|
||||
xhr.send(form)
|
||||
$('#drtroubledg').dialog('close')
|
||||
loading('导入中。。');
|
||||
xhr.onload = function (evt) { //服务断接收完文件返回的结果
|
||||
var data = JSON.parse(evt.target.responseText);
|
||||
removeLoading();
|
||||
if (data.code == 1) {
|
||||
$.messager.alert('提示', '上传成功!', 'info', function () {
|
||||
$("#yhtable").datagrid('reload');
|
||||
});
|
||||
}
|
||||
else if (data.code == 2) {
|
||||
$.messager.alert('警告', data.msg, 'info', function () {
|
||||
$("#yhtable").datagrid('reload');
|
||||
});
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '失败!文件内容有误');
|
||||
}
|
||||
document.getElementById('drfile').value = '';
|
||||
|
||||
}; //请求完成
|
||||
xhr.onerror = function (evt) { $.messager.alert('提示', '失败!文件内容有误'); document.getElementById('drfile').value = ''; }; //请求失败
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -135,6 +135,7 @@ urlpatterns = [
|
|||
path('html/scheduleset/add/', views.schedulesetadd),
|
||||
path('html/scheduleset/edit/<int:id>/',views.schedulesetedit),
|
||||
|
||||
path('html/troublefollow/',views.troublefollow),
|
||||
path('html/trainplan/', views.trainplanhtml),
|
||||
path('html/trainplan/add/', views.trainplanaddhtml),
|
||||
path('html/trainplan/edit/<int:id>/', views.trainplanedithtml),
|
||||
|
|
|
@ -171,6 +171,8 @@ class EquipmentCheckFormView(TemplateView):
|
|||
def riskas(req):
|
||||
return render(req, 'riskas.html')
|
||||
|
||||
def troublefollow(req):
|
||||
return render(req, 'troublefollow.html')
|
||||
|
||||
def reportedit(req):
|
||||
return render(req, 'reportedit.html', {'year': req.GET.get('year'), 'month': req.GET.get('month'), 'part': req.GET.get('part')})
|
||||
|
@ -7450,6 +7452,8 @@ def apigridtaskset(req):
|
|||
objs = GridTaskSet.objects.filter(riskact__usecomp__partid=companyid)
|
||||
if req.GET.get('riskact', None):
|
||||
objs = objs.filter(riskact__id=req.GET.get('riskact'))
|
||||
if req.GET.get('trouble', None):
|
||||
objs = objs.filter(trouble__id=req.GET.get('trouble'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(req)
|
||||
objs = objs.order_by('-pk')[startnum:endnum].values('id', 'gridlevel__dickeyname', 'user__name',
|
||||
|
|
Loading…
Reference in New Issue