renwuxiuai

This commit is contained in:
shilixia 2020-04-10 10:44:48 +08:00
parent acc5049bc5
commit 7f9e0b3906
6 changed files with 328 additions and 43 deletions

View File

@ -0,0 +1,24 @@
# Generated by Django 2.2.8 on 2020-04-09 15:30
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0329_auto_20200323_0957'),
]
operations = [
migrations.AddField(
model_name='checkjob',
name='yhtp',
field=models.CharField(blank=True, max_length=1000),
),
migrations.AddField(
model_name='checkjob',
name='zghtp',
field=models.CharField(blank=True, max_length=1000),
),
]

View File

@ -1270,3 +1270,5 @@ class Checkjob(models.Model):
yanshouren=models.ForeignKey(User,related_name='yanshouren',on_delete=models.CASCADE,null=True)#验收人员
pmpeople=models.ManyToManyField(User,related_name='bcfr',null=True)#被处罚人员
content=models.CharField(max_length=400,null=True)#处罚内容
yhtp = models.CharField(max_length=1000, blank=True)
zghtp = models.CharField(max_length=1000, blank=True)

View File

@ -54,7 +54,7 @@
{ field: 'checktask__checktaskname', title: '任务名称', width: 100 },
{ field: 'checktask__checktype__checktitle', title: '检查表', width: 100 },
{ field: 'checkname__username', title: '检查人员', width: 100 },
{ field: 'checkname__name', title: '检查人员', width: 100 },
//{ field: 'zguser__username', title: '整改人', width: 100 },
//{ field: 'zgtime', title: '整改时间', width: 100 },

View File

