应急预案与个人绩效关联查询
This commit is contained in:
parent
90fd3d011d
commit
b9a3b9cf58
BIN
doc/惠东需求.xlsx
BIN
doc/惠东需求.xlsx
Binary file not shown.
|
@ -0,0 +1,28 @@
|
|||
# Generated by Django 2.2.8 on 2021-07-10 09:56
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0383_safelist_qrcode'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ContingencyPlan',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('name', models.CharField(max_length=200, verbose_name='名称')),
|
||||
('path', models.CharField(max_length=200, verbose_name='地址')),
|
||||
('type', models.CharField(choices=[('ZH', '综合应急预案'), ('ZX', '专项应急预案'), ('XC', '现场处置方案')], max_length=200, verbose_name='预案类型')),
|
||||
('deletemark', models.IntegerField(default=1, verbose_name='删除标记')),
|
||||
('createtime', models.DateTimeField(default=django.utils.timezone.now, verbose_name='创建时间')),
|
||||
('updatetime', models.DateTimeField(auto_now=True, verbose_name='编辑时间')),
|
||||
('usecomp', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment')),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -0,0 +1,20 @@
|
|||
# Generated by Django 2.2.8 on 2021-07-10 10:02
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0384_contingencyplan'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='contingencyplan',
|
||||
name='createby',
|
||||
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='safesite.User'),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -319,6 +319,8 @@ class ContingencyPlan(models.Model):
|
|||
path = models.CharField(verbose_name='地址', max_length=200)
|
||||
type = models.CharField(verbose_name='预案类型', max_length=200, choices=TYPE_CHOICES)
|
||||
usecomp = models.ForeignKey(Partment, default=1, on_delete=models.CASCADE)
|
||||
deletemark = models.IntegerField(default=1, verbose_name='删除标记')
|
||||
createby = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
createtime = models.DateTimeField(default=timezone.now, verbose_name='创建时间')
|
||||
updatetime = models.DateTimeField(auto_now=True, verbose_name='编辑时间')
|
||||
|
||||
|
@ -813,7 +815,7 @@ class ExamTestDetail(models.Model): # 考试详情表
|
|||
testnum = models.IntegerField(default=0) # 做卷次数
|
||||
remainnum = models.IntegerField('剩余次数', default=1)
|
||||
examtest = models.ForeignKey(
|
||||
ExamTest, on_delete=models.CASCADE, null=True, blank=True)
|
||||
ExamTest, on_delete=models.CASCADE, null=True, blank=True, related_name='detail_examtest')
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||
starttime = models.DateTimeField(null=True, blank=True)
|
||||
endtime = models.DateTimeField(null=True, blank=True)
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
|
||||
<div id="plantablebar" style="padding: 4px;height: 40px;background-color:#FCFCFC">
|
||||
<div style="width: 500px;padding: 5px;">
|
||||
<a id="addplan" class="easyui-linkbutton" onclick="javascript:opendg('新增','html/contingencyplan/add/')" data-options="iconCls: 'fa-plus',plain:true">新增</a>
|
||||
<a id="delplan" class="easyui-linkbutton" onclick="delplan()" data-options="iconCls: 'fa-trash',plain:true">删除</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<table id="plantable" style="width:100%;height:100%;text-align: center;"></table>
|
||||
<script>
|
||||
|
||||
//点击观看
|
||||
// function tzdetail() {
|
||||
// var row = $('#plantable').datagrid('getSelected');
|
||||
// if (row) {
|
||||
// var row = $('#plantable').datagrid('getSelected');
|
||||
// $.ajax({
|
||||
// type: "get",
|
||||
// url: "api/getresbilitydata?a=readnum",
|
||||
// data: { 'id': row.id },
|
||||
// dateType: "json",
|
||||
// success: function (data) {
|
||||
// if (data.code == 1) {
|
||||
// document.getElementById("tzdetail").href = data.url;
|
||||
// document.getElementById("tzdetail").target = '_blank';//定义成打开新窗口
|
||||
|
||||
// }
|
||||
// },
|
||||
// error: function () {
|
||||
// return false;
|
||||
// },
|
||||
// async: false
|
||||
// });
|
||||
// }
|
||||
// else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
// }
|
||||
$('#plantable').datagrid({
|
||||
url: 'api/contingencyplan/?a=listall',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
fitColumns: true,
|
||||
method: 'get',
|
||||
pagination: 'true',
|
||||
pageSize: 20,
|
||||
border: false,
|
||||
toolbar:'#plantablebar',
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'type', title: '预案类型', width: 40,formatter: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 'ZH': return '综合应急预案'; break;
|
||||
case 'ZX': return '专项应急预案'; break;
|
||||
case 'XC': return '现场处置方案'; break;
|
||||
}
|
||||
} },
|
||||
{ field: 'name', title: '名称', width: 100,formatter: function (value, row, index) {
|
||||
return '<a href="' + row.path+'" target="_blank">' + value + '</a>'
|
||||
} },
|
||||
{ field: 'createby__name', title: '创建人', width: 40 },
|
||||
{ field: 'createtime', title: '创建时间', width: 100 },
|
||||
]]
|
||||
});
|
||||
|
||||
|
||||
function delplan() {
|
||||
var row = $('#plantable').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'api/contingencyplan/?a=del',
|
||||
data: JSON.stringify({ 'id': row.id }),
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#plantable").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '你无权删除该条责任制度!');
|
||||
}
|
||||
},
|
||||
complete: function (XMLHttpRequest, textStatus) {
|
||||
},
|
||||
error: function () {
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '请选择一行数据!');
|
||||
}
|
||||
}
|
||||
|
||||
function jydetail() {
|
||||
var row = $('#plantable').datagrid('getSelected');
|
||||
if (row) {
|
||||
var url = 'html/resbility/detail/' + row.id
|
||||
|
||||
opendg('观看详情', url)
|
||||
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
}
|
||||
</script>
|
|
@ -0,0 +1,147 @@
|
|||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
<form id="form" method="post" name="form" enctype="multipart/form-data">
|
||||
<div data-options="region:'center'" style="padding:15px 15px;">
|
||||
<table class="listTab">
|
||||
<tr>
|
||||
<td>名称</td>
|
||||
<td>
|
||||
<input class="easyui-textbox" name="name" style="width:480px" required>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>类型</td>
|
||||
<td>
|
||||
<select class="easyui-combobox" name="type" style="width:480px;" required editable=false>
|
||||
<option ></option>
|
||||
<option value="ZH">综合应急预案</option>
|
||||
<option value="ZX">专项应急预案</option>
|
||||
<option value="XC">现场处置方案</option>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id='filediv' style="margin-bottom:5px;">
|
||||
<label>文件</label><input type="file" id="file" name="" accept=".doc,.docx,.pdf" style="margin-left: 20px"/>
|
||||
<span id='ps' style="display:none">
|
||||
<input type="button" onclick="cancleUploadFile()" value="取消" />
|
||||
<progress id="progressBar" value="0" max="100" style="width: 100px;"></progress>
|
||||
<span id="percentage"></span>
|
||||
<span id="time"></span>
|
||||
</span>
|
||||
<ol id="fileol"></ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div id='southdiv' data-options="region:'south'" style="height:50px;text-align:center;padding:5px">
|
||||
<a href="javascript:void(0)" iconCls="fa-check" class="easyui-linkbutton" onclick="submitForm()" id="submitb">提交</a>
|
||||
<a href="javascript:void(0)" iconCls="fa-close" class="easyui-linkbutton" onclick="closeForm()">取消</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
function submitForm() {
|
||||
|
||||
|
||||
var data = $('#form').serializeJSON();
|
||||
var filearray = new Array();
|
||||
$(".filea").each(function () {
|
||||
filearray.push($(this).attr("filepath"));
|
||||
});
|
||||
if(filearray.length==0){
|
||||
$.messager.alert('提示', '未上传文件!');
|
||||
return
|
||||
}
|
||||
data['path'] = filearray[0]
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'api/contingencyplan/?a=add',
|
||||
data: JSON.stringify(data),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
var bo = $('#form').form('validate')
|
||||
if (bo == false) {
|
||||
return bo
|
||||
} else {
|
||||
$('#submitb').linkbutton('disable');
|
||||
}
|
||||
},
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$('#plantable').datagrid('reload');
|
||||
$("#dd").dialog("close");
|
||||
} else { $.messager.alert('提示', '失败!'); }
|
||||
$('#submitb').linkbutton('enable');
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
document.getElementById('file').onchange = function () {
|
||||
var fileObj = this.files[0];
|
||||
var url = 'upfile'
|
||||
var form = new FormData();
|
||||
form.append("upfile", fileObj); // 文件对象
|
||||
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
|
||||
xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
|
||||
$('#ps').show();
|
||||
xhr.onload = function (evt) { //服务断接收完文件返回的结果
|
||||
var data = JSON.parse(evt.target.responseText);
|
||||
if (data.code = 1) {
|
||||
$('#ps').css('display', 'none');
|
||||
$("#fileol").html('<li><button onclick="removep(this)" >删除</button><a class = "filea" target="_blank" filepath="' + data.filepath + '" href="' + data.filepath + '" >' + data.filename + '</a></li>');
|
||||
} else { alert("上传失败!"); } document.getElementById('file').value = '';
|
||||
}; //请求完成
|
||||
xhr.onerror = function (evt) { alert("上传失败!"); $('#ps').css('display', 'none'); }; //请求失败
|
||||
xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
|
||||
xhr.upload.onloadstart = function () {//上传开始执行方法
|
||||
ot = new Date().getTime(); //设置上传开始时间
|
||||
oloaded = 0;//设置上传开始时,以上传的文件大小为0
|
||||
};
|
||||
xhr.send(form); //开始上传,发送form数据
|
||||
//上传进度实现方法,上传过程中会频繁调用该方法
|
||||
}
|
||||
//取消上传
|
||||
function cancleUploadFile() {
|
||||
xhr.abort();
|
||||
$('#ps').hide();
|
||||
document.getElementById('file').value = '';
|
||||
}
|
||||
function progressFunction(evt) {
|
||||
var progressBar = document.getElementById("progressBar");
|
||||
var percentageDiv = document.getElementById("percentage");
|
||||
// event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
|
||||
if (evt.lengthComputable) {//
|
||||
progressBar.max = evt.total;
|
||||
progressBar.value = evt.loaded;
|
||||
percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
|
||||
}
|
||||
var time = document.getElementById("time");
|
||||
var nt = new Date().getTime();//获取当前时间
|
||||
var pertime = (nt - ot) / 1000; //计算出上次调用该方法时到现在的时间差,单位为s
|
||||
ot = new Date().getTime(); //重新赋值时间,用于下次计算
|
||||
var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b
|
||||
oloaded = evt.loaded;//重新赋值已上传文件大小,用以下次计算
|
||||
//上传速度计算
|
||||
var speed = perload / pertime;//单位b/s
|
||||
var bspeed = speed;
|
||||
var units = 'b/s';//单位名称
|
||||
if (speed / 1024 > 1) {
|
||||
speed = speed / 1024;
|
||||
units = 'k/s';
|
||||
}
|
||||
if (speed / 1024 > 1) {
|
||||
speed = speed / 1024;
|
||||
units = 'M/s';
|
||||
}
|
||||
speed = speed.toFixed(1);
|
||||
//剩余时间
|
||||
var resttime = ((evt.total - evt.loaded) / bspeed).toFixed(1);
|
||||
time.innerHTML = ',速度:' + speed + units + ',剩余时间:' + resttime + 's';
|
||||
}
|
||||
|
||||
</script>
|
|
@ -61,8 +61,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
var option = $('#main').attr('value')
|
||||
$('#yltable').datagrid({ url: 'ylhandle', queryParams: { a: option } });
|
||||
var searchStr = sessionStorage.getItem("drill");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#yltable').datagrid({ url: 'ylhandle', queryParams: queryParams });
|
||||
$("#searchylff").form('clear');
|
||||
})
|
||||
$('#yltable').datagrid({
|
||||
|
|
|
@ -39,8 +39,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#kstable').datagrid({url:'api/examtest',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("examtest");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#kstable').datagrid({url:'api/examtest',queryParams:queryParams});
|
||||
})
|
||||
function addks(obj){
|
||||
opendg('发布考试','html/examtest/add')
|
||||
|
|
|
@ -177,56 +177,61 @@
|
|||
<div id="questiondd" style="overflow: hidden;"></div>
|
||||
<input type="hidden" id="in" show="" total="" target="" show2="" />
|
||||
<!-- <button type="hidden" id="getb" onclick="test()" /> -->
|
||||
|
||||
<!-- tab页的右键菜单 -->
|
||||
<div id="home-tabs-menu" class="easyui-menu">
|
||||
<div data-options="name:1">关闭</div>
|
||||
<div data-options="name:2">关闭其他</div>
|
||||
<div data-options="name:3">关闭所有</div>
|
||||
</div>
|
||||
|
||||
<!-- tab页的右键菜单 -->
|
||||
<div id="home-tabs-menu" class="easyui-menu">
|
||||
<div data-options="name:0">刷新当前</div>
|
||||
<div data-options="name:1">关闭当前</div>
|
||||
<div data-options="name:2">关闭其他</div>
|
||||
<div data-options="name:3">关闭所有</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
|
||||
$('#tt').tabs({
|
||||
border: false,
|
||||
onSelect: function (title) {
|
||||
var allTabs = $('#tt').tabs('tabs');
|
||||
var selectTab = $('#tt').tabs('getSelected');
|
||||
for (var i = 0; i < allTabs.length; i++) {
|
||||
if(allTabs[i]){
|
||||
if (allTabs[i].panel('options').title != selectTab.panel('options').title) {
|
||||
var allTabs = $('#tt').tabs('tabs');
|
||||
var selectTab = $('#tt').tabs('getSelected');
|
||||
for (var i = 0; i < allTabs.length; i++) {
|
||||
if (allTabs[i]) {
|
||||
var ecludetitles = ['个人安全数据']
|
||||
if(ecludetitles.indexOf(allTabs[i].panel('options').title)!=-1){
|
||||
return
|
||||
}
|
||||
if (allTabs[i].panel('options').title != selectTab.panel('options').title) {
|
||||
$('#tt').tabs('update', {
|
||||
tab: allTabs[i],
|
||||
options: {
|
||||
content: 'Tab Body'
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
//selectTab.panel('refresh')
|
||||
// console.log(allTabs[0].panel('options').content)
|
||||
|
||||
}
|
||||
//selectTab.panel('refresh')
|
||||
// console.log(allTabs[0].panel('options').content)
|
||||
},
|
||||
onContextMenu: function(e, title, index){
|
||||
//该方法通知浏览器不要执行与此事件关联的默认动作
|
||||
//即屏蔽了浏览器在tab页上的鼠标右键事件
|
||||
e.preventDefault();
|
||||
var mm = $("#home-tabs-menu");
|
||||
//显示右键菜单
|
||||
mm.menu("show",{
|
||||
top: e.pageY,
|
||||
left: e.pageX
|
||||
}).data("tabTitle",title);
|
||||
//为右键菜单选项绑定事件
|
||||
mm.menu({
|
||||
onClick: function(item){
|
||||
closeTab(this, item.name);
|
||||
onContextMenu: function (e, title, index) {
|
||||
//该方法通知浏览器不要执行与此事件关联的默认动作
|
||||
//即屏蔽了浏览器在tab页上的鼠标右键事件
|
||||
e.preventDefault();
|
||||
var mm = $("#home-tabs-menu");
|
||||
//显示右键菜单
|
||||
mm.menu("show", {
|
||||
top: e.pageY,
|
||||
left: e.pageX
|
||||
}).data("tabTitle", title);
|
||||
//为右键菜单选项绑定事件
|
||||
mm.menu({
|
||||
onClick: function (item) {
|
||||
closeTab(this, item.name);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
});
|
||||
$.messager.show({
|
||||
|
@ -364,41 +369,45 @@
|
|||
localStorage.setItem('data', JSON.stringify(res));
|
||||
})
|
||||
|
||||
function closeTab(menu, type){
|
||||
var allTabs = $("#tt").tabs("tabs");
|
||||
var allTabTitle = [];
|
||||
$.each(allTabs, function(i, n){
|
||||
var opt = $(n).panel("options");
|
||||
if(opt.closable){
|
||||
allTabTitle.push(opt.title);
|
||||
function closeTab(menu, type) {
|
||||
var allTabs = $("#tt").tabs("tabs");
|
||||
var allTabTitle = [];
|
||||
$.each(allTabs, function (i, n) {
|
||||
var opt = $(n).panel("options");
|
||||
if (opt.closable) {
|
||||
allTabTitle.push(opt.title);
|
||||
}
|
||||
});
|
||||
var curTabTitle = $(menu).data("tabTitle");
|
||||
switch (type) {
|
||||
case 0:
|
||||
var tab = $('#tt').tabs('getSelected');
|
||||
tab.panel('refresh');
|
||||
break;
|
||||
case 1:
|
||||
//关闭当前
|
||||
$("#tt").tabs("close", curTabTitle);
|
||||
return false;
|
||||
break;
|
||||
case 2:
|
||||
//关闭其他
|
||||
for (var i = 0; i < allTabTitle.length; i++) {
|
||||
if (curTabTitle != allTabTitle[i] && curTabTitle != '主页') {
|
||||
$("#tt").tabs("close", allTabTitle[i]);
|
||||
}
|
||||
}
|
||||
$("#tt").tabs("select", curTabTitle);
|
||||
break;
|
||||
case 3:
|
||||
//关闭所有
|
||||
for (var i = 0; i < allTabTitle.length; i++) {
|
||||
if (curTabTitle != '主页') {
|
||||
$("#tt").tabs("close", allTabTitle[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
var curTabTitle = $(menu).data("tabTitle");
|
||||
switch(type){
|
||||
case 1:
|
||||
//关闭当前
|
||||
$("#tt").tabs("close", curTabTitle);
|
||||
return false;
|
||||
break;
|
||||
case 2:
|
||||
//关闭其他
|
||||
for(var i = 0; i < allTabTitle.length; i++){
|
||||
if(curTabTitle != allTabTitle[i] && curTabTitle != '主页'){
|
||||
$("#tt").tabs("close",allTabTitle[i]);
|
||||
}
|
||||
}
|
||||
$("#tt").tabs("select",curTabTitle);
|
||||
break;
|
||||
case 3:
|
||||
//关闭所有
|
||||
for(var i = 0; i < allTabTitle.length; i++){
|
||||
if(curTabTitle != '主页'){
|
||||
$("#tt").tabs("close",allTabTitle[i]);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -65,8 +65,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
var option = $('#main').attr('value')
|
||||
$('#xjtable').datagrid({ url: 'api/inspect', queryParams: { a: option } });
|
||||
var searchStr = sessionStorage.getItem("inspect");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#xjtable').datagrid({ url: 'api/inspect', queryParams: queryParams });
|
||||
$("#searchxjff").form('clear');
|
||||
})
|
||||
$("#sxjbm").combotree({
|
||||
|
|
|
@ -34,7 +34,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
$('#ycitemtable').datagrid({url:'api/inspectitem',queryParams:{a:'listyc'}});
|
||||
var searchStr = sessionStorage.getItem("inspectitem");
|
||||
|
||||
var queryParams = {'a':'listyc'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#ycitemtable').datagrid({url:'api/inspectitem',queryParams:queryParams});
|
||||
$("#searchxjff").form('clear');
|
||||
})
|
||||
$("#sxjbm").combotree({
|
||||
|
|
|
@ -49,8 +49,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#wstable').datagrid({url:'api/miss',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("miss");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#wstable').datagrid({url:'api/miss',queryParams:queryParams});
|
||||
$("#searchwsff").form('clear');
|
||||
})
|
||||
$("#sfsbm").combotree({
|
||||
|
|
|
@ -47,8 +47,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#zytable').datagrid({url:'api/operation',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("operation");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#zytable').datagrid({url:'api/operation',queryParams:queryParams});
|
||||
$.get('getdickey?dicclass=33&a=combobox',function(data){
|
||||
let html=''
|
||||
for (var x = 0, len = data.length; x < len; x++) {
|
||||
|
|
|
@ -25,7 +25,109 @@
|
|||
<div id="infodiv">
|
||||
|
||||
</div>
|
||||
<div id="troublediv">
|
||||
<table border="1" style="margin: auto">
|
||||
<tr>
|
||||
<th>指标</th>
|
||||
<th id="pname" width="400px">本人</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>上报隐患</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('trouble', 'fxr', 'qssj', 'jssj')" id="troublediv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>整改隐患</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('trouble', 'zgr', 'qssj', 'jssj')" id="troublediv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>参加培训</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('train', 'participant', 'qssj', 'jssj')" id="traindiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>参与作业</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('operation', 'zyry', 'qssj', 'jssj')" id="operationdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>作业负责人</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('operation', 'zyfzr', 'qssj', 'jssj')" id="operationdiv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>上报未遂</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('miss', 'misser', 'qssj', 'jssj')" id="missdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>提出建议</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('suggest', 'jyr', 'qssj', 'jssj')" id="suggestdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>处理建议</th>
|
||||
<th >
|
||||
<a href="javascript:void(0);" onclick="goDetail('suggest', 'clr', 'qssj', 'jssj')" id="suggestdiv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>参加考试</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('examtest', 'user', 'starttime1', 'starttime2')" id="testdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>通过考试</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('examtest', 'user_tg', 'starttime1', 'starttime2')" id="testdiv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>参加演练</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('drill', 'participant', 'qssj', 'jssj')" id="drilldiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>巡检设备</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('inspect', 'xjr', 'qssj', 'jssj')" id="inspectdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>发现设备异常</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('inspect', 'xjr_0', 'qssj', 'jssj')" id="inspectdiv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>处理设备异常</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('inspectitem', 'todouser_0', 'qssjx', 'jssjx')" id="inspectdiv3">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>有效安全证书</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('safecert', 'user', 'qssj', 'jssj')" id="certdiv1">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>有效作业证书</th>
|
||||
<th>
|
||||
<a href="javascript:void(0);" onclick="goDetail('socert', 'user', 'qssj', 'jssj')" id="certdiv2">0</a>
|
||||
</th>
|
||||
</tr>
|
||||
</table>
|
||||
<!-- <div id="troublediv">
|
||||
|
||||
</div>
|
||||
<div id="traindiv">
|
||||
|
@ -54,17 +156,22 @@
|
|||
</div>
|
||||
<div id="certdiv">
|
||||
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
var arrs = new Array("trouble","train","operation", "miss", "suggest", "test", "drill", "inspect", "cert")
|
||||
var arrs = new Array("trouble", "train", "operation", "miss", "suggest", "test", "drill", "inspect", "cert")
|
||||
var useridx = '{{ user.userid }}';
|
||||
var namex = '{{user.name}}'
|
||||
$('#pname').html(namex)
|
||||
var querydatax = {}
|
||||
$(function () {
|
||||
for(var i=0;i<arrs.length;i++){
|
||||
var querydata = {type:arrs[i]}
|
||||
|
||||
for (var i = 0; i < arrs.length; i++) {
|
||||
var querydata = { type: arrs[i] }
|
||||
beginsearch(querydata)
|
||||
}
|
||||
})
|
||||
|
@ -74,18 +181,23 @@
|
|||
$('#username').textbox('setValue', top.$('#in').attr('show'));
|
||||
}
|
||||
}
|
||||
function startSearch(){
|
||||
var date = $('#ff').serializeJSON()
|
||||
function startSearch() {
|
||||
var date = $('#ff').serializeJSON()
|
||||
var name = $('#username').textbox('getValue')
|
||||
if(name==""){
|
||||
if (name == "") {
|
||||
name = '{{ user.name }}';
|
||||
}
|
||||
$('#infodiv').html('<p>'+name+' '+ date.startdate + '-' + date.enddate +'</p>')
|
||||
for(var i=0;i<arrs.length;i++){
|
||||
var querydata = $('#ff').serializeJSON()
|
||||
querydata.type = arrs[i];
|
||||
$('#pname').html(name + ' ' + date.startdate + '至' + date.enddate)
|
||||
if(date.userid){
|
||||
useridx = date.userid
|
||||
}
|
||||
querydatax = date
|
||||
for (var i = 0; i < arrs.length; i++) {
|
||||
var querydata = $('#ff').serializeJSON()
|
||||
querydata.type = arrs[i];
|
||||
beginsearch(querydata)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
function ExportWord(e) {
|
||||
|
@ -100,33 +212,40 @@
|
|||
dataType: "json", //返回数据形式为json
|
||||
success: function (res) {
|
||||
//请求成功时执行该函数内容,data即为服务器返回的json对象
|
||||
if(res){
|
||||
if(data.type == 'trouble'){
|
||||
$('#troublediv').html('<p>上报隐患共<span style="color:red;font-weight:bold">' + res.fx_count + '</span>条, 整改隐患<span style="color:red;font-weight:bold">' + res.zg_count + '</span>条.</p>')
|
||||
if (res) {
|
||||
if (data.type == 'trouble') {
|
||||
$('#troublediv1').html(res.fx_count)
|
||||
$('#troublediv2').html(res.zg_count)
|
||||
}
|
||||
else if(data.type == 'train'){
|
||||
$('#traindiv').html('<p>需参加培训<span style="color:red;font-weight:bold">' + res.px_count + '</span>场, 参加并签到<span style="color:red;font-weight:bold">' + res.qd_count + '</span>场.</p>')
|
||||
else if (data.type == 'train') {
|
||||
$('#traindiv1').html(res.px_count)
|
||||
}
|
||||
else if(data.type == 'operation'){
|
||||
$('#operationdiv').html('<p>参与作业共<span style="color:red;font-weight:bold">' + res.zy_count + '</span>场, 其中身为作业负责人<span style="color:red;font-weight:bold">' + res.zyfzr_count + '</span>场.</p>')
|
||||
else if (data.type == 'operation') {
|
||||
$('#operationdiv1').html(res.zy_count)
|
||||
$('#operationdiv2').html(res.zyfzr_count)
|
||||
}
|
||||
else if(data.type == 'miss'){
|
||||
$('#missdiv').html('<p>上报未遂事件共<span style="color:red;font-weight:bold">' + res.ws_count + '</span>件.</p>')
|
||||
else if (data.type == 'miss') {
|
||||
$('#missdiv1').html(res.ws_count)
|
||||
}
|
||||
else if(data.type == 'suggest'){
|
||||
$('#suggestdiv').html('<p>提出并被采纳的建议共<span style="color:red;font-weight:bold">' + res.jy_count + '</span>条, 本人处理了<span style="color:red;font-weight:bold">' + res.jycl_count + '</span>条.</p>')
|
||||
else if (data.type == 'suggest') {
|
||||
$('#suggestdiv1').html(res.jy_count)
|
||||
$('#suggestdiv2').html(res.jycl_count)
|
||||
}
|
||||
else if(data.type == 'test'){
|
||||
$('#testdiv').html('<p>共参加考试<span style="color:red;font-weight:bold">' + res.ks_count + '</span>场, 其中<span style="color:red;font-weight:bold">' + res.kstg_count + '</span>场通过.</p>')
|
||||
else if (data.type == 'test') {
|
||||
$('#testdiv1').html(res.ks_count)
|
||||
$('#testdiv2').html(res.kstg_count)
|
||||
}
|
||||
else if(data.type == 'drill'){
|
||||
$('#drilldiv').html('<p>共参加应急演练<span style="color:red;font-weight:bold">' + res.yl_count + '</span>场.')
|
||||
else if (data.type == 'drill') {
|
||||
$('#drilldiv1').html(res.yl_count)
|
||||
}
|
||||
else if(data.type == 'inspect'){
|
||||
$('#inspectdiv').html('<p>共巡检设备<span style="color:red;font-weight:bold">' + res.xj_count + '</span>次, 其中<span style="color:red;font-weight:bold">' + res.xjyc_count + '</span>次发现异常.本人处理了<span style="color:red;font-weight:bold">'+ res.clyc_count+'</span>个异常</p>')
|
||||
else if (data.type == 'inspect') {
|
||||
$('#inspectdiv1').html(res.xj_count)
|
||||
$('#inspectdiv2').html(res.xjyc_count)
|
||||
$('#inspectdiv3').html(res.clyc_count)
|
||||
}
|
||||
else if(data.type == 'cert'){
|
||||
$('#certdiv').html('<p>拥有特种作业证书<span style="color:red;font-weight:bold">' + res.tz_count + '</span>张, 其中<span style="color:red;font-weight:bold">' + res.tzcq_count + '</span>张超期.</p><p>拥有安全证书<span style="color:red;font-weight:bold">'+ res.aq_count+'</span>张,其中<span style="color:red;font-weight:bold">' + res.aqcq_count + '</span>张超期.</p>')
|
||||
else if (data.type == 'cert') {
|
||||
$('#certdiv1').html(res.aq_count)
|
||||
$('#certdiv2').html(res.tz_count)
|
||||
}
|
||||
|
||||
|
||||
|
@ -138,4 +257,40 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
function goDetail(k1, k2, k3, k4) {
|
||||
var options = {
|
||||
'trouble': ['事故隐患', '/troublehtml'],
|
||||
'operation': ['作业许可', '/html/operation'],
|
||||
'train': ['线下培训', '/trainhtml'],
|
||||
'miss': ['未遂事件', '/misshtml'],
|
||||
'suggest': ['合理化建议', '/html/suggest'],
|
||||
'drill': ['应急演练', '/drillhtml'],
|
||||
'examtest': ['在线考试', '/html/examtest'],
|
||||
'inspect': ['巡检记录', '/html/inspect'],
|
||||
'inspectitem': ['异常处理', '/html/inspectitem'],
|
||||
'safecert':['安全资格证书', '/html/safecert'],
|
||||
'socert':['特种作业证书', '/socerthtml']
|
||||
}
|
||||
var myquerydata={}
|
||||
if(querydatax.startdate){
|
||||
myquerydata[k3]= querydatax.startdate
|
||||
}
|
||||
if(querydatax.enddate){
|
||||
myquerydata[k4]= querydatax.enddate
|
||||
}
|
||||
myquerydata[k2] = useridx
|
||||
var title = options[k1][0]
|
||||
if ($('#tt').tabs('exists', title)) {
|
||||
sessionStorage.setItem(k1, JSON.stringify(myquerydata))
|
||||
$('#tt').tabs('select', title);
|
||||
var tab = $('#tt').tabs('getSelected');
|
||||
tab.panel('refresh');
|
||||
} else {
|
||||
$('#tt').tabs('add', {
|
||||
title: title,
|
||||
href: options[k1][1],
|
||||
closable: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
</script>
|
|
@ -28,8 +28,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#aqzstable').datagrid({url:'api/safecert',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("safecert");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#aqzstable').datagrid({url:'api/safecert',queryParams:queryParams});
|
||||
})
|
||||
$('#kjcxaqzs').combobox({
|
||||
editable:false,
|
||||
|
|
|
@ -40,8 +40,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#tzzstable').datagrid({url:'api/socert',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("socert");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#tzzstable').datagrid({url:'api/socert',queryParams:queryParams});
|
||||
})
|
||||
// $("#sfsbm").combotree({
|
||||
// url: 'parthandle?a=tree',
|
||||
|
|
|
@ -51,8 +51,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
var option = $('#main').attr('value')
|
||||
$('#jytable').datagrid({url:'api/suggest',queryParams:{a:option}});
|
||||
var searchStr = sessionStorage.getItem("suggest");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#jytable').datagrid({url:'api/suggest',queryParams:queryParams});
|
||||
$("#searchjyff").form('clear');
|
||||
$("#sjybm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
|
|
|
@ -59,8 +59,14 @@
|
|||
</div>
|
||||
<script>
|
||||
$(function () {
|
||||
var option = $('#main').attr('value')
|
||||
$('#pxtable').datagrid({ url: 'pxhandle', queryParams: { a: option } });
|
||||
var searchStr = sessionStorage.getItem("train");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#pxtable').datagrid({ url: 'pxhandle', queryParams: queryParams });
|
||||
$("#searchpxff").form('clear');
|
||||
})
|
||||
$('#pxtable').datagrid({
|
||||
|
|
|
@ -81,8 +81,15 @@
|
|||
<!-- <a id="downa" href="" target="_blank" style="display:none"></a> -->
|
||||
<script>
|
||||
$(function () {
|
||||
var option = $('#main').attr('value')
|
||||
$('#yhtable').datagrid({ url: 'troublehandle', queryParams: { a: option } });
|
||||
// var option = $('#main').attr('value')
|
||||
var searchStr = sessionStorage.getItem("trouble");
|
||||
|
||||
var queryParams = {'a':'listall'}
|
||||
if(searchStr){
|
||||
var lls = JSON.parse(searchStr)
|
||||
queryParams = Object.assign(queryParams, lls)
|
||||
}
|
||||
$('#yhtable').datagrid({ url: 'troublehandle', queryParams: queryParams });
|
||||
$("#searchyhff").form('clear');
|
||||
})
|
||||
|
||||
|
|
|
@ -145,7 +145,8 @@ urlpatterns = [
|
|||
|
||||
|
||||
path('html/personalp/', views.personalphtml),
|
||||
|
||||
path('html/contingencyplan/', views.contingencyplan), #应急预案
|
||||
path('html/contingencyplan/add/', views.contingencyplanadd), #应急预案
|
||||
# 违章举报
|
||||
path('html/offence/', views.offence),
|
||||
path('html/offence/detail/<int:id>/', views.offencedetail),
|
||||
|
@ -225,7 +226,7 @@ urlpatterns = [
|
|||
path('api/myschedule/',views.apimyschedule),
|
||||
path('api/trainplan/', views.apitrainplan),
|
||||
path('api/troublefollowtask/', views.apitroublefollowtask),
|
||||
|
||||
path('api/contingencyplan/', views.apicontingencyplan),
|
||||
path('api/offence/', views.apioffence),
|
||||
path('api/safelist/', views.apisafelist),
|
||||
path('api/safeitem/', views.apisafeitem),
|
||||
|
|
|
@ -564,6 +564,11 @@ def equipmentfigure(req):
|
|||
def resbility(req):
|
||||
return render(req, 'resbility.html')
|
||||
|
||||
def contingencyplan(req):
|
||||
return render(req, 'contingencyplan.html')
|
||||
|
||||
def contingencyplanadd(req):
|
||||
return render(req, 'contingencyplanadd.html')
|
||||
|
||||
def addresbility(req):#责任制
|
||||
return render(req,'resbilityadd.html')
|
||||
|
@ -2100,6 +2105,7 @@ def troublehandle(req):
|
|||
yhpg = req.GET.get('yhpg')
|
||||
fxbm = req.GET.get('fxbm')
|
||||
fxr = req.GET.get('fxr')
|
||||
zgr = req.GET.get('zgr')
|
||||
qssj = req.GET.get('qssj')
|
||||
jssj = req.GET.get('jssj')
|
||||
yhqy = req.GET.get('yhqy')
|
||||
|
@ -2118,6 +2124,8 @@ def troublehandle(req):
|
|||
a = a.filter(jclx__dickeyid=jclx)
|
||||
if yhpg:
|
||||
a = a.filter(yhpg__dickeyid=yhpg)
|
||||
if zgr:
|
||||
a = a.filter(zgr__userid=zgr)
|
||||
if fxbm or fxr:
|
||||
if fxr:
|
||||
a = a.filter(fxr__userid=fxr)
|
||||
|
@ -3199,6 +3207,24 @@ def pxhandle(req):
|
|||
companyid = getcompany(userid)
|
||||
a = Train.objects.filter(usecomp=Partment.objects.get(
|
||||
partid=companyid), deletemark=1)
|
||||
qssj = req.GET.get('qssj', None)
|
||||
jssj = req.GET.get('jssj', None)
|
||||
pxbm = req.GET.get('trainpart', None)
|
||||
pxjb = req.GET.get('trainlevel', None)
|
||||
pxnr = req.GET.get('traincontent', None)
|
||||
participant = req.GET.get('participant', None)
|
||||
if pxjb:
|
||||
a = a.filter(trainlevel__dicid=pxjb)
|
||||
if pxnr:
|
||||
a = a.filter(traincontent__dickeyid=pxnr)
|
||||
if pxbm:
|
||||
a = a.filter(trainpart__partid=pxbm)
|
||||
if qssj:
|
||||
a = a.filter(starttime__gte=qssj)
|
||||
if jssj:
|
||||
a = a.filter(starttime__lte=jssj)
|
||||
if participant:
|
||||
a = a.filter(participant__userid=participant)
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
a = a.order_by('-starttime')[startnum:endnum].values('trainnum', 'trainid', 'state', 'trainplace', 'starttime', 'trainname',
|
||||
|
@ -3316,6 +3342,24 @@ def ylhandle(req):
|
|||
startnum, endnum = fenye(req)
|
||||
a = Drill.objects.filter(usecomp=Partment.objects.get(
|
||||
partid=companyid), deletemark=1).order_by('-starttime')
|
||||
qssj = req.GET.get('qssj', None)
|
||||
jssj = req.GET.get('jssj', None)
|
||||
ylbm = req.GET.get('drillpart', None)
|
||||
yljb = req.GET.get('drilllevel', None)
|
||||
ylnr = req.GET.get('drillcontent', None)
|
||||
participant = req.GET.get('participant', None)
|
||||
if yljb:
|
||||
a = a.filter(drilllevel__dicid=yljb)
|
||||
if ylnr:
|
||||
a = a.filter(drillcontent__dickeyid=ylnr)
|
||||
if ylbm:
|
||||
a = a.filter(drillpart__partid=ylbm)
|
||||
if qssj:
|
||||
a = a.filter(starttime__gte=qssj)
|
||||
if jssj:
|
||||
a = a.filter(starttime__lte=jssj)
|
||||
if participant:
|
||||
a = a.filter(participant__userid=participant)
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
a = a[startnum:endnum].values('drillnum', 'drillid', 'state', 'drillplace', 'starttime',
|
||||
|
@ -4067,8 +4111,18 @@ def apimiss(req):
|
|||
startnum, endnum = fenye(req)
|
||||
a = Miss.objects.filter(usecomp=Partment.objects.get(
|
||||
partid=companyid), deletemark=1)
|
||||
if req.GET.get('misser', None):
|
||||
a = a.filter(misser__userid=req.GET.get('misser'))
|
||||
if req.GET.get('missqy', None):
|
||||
a = a.filter(missqy__id=req.GET.get('missqy'))
|
||||
if req.GET.get('fsbm'):
|
||||
parts = Partment.objects.filter(partlink__contains=','+req.GET.get(
|
||||
'fsbm')+',') | Partment.objects.filter(partid=req.GET.get('fsbm'))
|
||||
a = a.filter(misspart__in=parts)
|
||||
if req.GET.get('qssj'):
|
||||
a = a.filter(misstime__gte=req.GET.get('qssj'))
|
||||
if req.GET.get('jssj'):
|
||||
a = a.filter(misstime__lte=req.GET.get('jssj'))
|
||||
a = a.order_by('-misstime')
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
|
@ -4165,6 +4219,8 @@ def apisocert(req):
|
|||
companyid = getcompany(userid)
|
||||
startnum, endnum = fenye(req)
|
||||
a = Socertificate.objects.filter(user__usecomp__partid=companyid).order_by('id') # 无deletemark
|
||||
if req.GET.get('user', None):
|
||||
a = a.filter(user=req.GET.get('user'), zszt=1)
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
if req.GET.get('sort'):
|
||||
|
@ -4373,6 +4429,8 @@ def apisafecert(req):
|
|||
companyid = getcompany(userid)
|
||||
startnum, endnum = fenye(req)
|
||||
a = Safecert.objects.filter(user__usecomp__partid=companyid).order_by('id') # 无deletemark
|
||||
if req.GET.get('user', None):
|
||||
a = a.filter(user=req.GET.get('user'), zszt=1)
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
if req.GET.get('sort'):
|
||||
|
@ -4703,6 +4761,14 @@ def apisuggest(req):
|
|||
startnum, endnum = fenye(req)
|
||||
a = Suggest.objects.filter(usecomp=Partment.objects.get(
|
||||
partid=companyid)).order_by('-submittime')
|
||||
if req.GET.get('jyr', None):
|
||||
a = a.filter(jyr__userid=req.GET.get('jyr'))
|
||||
if req.GET.get('clr', None):
|
||||
a = a.filter(clr__userid=req.GET.get('clr'))
|
||||
if req.GET.get('qssj'):
|
||||
a = a.filter(submittime__gte=req.GET.get('qssj'))
|
||||
if req.GET.get('jssj'):
|
||||
a = a.filter(submittime__lte=req.GET.get('jssj'))
|
||||
if req.GET.get('jyrname', None):
|
||||
a = a.filter(jyr__name__contains=req.GET.get('jyrname'))
|
||||
if req.GET.get('jybm'):
|
||||
|
@ -5520,6 +5586,10 @@ def apioperation(req):
|
|||
usecomp=usecomp, deletemark=1).order_by('-submittime')
|
||||
if req.GET.get('zyqy', False):
|
||||
a = a.filter(zyqy__id=req.GET.get('zyqy'))
|
||||
if req.GET.get('zyfzr', None):
|
||||
a = a.filter(zyfzr__userid=req.GET.get('zyfzr'))
|
||||
if req.GET.get('zyry', None):
|
||||
a = a.filter(zyry__userid=req.GET.get('zyry'))|a.filter(zyfzr__userid=req.GET.get('zyry'))
|
||||
if req.GET.get('qssj', None):
|
||||
a = a.filter(kssj__gte=req.GET.get('qssj'))
|
||||
if req.GET.get('jssj', None):
|
||||
|
@ -6296,6 +6366,8 @@ def apiexamtest(req):
|
|||
search = req.GET.get('search', None)
|
||||
starttime1 = req.GET.get('starttime1', None)
|
||||
starttime2 = req.GET.get('starttime2', None)
|
||||
user = req.GET.get('user', None)
|
||||
user_tg = req.GET.get('user_tg', None)
|
||||
if search:
|
||||
a = a.filter(Q(name__contains=search)|Q(exampaper__name=search))
|
||||
if starttime1:
|
||||
|
@ -6306,6 +6378,10 @@ def apiexamtest(req):
|
|||
a = a.filter(state=1)
|
||||
if state == 'close':
|
||||
a = a.filter(state=0)
|
||||
if user:
|
||||
a = a.filter(user__userid=user)
|
||||
if user_tg:
|
||||
a = a.filter(user__userid=user_tg, detail_examtest__passcode=1)
|
||||
if owner == 'yes':
|
||||
ownerlist = ExamTestDetail.objects.filter(user__userid=userid, examtest__state=1,testnum=0).values_list('examtest__id',flat=True)
|
||||
a = a.filter(Q(id__in=ownerlist)|Q(ispublic=1))
|
||||
|
@ -7095,6 +7171,28 @@ def apiinspect(req):
|
|||
companyid = getcompany(userid)
|
||||
if a == 'listall':
|
||||
a = Inspect.objects.filter(usecomp__partid=companyid)
|
||||
qssj = req.GET.get('qssj')
|
||||
jssj = req.GET.get('jssj')
|
||||
xjbm = req.GET.get('xjbm')
|
||||
xjr = req.GET.get('xjr')
|
||||
state = req.GET.get('state')
|
||||
if xjbm or xjr:
|
||||
if xjr:
|
||||
a = a.filter(user__userid=xjr)
|
||||
else:
|
||||
parts = Partment.objects.filter(partid=xjbm) | Partment.objects.filter(
|
||||
partlink__contains=','+xjbm+',')
|
||||
a = a.filter(user__ubelongpart__in=parts)
|
||||
if req.GET.get('xjr_0'):
|
||||
a = a.filter(user__userid=req.GET.get('xjr_0'), state=0)
|
||||
if qssj:
|
||||
a = a.filter(creattime__gte=qssj)
|
||||
if jssj:
|
||||
a = a.filter(creattime__lte=jssj)
|
||||
if state:
|
||||
a = a.filter(state=state)
|
||||
if req.GET.get('num', None):
|
||||
a = a.filter(equipment__num__contains = req.GET.get('num'))
|
||||
total = a.count()
|
||||
startnum, endnum = fenye(req)
|
||||
a = a.order_by('-id')[startnum:endnum].values('id', 'state', 'content', 'creattime', 'equipment__num', 'equipment__name',
|
||||
|
@ -7297,10 +7395,16 @@ def apiinspectitem(req):
|
|||
objs = objs.filter(inspect__creattime__gte=req.GET.get("qssj"))
|
||||
if req.GET.get("jssj", None):
|
||||
objs = objs.filter(inspect__creattime__lte=req.GET.get("jssj"))
|
||||
if req.GET.get("qssjx", None):
|
||||
objs = objs.filter(handletime__gte=req.GET.get("qssjx"))
|
||||
if req.GET.get("jssjx", None):
|
||||
objs = objs.filter(handletime__lte=req.GET.get("jssjx"))
|
||||
# xjbm = req.GET.get('xjbm',None)
|
||||
xjr = req.GET.get('xjr',None)
|
||||
if xjr:
|
||||
objs = objs.filter(inspect__user__name__contains=xjr)
|
||||
if req.GET.get('todouser_0', None):
|
||||
objs = objs.filter(todouser__userid=req.GET.get('todouser_0'), state='异常已处理')
|
||||
# if xjbm or xjr:
|
||||
# if xjr:
|
||||
# objs = objs.filter(inspect__user__userid=xjr)
|
||||
|
@ -9112,4 +9216,34 @@ def apisafefeedback(req):
|
|||
data = json.loads(req.body.decode('utf-8'))
|
||||
obj = SafeFeedBack.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
|
||||
@apicheck_login
|
||||
def apicontingencyplan(req):
|
||||
a = req.GET.get('a')
|
||||
userid = req.session['userid']
|
||||
user= User.objects.get(userid=userid)
|
||||
if a == 'listall':
|
||||
objs = ContingencyPlan.objects.filter(usecomp=user.usecomp, deletemark=1)
|
||||
if req.GET.get('type', None):
|
||||
objs = objs.filter(type=req.GET.get('type'))
|
||||
total = objs.count()
|
||||
startnum, endnum = fenye(req)
|
||||
objs = objs[startnum:endnum].values('id', 'name', 'path', 'createtime', 'type', 'createby__name', 'path')
|
||||
return HttpResponse(transjson(total, objs), content_type="application/json")
|
||||
elif a == 'add':
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
obj= ContingencyPlan()
|
||||
obj.name = data['name']
|
||||
obj.type = data['type']
|
||||
obj.path = data['path']
|
||||
obj.createby = user
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'del':
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
obj = ContingencyPlan.objects.get(id=data['id'])
|
||||
obj.delete()
|
||||
return JsonResponse({"code":1})
|
||||
|
|
@ -14,7 +14,7 @@ def apicountsafe(req):
|
|||
startdate = req.GET.get('startdate', None)
|
||||
enddate = req.GET.get('enddate', None)
|
||||
if type == 'trouble':
|
||||
objs = Trouble.objects.filter(deletemark=1)
|
||||
objs = Trouble.objects.filter(deletemark=1, usecomp__partid=companyid)
|
||||
if startdate:
|
||||
objs = objs.filter(fxsj__gte=startdate)
|
||||
if enddate:
|
||||
|
@ -26,7 +26,7 @@ def apicountsafe(req):
|
|||
ret['zg_count'] = objs.filter(zgr__userid=userid).count()
|
||||
return JsonResponse(ret)
|
||||
elif type == 'train':
|
||||
objs = Trainuser.objects.filter(train__deletemark=1)
|
||||
objs = Trainuser.objects.filter(train__deletemark=1, train__usecomp__partid=companyid)
|
||||
if startdate:
|
||||
objs = objs.filter(train__starttime__gte=startdate)
|
||||
if enddate:
|
||||
|
@ -69,8 +69,8 @@ def apicountsafe(req):
|
|||
if dept:
|
||||
pass
|
||||
else:
|
||||
ret['jy_count'] = objs.filter(jyr__userid=userid, accept=1).count()
|
||||
ret['jycl_count'] = objs.filter(clr__userid=userid, accept=1).count()
|
||||
ret['jy_count'] = objs.filter(jyr__userid=userid).count()
|
||||
ret['jycl_count'] = objs.filter(clr__userid=userid).count()
|
||||
return JsonResponse(ret)
|
||||
elif type == 'test':
|
||||
objs = ExamTestDetail.objects.exclude(examtest__nousecomps__contains=','+companyid+',')
|
||||
|
|
Loading…
Reference in New Issue