@ -40,57 +40,95 @@
</td>
</tr>
<tr>
<td>检查发现的问题:</td>
<td>检查问题:</td>
<td>
<input id="checkquestion" class="easyui-textbox" name="checkquestion" style="width:480px;height:100px" data-options="multiline:true" required=true>
</td>
</tr>
<!--<tr>
<td>整改时间:</td>
<td>
<input id="zgtime" editable="false" name="zgtime" class="easyui-datetimebox" style="width:480px"
data-options="currentText:'今天',closeText:'关闭',showSeconds:false" required=true />
</td>
</tr>
<tr>
<td>整改人:</td>
<td>
<input id="zguser" class="easyui-textbox" name="zguser" style="width:480px" required=true />
</td>
</tr>
<tr>
<td>整改要求:</td>
<td>
<input id="zgyq" class="easyui-textbox" name="zgyq" style="width:480px;height:60px" data-options="multiline:true" required=true>
</td>
</tr></tr>-->
<tr>
<td>检查图片:</td>
<td> <input type="file" id="file" name="" accept="image/*" style="margin-left:30px;" /></td>
</tr>
<tr>
<td><input type="hidden" name="yhtp" id="yhtp" /></td>
<td>
<span id='ps' style="display:none">
<progress id="progressBar" value="0" max="100" style="width: 100px;"></progress>
<span id="percentage"></span><span id="time"></span>
</span>
</td>
</tr>
<tr>
<td>整改情况:</td>
<td colspan="2"><ul id="addImage" class="imgul"></ul></td>
</tr>
<!--<tr>
<td>整改时间:</td>
<td>
<input id="zgtime" editable="false" name="zgtime" class="easyui-datetimebox" style="width:480px"
data-options="currentText:'今天',closeText:'关闭',showSeconds:false" required=true />
</td>
</tr>
<tr>
<td>整改人:</td>
<td>
<input id="zguser" class="easyui-textbox" name="zguser" style="width:480px" required=true />
</td>
</tr>
<tr>
<td>整改要求:</td>
<td>
<input id="zgyq" class="easyui-textbox" name="zgyq" style="width:480px;height:60px" data-options="multiline:true" required=true>
</td>
</tr></tr>-->
<tr>
<td>需要整改:</td>
<td>
<input id="zgjg" class="easyui-textbox" name="zgjg" style="width:480px;height:60px" data-options="multiline:true" required=true>
</td>
</tr>
<tr>
<td>整改图片:</td>
<td> <input type="file" id="file2" name="" accept="image/*" style="margin-left:30px;" /></td>
</tr>
<tr>
<td><input type="hidden" name="zgtp" id="zgtp" /></td>
<td>
<span id='ps2' style="display:none">
<progress id="progressBar2" value="0" max="100" style="width: 100px;"></progress>
<span id="percentage2"></span><span id="time2"></span>
</span>
</td>
</tr>
<tr>
<td colspan="2"><ul id="addImage2" class="imgul"></ul></td>
</tr>
<tr>
<td>检查状态:</td>
<td>
<input type="radio" name="taskstate" value="2">已整改完成</input>
<input type="radio" name="taskstate" value="1">正在整改中</input>
<input type="radio" name="taskstate" checked="true" value="2">已整改完成</input>
<input type="radio" name="taskstate" value="1">正在整改中</input>
</td>
</tr>
</table>
<div id="chufa" style="margin-top:10px;margin-bottom:5px;">
<input class="easyui-textbox" id="participantname" style="width:480px;height:60px" editable="false"
data-options="label:'被处罚人员:',multiline:true,prompt:'没有被处罚人员可以不选'" >
data-options="label:'接受处理意见人员:',multiline:true,prompt:'没有接受处理意见人员可以不选'" >
<input type="hidden" id="participant" name="participant" />
<a id="chooserys" class='easyui-linkbutton' onclick="choseusers()" style="width:auto">选择</a>
</div>
<div>
<input class="easyui-textbox" id="content" name="content" style="width:480px;height:60px"
data-options="label:'处罚内容:',multiline:true">
data-options="label:'处理意见:',multiline:true">
</div>
</form>
</div>
@ -121,19 +159,202 @@
$('#checkplace').textbox('setValue', data.checktask__checkplace)
$('#checkquestion').textbox('setValue', data.checkquestion)
$('#zgjg').textbox('setValue', data.zgjg)
if (data.taskstate == 1) {
$("input[name='taskstate'][value=1]").attr("checked",true);
}
else
$("input[name='taskstate'][value=2]").attr("checked",true);
// if (data.taskstate == 1) {
// $("input[name='taskstate'][value=1]").attr("checked",true);
// }
//else
// $("input[name='taskstate'][value=2]").attr("checked",true);
});
})
//检查问题上传图片
document.getElementById('file').onchange = function () {
var fileObj = this.files[0];
var url = 'upfile'
var form = new FormData();
if (fileObj.size / 1024 > 500) { //大于500k进行压缩上传
$("#file").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
photoCompress(fileObj, {}, function (base64Codes) {
//console.log("压缩后:" + base.length / 1024 + " " + base);
var bl = convertBase64UrlToBlob(base64Codes);
form.append("upfile", bl, fileObj.name); // 文件对象
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
xhr.open("post", url, true); //post方式url为服务器请求地址true 该参数规定请求是否异步处理。
$("#tip").remove();
$('#ps').show();
xhr.onload = function (evt) { //服务断接收完文件返回的结果
var data = JSON.parse(evt.target.responseText);
if (data.code = 1) {
$('#ps').hide();
$("#addImage").append('<li ><img title="点击放大" style="display:block;" onclick="bigger(this)" class = "yhtpimg" width="120" height="120" filepath="' + data.filepath + '" src="http://' + window.location.host + '/' + data.filepath + '"/><button onclick="removep(this)" >删除</button></li>');
document.getElementById('file').value = '';
} else { alert("上传失败!"); }
}; //请求完成
xhr.onerror = function (evt) { alert("上传失败!"); $('#ps').hide(); };; //请求失败
xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
xhr.upload.onloadstart = function () {//上传开始执行方法
ot = new Date().getTime(); //设置上传开始时间
oloaded = 0;//设置上传开始时以上传的文件大小为0
};
xhr.send(form); //开始上传发送form数据
});
} else { //小于等于500k 原图上传
form.append("upfile", fileObj); // 文件对象
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
xhr.open("post", url, true); //post方式url为服务器请求地址true 该参数规定请求是否异步处理。
xhr.onload = function (evt) { //服务断接收完文件返回的结果
var data = JSON.parse(evt.target.responseText);
if (data.code = 1) {
$('#ps').hide();
$("#addImage").append('<li ><img title="点击放大" style="display:block;" onclick="bigger(this)" class = "yhtpimg" width="110" height="110" filepath="' + data.filepath + '" src="http://' + window.location.host + '/' + data.filepath + '"/><button onclick="removep(this)" >删除</button></li>');
document.getElementById('file').value = '';
} else { alert("上传失败!"); }
}; //请求完成
xhr.onerror = function (evt) { alert("上传失败!"); $('#ps').hide(); };; //请求失败
xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
xhr.upload.onloadstart = function () {//上传开始执行方法
ot = new Date().getTime(); //设置上传开始时间
oloaded = 0;//设置上传开始时以上传的文件大小为0
};
xhr.send(form); //开始上传发送form数据
}
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';
//if(bspeed==0) time.innerHTML = '上传已取消';
}
}
document.getElementById('file2').onchange = function () {
var fileObj = this.files[0];
var url = 'upfile'
var form = new FormData();
if (fileObj.size / 1024 > 500) { //大于500k进行压缩上传
$("#file2").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
photoCompress(fileObj, {}, function (base64Codes) {//quality: 0.2
//console.log("压缩后:" + base.length / 1024 + " " + base);
var bl = convertBase64UrlToBlob(base64Codes);
form.append("upfile", bl, fileObj.name); // 文件对象
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
xhr.open("post", url, true); //post方式url为服务器请求地址true 该参数规定请求是否异步处理。
$("#tip").remove();
$('#ps2').show();
xhr.onload = function (evt) { //服务断接收完文件返回的结果
var data = JSON.parse(evt.target.responseText);
if (data.code = 1) {
$('#ps2').hide();
$("#addImage2").append('<li ><img title="点击放大" style="display:block;" onclick="bigger(this)" class = "zghtpimg" width="120" height="120" filepath="' + data.filepath + '" src="http://' + window.location.host + '/' + data.filepath + '"/><button onclick="removep(this)" >删除</button></li>');
document.getElementById('file2').value = '';
} else { alert("上传失败!"); }
}; //请求完成
xhr.onerror = function (evt) { alert("上传失败!"); $('#ps2').hide(); };; //请求失败
xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
xhr.upload.onloadstart = function () {//上传开始执行方法
ot = new Date().getTime(); //设置上传开始时间
oloaded = 0;//设置上传开始时以上传的文件大小为0
};
xhr.send(form); //开始上传发送form数据
});
} else { //小于等于1M 原图上传
form.append("upfile", fileObj); // 文件对象
xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
xhr.open("post", url, true); //post方式url为服务器请求地址true 该参数规定请求是否异步处理。
xhr.onload = function (evt) { //服务断接收完文件返回的结果
var data = JSON.parse(evt.target.responseText);
if (data.code = 1) {
$('#ps2').hide();
$("#addImage2").append('<li ><img title="点击放大" style="display:block;" onclick="bigger(this)" class = "zghtpimg" width="120" height="120" filepath="' + data.filepath + '" src="http://' + window.location.host + '/' + data.filepath + '"/><button onclick="removep(this)" >删除</button></li>');
document.getElementById('file2').value = '';
} else { alert("上传失败!"); }
}; //请求完成
xhr.onerror = function (evt) { alert("上传失败!"); $('#ps2').hide(); };; //请求失败
xhr.send(form); //开始上传发送form数据
}
//上传进度实现方法,上传过程中会频繁调用该方法
function progressFunction(evt) {
var progressBar = document.getElementById("progressBar2");
var percentageDiv = document.getElementById("percentage2");
// 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("time2");
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';
if (bspeed == 0) time.innerHTML = '上传已取消';
}
}
function wssubmitForm() {
var wsdata = $('#wsff').serializeJSON();
var yhtp = new Array();
$(".yhtpimg").each(function () {
yhtp.push($(this).attr("filepath"));
});
wsdata['yhtp'] = yhtp
var zghtp = new Array();
$(".zghtpimg").each(function () {
zghtp.push($(this).attr("filepath"));
});
wsdata['zghtp']=zghtp
$.ajax({
type: "POST",
url: 'api/checkproject?a=addjob&jobid='+jobid,

View File

@ -21,13 +21,39 @@
<td colspan="3">{{checktask__checktype__checkcontent}}</td>
</tr>
<tr style="height:80px">
<td style="font-weight: bold;">检查发现的问题:</td>
<td style="font-weight: bold;">检查问题:</td>
<td colspan="3">{{checkquestion}}</td>
</tr>
<tr>
<td>问题图片</td>
<td colspan="3">
{{each yhtp value index}}
<div style="float:left"><img onclick='bigger(this)' class='tp' width="120" height="120" src='{{value}}' /></div>
{{/each}}
</td>
</tr>
<tr style="height:80px">
<td style="font-weight: bold;">整改情况:</td>
<td colspan="3">{{zgjg}}</td>
</tr>
<tr>
<td>整改图片</td>
<td colspan="3">
{{each zghtp value index}}
<div style="float:left"><img onclick='bigger(this)' class='tp' width="120" height="120" src='{{value}}' /></div>
{{/each}}
</td>
</tr>
<tr>
<td style="font-weight: bold;">检查状态:</td>
<td>{{taskstate==1?'正在检查':'检查完毕'}}</td>
@ -57,11 +83,11 @@
</tr>-->
<tr>
<td style="font-weight: bold;">罚内容</td>
<td style="font-weight: bold;">理意见</td>
<td colspan="3">{{content}}</td>
</tr>
<tr>
<td style="font-weight: bold;">被处罚人员:</td>
<td style="font-weight: bold;">接受处理意见人员:</td>
<td colspan="3">{{bcfr==[]?'kkl':bcfr}}</td>
</tr>
<tr>

View File

@ -7765,7 +7765,7 @@ def checkprojects(req):
total = a.count()
startnum, endnum = fenye(req)
a = a[startnum:endnum].values('id','checktaskname','tasktype','checkname','checktype__checktitle','checkplace', 'checktime','createuser__name','createdate')
a = a[startnum:endnum].values('id','checktaskname','checkname__name','tasktype','checkname','checktype__checktitle','checkplace', 'checktime','createuser__name','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listall4':
@ -7774,7 +7774,7 @@ def checkprojects(req):
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username','checkname__name', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
@ -7783,7 +7783,7 @@ def checkprojects(req):
a = Checkjob.objects.filter(usecomp=Partment.objects.get(partid=companyid),taskstate=2,checktask__createuser__userid=userid).exclude(deletemark=0)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listself':
@ -7791,7 +7791,7 @@ def checkprojects(req):
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
elif a == 'listallx':
@ -7799,7 +7799,7 @@ def checkprojects(req):
partid=companyid),deletemark=1)
total = a.count()
startnum, endnum = fenye(req)
a = a.order_by('-starttime')[startnum:endnum].values('id','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
a = a.order_by('-starttime')[startnum:endnum].values('id','checkname__name','checktask__checktaskname','jobstate','starttime','endtime','yanshou','checkquestion','zguser__username','zgtime','checktask__checktype__checktitle','checkname__username', 'taskstate','checktask__checktime','createuser__username','createdate')
return HttpResponse(transjson(total, a), content_type="application/json")
@ -7810,12 +7810,16 @@ def checkprojects(req):
return JsonResponse({'code': 1, 'data': obj})
elif a == 'addjob':
data = json.loads(req.body.decode('utf-8'))
yhtp = '?'.join(data['yhtp']) if 'yhtp' in data else []
zghtp = '?'.join(data['zghtp']) if 'zghtp' in data else []
obj = Checkjob.objects.get(id=req.GET.get('jobid'))
obj.checkquestion = data['checkquestion']
obj.zgjg = data['zgjg']
obj.taskstate = data['taskstate']
obj.createuser = User.objects.get(userid=userid)
obj.content=data['content']
obj.yhtp=yhtp
obj.zghtp=zghtp
s=[]
if data['participant']!="":
list = data['participant'].split(',')
@ -7883,13 +7887,13 @@ def checkprojects(req):
'value': '处罚通知:'
},
'keyword1': {
'value':'罚内容'+ obj.content
'value':'理意见'+ obj.content
},
'keyword2': {
'value': '通知时间:'+str(obj.createdate)
},
'keyword3': {
'value': '处罚人'+obj.createuser.name
'value': '接受处理意见人员'+obj.createuser.name
},
'remark': {
'value': '请及时查看阅读'
@ -8033,8 +8037,16 @@ def checkprojects(req):
uselist.append(item.name)
x = a.values('checktask__checktaskname','starttime','zgjg','checktask__tasktype','endtime','jobstate','zguser__username','checktask__checktype__checkcontent','checktask__checkplace','checktask__checktime' ,'checkname__username', 'checkquestion', 'zgtime', 'zguser__username', 'createuser__username',
'createdate', 'taskstate','content','pmpeople', 'zgyq','zgjg', 'yanshou', 'yanshouren__name')[0]
'createdate', 'taskstate','zghtp','content','yhtp','pmpeople', 'zgyq','zgjg', 'yanshou', 'yanshouren__name')[0]
x['bcfr'] = uselist
if x['yhtp'] != '':
x['yhtp'] = x['yhtp'].split('?')
else:
x['yhtp'] == []
if x['zghtp'] != '':
x['zghtp'] = x['zghtp'].split('?')
else:
x['zghtp'] == []
return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json")
elif a == 'checkdetail':
id = req.GET.get('id')