Merge branch 'master' of 10.7.100.160:/job/safesite

This commit is contained in:
shilixia 2019-10-10 17:10:21 +08:00
commit 15ff79c60a
24 changed files with 426 additions and 111 deletions

View File

@ -283,7 +283,7 @@ def drrisks(companyid,path):
if users.exists():
obj.zrr = users[0]
obj.save()
obj.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
obj.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
obj.save()
a = Risk()
a.riskact=obj

View File

@ -19,6 +19,5 @@ class CompanyInfoForm(forms.Form):
legalperson_phone = forms.CharField(max_length=24, label='法人电话', widget=forms.TextInput(attrs={'size': '50'}))
liaison = forms.CharField(max_length=24, label='联系人', widget=forms.TextInput(attrs={'size': '50'}))
liaison_phone = forms.CharField(max_length=24, label='联系人电话', widget=forms.TextInput(attrs={'size': '50'}))
liaison_fax = forms.CharField(max_length=13, label='联系人传真', widget=forms.TextInput(attrs={'size': '50'}))
introduce = forms.CharField(label='公司概况', widget=forms.Textarea)

View File

@ -0,0 +1,19 @@
# Generated by Django 2.1.5 on 2019-09-17 23:14
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('safesite', '0265_auto_20190917_1716'),
]
operations = [
migrations.AddField(
model_name='area',
name='qrcode',
field=models.CharField(blank=True, max_length=200, null=True),
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 2.1.5 on 2019-09-20 12:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0269_auto_20190919_1423'),
]
operations = [
migrations.RemoveField(
model_name='companyinfo',
name='liaison_fax',
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 2.1.5 on 2019-09-25 11:13
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0270_auto_20190920_1200'),
]
operations = [
migrations.AlterField(
model_name='trouble',
name='shresult',
field=models.IntegerField(blank=True, choices=[(1, '通过'), (2, '审核未通过'), (3, '复查未通过'), (4, '已修改'), (5, '评估未通过'), (6, '未采纳')], null=True),
),
]

View File

@ -0,0 +1,18 @@
# Generated by Django 2.1.5 on 2019-09-25 16:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0271_auto_20190925_1113'),
]
operations = [
migrations.AddField(
model_name='suggest',
name='accept',
field=models.IntegerField(default=1),
),
]

View File

@ -0,0 +1,29 @@
# Generated by Django 2.1.5 on 2019-10-08 16:04
import django.contrib.postgres.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0272_auto_20190925_1657'),
]
operations = [
# migrations.AddField(
# model_name='area',
# name='qrcode',
# field=models.CharField(blank=True, max_length=200, null=True),
# ),
migrations.AddField(
model_name='operation',
name='todousers',
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
),
migrations.AddField(
model_name='operationspjd',
name='sprs',
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
),
]

View File

@ -1,7 +1,7 @@
from django.db import models
import uuid
import django.utils.timezone as timezone
from django.contrib.postgres.fields import JSONField
from django.contrib.postgres.fields import JSONField,ArrayField
import jwt
import datetime
# Create your models here.
@ -120,6 +120,7 @@ class Trouble(models.Model):#隐患排查
(3, '复查未通过'),
(4, '已修改'),
(5,'评估未通过'),
(6,'未采纳'),
)
deletemark=models.IntegerField(default='1')
troubleid = models.AutoField(primary_key=True)
@ -409,6 +410,7 @@ class Suggest(models.Model):#合理化建议
yjwcsj = models.DateTimeField(null=True,blank=True) #预计完成时间
sjwcsj = models.DateTimeField(null=True,blank=True) #实际完成时间
shyj = models.CharField(max_length=1000,null=True,blank=True) #审核意见
accept = models.IntegerField(default=1)
class Suggestflow(models.Model):#建议流程
id = models.AutoField(primary_key=True)
@ -464,6 +466,7 @@ class Operation(models.Model):#作业表
zyzt = JSONField()
fxcs = models.CharField(max_length=200)
todouser = models.ForeignKey(User,related_name='zyclr',on_delete=models.CASCADE,null=True,blank=True)
todousers = ArrayField(models.IntegerField(), blank=True,null=True)
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True,default=1)
class Fxcs(models.Model):#作业分析措施
@ -506,12 +509,13 @@ class Operzyry(models.Model):#作业确认人
modifytime = models.DateTimeField(auto_now = True)
submittime = models.DateTimeField(default = timezone.now)
class Operationspjd(models.Model):#作业审批节点
class Operationspjd(models.Model):#作业审批节点配置
id = models.AutoField(primary_key=True)
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
jdmc = models.CharField(max_length=100)
spbm = models.ForeignKey(Partment,related_name='spbm',on_delete=models.CASCADE,null=True,blank=True)#审批部门
spr = models.ForeignKey(User,related_name='spr',on_delete=models.CASCADE,null=True,blank=True)#审批部门
sprs = ArrayField(models.IntegerField(), blank=True,null=True)
submittime = models.DateTimeField(u'创建时间',default = timezone.now)
modifytime = models.DateTimeField(auto_now = True)
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
@ -830,7 +834,6 @@ class CompanyInfo(models.Model):
legalperson_phone = models.CharField(max_length=24, null=True, blank=True, verbose_name='法人电话')
liaison = models.CharField(max_length=24, verbose_name='联系人')
liaison_phone = models.CharField(max_length=24, verbose_name='联系人电话')
liaison_fax = models.CharField(max_length=10, null=True, blank=True, verbose_name='联系人传真')
introduce = models.TextField( null=True, blank=True, verbose_name='公司概况')
createtime = models.DateTimeField(auto_now_add=True)
modifytime = models.DateTimeField(auto_now=True)

File diff suppressed because one or more lines are too long

View File

@ -32,6 +32,17 @@ function canvasDataURL(path, obj, callback) {
scale = w / h;
w = obj.width || w;
h = obj.height || (w / scale);
if(w <= h ){
if(w>640){
w = 640
h = w/scale
}
}else{
if(h>640){
h=640
w = h*scale
}
}
var quality = 0.7; // 默认图片质量为0.7
//生成canvas
var canvas = document.createElement('canvas');
@ -45,9 +56,9 @@ function canvasDataURL(path, obj, callback) {
canvas.setAttributeNode(anh);
ctx.drawImage(that, 0, 0, w, h);
// 图像质量
if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
quality = obj.quality;
}
// if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
// quality = obj.quality;
// }
// quality值越小所绘制出的图像越模糊
var base64 = canvas.toDataURL('image/jpeg', quality);
// 回调函数返回base64的值
@ -62,7 +73,6 @@ function convertBase64UrlToBlob(urlData) {
}
return new Blob([u8arr], { type: mime });
}
//取消上传
function cancleUploadFile() {

View File

@ -301,7 +301,16 @@
$("#yhms").textbox('disable');
$('#fcyjdiv,#file2,#zgxq,#shyjdiv,#csyj,#reject').hide(); $('#jxpg').show();
$("#yhpg").combobox({ url: 'getdickey?dicclass=19&a=combobox', });
$("#zgbm").combotree({ url: 'parthandle?a=tree3', onSelect: function (node) { $('#zgr').combobox({ url: 'getuser?partid=' + node.id + '&a=combobox', }); } });
$("#zgbm").combotree({ url: 'parthandle?a=tree3', onSelect: function (node) {
$('#zgr').combobox({
url: 'getuser?partid=' + node.id + '&a=combobox',
editable: false,
filter: function (q, row) {
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >= 0;//这里改成>=即可在任意地方匹配
},
});
} });
// if (data.yhpg__dickeyname != '' & data.yhpg__dickeyname != null) {
// $("#yhpg").combobox('setValue', data.yhpg__dickeyid).combobox('readonly');
// $("#yhlx").combobox({ url: 'getdicclass?dicid=15' }).combobox('setValue', data.yhlx__dicid).combobox('readonly');

View File

@ -219,9 +219,7 @@
var form = new FormData();
if (fileObj.size / 1024 > 500) { //大于500k进行压缩上传
$("#file").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
photoCompress(fileObj, {
quality: 0.2
}, function (base64Codes) {
photoCompress(fileObj, {}, function (base64Codes) {
//console.log("压缩后:" + base.length / 1024 + " " + base);
var bl = convertBase64UrlToBlob(base64Codes);
form.append("upfile", bl, fileObj.name); // 文件对象
@ -310,9 +308,7 @@
var form = new FormData();
if (fileObj.size / 1024 > 500) { //大于500k进行压缩上传
$("#file2").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
photoCompress(fileObj, {
quality: 0.2
}, function (base64Codes) {
photoCompress(fileObj, {}, function (base64Codes) {//quality: 0.2
//console.log("压缩后:" + base.length / 1024 + " " + base);
var bl = convertBase64UrlToBlob(base64Codes);
form.append("upfile", bl, fileObj.name); // 文件对象

View File

@ -1,4 +1,3 @@
<div class="labeldiv" style="margin:10px">公司信息</div>
<form method="post" action="/companyinfo/" id="companyform">
{% csrf_token %}
{{ companyinfo.non_field_errors }}

View File

@ -263,7 +263,7 @@ float: left;">
<div style="width:70%;float:left;height:100%;margin-top: 10px;" align=center>
<div style="margin-left:10px;margin-right: 10px">
<div id="panelx" class="easyui-panel" title="各指标数量趋势" data-options="iconCls:'fa-bar-chart',closable:true,
<div class="easyui-panel" title="各指标数量趋势" data-options="iconCls:'fa-bar-chart',closable:true,
collapsible:true,"
align=center style="height:100%">
<div id='gzbqst' style="width:90%;height:500px;"></div>
@ -326,6 +326,12 @@ float: left;">
</div>
<div style="width:100%;height:800px">
<div id="panelx" class="easyui-panel" data-options="iconCls:'fa-bar-chart'" >
</div>
</div>
<script type="text/javascript">
//首页总数统计
$.ajax({
@ -372,13 +378,12 @@ float: left;">
<script>
var data=JSON.parse(localStorage.getItem("data"));
bindmap9('gzbqst')
if(data.rights.indexOf('30')!=-1){ //有无地图功能
$('#panelx').panel({
href:'html/mapshow',
title:'地图展示'
})
}else{
bindmap9('gzbqst')
}
$("#sfxbm").combotree({
url: 'parthandle?a=tree',

View File

@ -13,7 +13,7 @@
required=true />
</div>
<div style="margin-bottom:5px">
<input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人'"
<input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人',multiple:true"
required=true />
</div>
</form>
@ -22,9 +22,13 @@
<script>
$('#spbm').combotree({ url: 'parthandle?a=tree', loadFilter: function(rows){
return convert(rows);
},onSelect: function (node) { $('#spr').combobox({ url: 'getuser?partid=' + node.id + '&a=combobox', }); } });
},onSelect: function (node) { $('#spr').combobox({
url: 'getuser?partid=' + node.id + '&a=combobox',
}); } });
function spjdsubmitForm() {
var spjddata = $('#spjdff').serializeJSON();
spjddata['spr'] = $('#spr').combobox('getValues')
console.log(spjddata)
spjddata['zylx'] = $('#zylxlist').datalist('getSelected').value
$.ajax({
type: "POST",

View File

@ -72,6 +72,10 @@
<input id="B" class="easyui-textbox" name="B" style="width:480px;" data-options="label:'选项B'," value="错" editable=false/>
<input name="right" type="radio" value="B" />
</div>
<div style="margin-top:5px;margin-bottom:5px">
<input id="resolution" class="easyui-textbox" name="resolution" style="width:480px;height:80px"
data-options="label:'解析',multiline:true" />
</div>
</form>
</div>
</div>

View File

@ -93,6 +93,7 @@
//$('#station').combobox('setValue',res.station__groupid)
$('#label').textbox('setValue',res.label)
$('#title').textbox('setValue',res.title)
$('#resolution').textbox('setValue',res.resolution)
for(var key in res.answer){
$('#'+key).textbox('setValue',res.answer[key])
}

View File

@ -106,6 +106,7 @@
//$('#station').combobox('setValue',res.station__groupid)
$('#label').textbox('setValue',res.label)
$('#title').textbox('setValue',res.title)
$('#resolution').textbox('setValue',res.resolution)
for(var key in res.answer){
$('#'+key).textbox('setValue',res.answer[key])
}

View File

@ -72,6 +72,10 @@
<input id="B" class="easyui-textbox" name="B" style="width:480px;" data-options="label:'选项B'," value="错" editable=false/>
<input id="Bcheck" name="right" type="radio" value="B" />
</div>
<div style="margin-top:5px;margin-bottom:5px">
<input id="resolution" class="easyui-textbox" name="resolution" style="width:480px;height:80px"
data-options="label:'解析',multiline:true" />
</div>
</form>
</div>
</div>
@ -83,6 +87,7 @@
// $('#station').combobox('setValue',res.station__groupid)
$('#label').textbox('setValue',res.label)
$('#title').textbox('setValue',res.title)
$('#resolution').textbox('setValue',res.resolution)
for(var key in res.answer){
$('#'+key).textbox('setValue',res.answer[key])
}

View File

@ -39,6 +39,10 @@
<input id="jtwz" class="easyui-textbox" name="place" style="width:480px" data-options="label:'具体位置'"
/>
</div>
<div style="margin-top:10px;margin-bottom:5px">
<input id="group" class="easyui-combobox" name="group" style="width:480px" data-options="label:'所属岗位',url:'grouphandle?a=combobox'"
required=true editable=false/>
</div>
<div style="margin-top:10px;margin-bottom:5px">
<select id="gkcj" class="easyui-combobox" name="gkcj" style="width:480px" data-options="label:'管控层级'"
required=true editable=false>
@ -80,7 +84,7 @@
$('#fxdmc').textbox('setValue',data.name)
$('#jtwz').textbox('setValue',data.place)
$('#qrcode').attr('src',data.qrcode)
$('#group').combobox('setValue', res.group__groupid)
$('#group').combobox('setValue', data.group__groupid)
$("#zrbm").combotree({
url: 'parthandle?a=tree',
onSelect: function (node) {

View File

@ -94,6 +94,20 @@
{ field: 'dqxz', title: '当前现状', width: 200 },
{ field: 'jynr', title: '建议内容', width: 400 },
{ field: 'jyfk', title: '建议反馈', width: 400 },
{
field: 'accept', title: '建议状态', width: 80, styler: function (value, row, index) {
switch (value) {
case 1: return 'background-color:green;'; break;
case 0: return 'background-color:red;'; break;
}
}, formatter: function (value, row, index) {
switch (value) {
case 1: return '已采纳'; break;
case 0: return '未采纳'; break;
}
}
},
]]
});
function addjy(){

View File

@ -116,12 +116,13 @@
{ field: 'todouser__userid', hidden: true },
{ field: 'sybzt', hidden: true },
{
field: 'shresult', title: '整改结果状态', width: 100, styler: function (value, row, index) {
field: 'shresult', title: '隐患状态', width: 100, styler: function (value, row, index) {
switch (value) {
case 1: return ''; break;
case 2: return 'background-color:red;'; break;
case 3: return 'background-color:red;'; break;
case 4: return 'background-color:yellow;'; break;
case 6: return 'background-color:yellow;'; break;
}
}, formatter: function (value, row, index) {
switch (value) {
@ -130,6 +131,7 @@
case 3: return '复查未通过'; break;
case 4: return '已修改'; break;
case 5: return '评估未通过'; break;
case 6: return '未采纳'; break;
}
}
},

View File

@ -47,7 +47,7 @@
{ field: 'id', title: 'ID', hidden: true },
{ field: 'jdmc', title: '节点名称', width: 40 },
{ field: 'spbm__partname', title: '审批部门', width: 120 },
{ field: 'spr__name', title: '审批人', width: 120 },
{ field: 'sprnames', title: '审批人', width: 120 },
]]
});
$('#fxcstable').datagrid({

View File

@ -482,6 +482,32 @@ def getspr(ubp):
return User.objects.get(ubelongpart=currentpart,issuper=1)
return a
def getsprs(ubp):
currentpart=ubp
a=getsprs_ubp(currentpart)
while a==False:
currentpart=currentpart.parentid #已找不到上级部门
if currentpart:
a=getsprs_ubp(currentpart)
else:
return User.objects.get(ubelongpart=currentpart,issuper=1)
return a
def getsprs_ubp(ubp):
a=ubp
if a.aqy !=',':
aqystr = a.aqy
aqylist = aqystr.split(',')
aqylist = list(map(int, list(filter(None, aqylist))))
return aqylist
if a.bmzg !=',':
zgstr = a.bmzg
zglist = zgstr.split(',')
zglist = list(map(int, list(filter(None, zglist))))
return zglist
else:
return False
@check_login
def menutree(req):
userid = req.session['userid']
@ -947,29 +973,55 @@ def accessyh(req):
return JsonResponse({"code":1})
elif a.yhzt==1:
if yhdata['shresult'] == 'reject':
a.shresult = 5
a.yhzt = 0
a.sybzt = 1
a.todouser = a.fxr
a.pgyj = yhdata['pgyj']
a.save()
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=0,action=''+a.fxr.name+'重新填报',result=0)
m.save()
postdict={
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
'data':{
'first':{'value':a.yhdj.dickeyname + '被退出需重新上报:'},
'keyword1':{'value':a.yhms},
'keyword2':{'value':a.fxsj},
'keyword3':{'value':a.yhdd},
'remark':{'value':'请查看评估意见并修改后上传。'}
if 'accept' in yhdata:
if yhdata['accept'] == 'no':
a.shresult = 6
a.yhzt = 6
a.sybzt = 1
a.todouser = None
a.pgyj = yhdata['pgyj']
a.save()
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=6,action='未采纳',opinion=yhdata['pgyj'])
m.save()
postdict={
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
'data':{
'first':{'value':a.yhdj.dickeyname + '未被采纳:'},
'keyword1':{'value':a.yhms},
'keyword2':{'value':a.fxsj},
'keyword3':{'value':a.yhdd},
'remark':{'value':'请查看未采纳原因'}
}
}
postdict['touser']=a.fxr.openid
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
else:
a.shresult = 5
a.yhzt = 0
a.sybzt = 1
a.todouser = a.fxr
a.pgyj = yhdata['pgyj']
a.save()
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=0,action=''+a.fxr.name+'重新填报',result=0)
m.save()
postdict={
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
'data':{
'first':{'value':a.yhdj.dickeyname + '被退出需重新上报:'},
'keyword1':{'value':a.yhms},
'keyword2':{'value':a.fxsj},
'keyword3':{'value':a.yhdd},
'remark':{'value':'请查看评估意见并修改后上传。'}
}
}
}
postdict['touser']=a.todouser.openid
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
postdict['touser']=a.todouser.openid
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
elif 'zppg' in yhdata and yhdata['zppg']=='yes':
a.yhzt=1
a.sybzt=1
@ -1475,13 +1527,15 @@ def troublehandle(req):
userid = req.session['userid']
if User.objects.get(userid = userid).issuper == 1:
a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
a.delete()
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
b = TroubleAccess.objects.filter(troubleid__troubleid=req.POST.get('troubleid')).count()
if b == 1 and a.fxr.userid==userid:
a.delete()
a.deletemark=0
a.save()
return JsonResponse({"code":1})
else:
return JsonResponse({"code":0})
@ -2553,9 +2607,10 @@ def gchandle(req):
if 'unsafe' in gcdata:
olist = gcdata['unsafe']
for i in olist:
dickey = Dickey.objects.get(dickeyid=i)
m = Unsafes(observe = obj,unsafedickey=dickey,unsafedicclass=dickey.dicparent)
m.save()
if i != 0:
dickey = Dickey.objects.get(dickeyid=i)
m = Unsafes(observe = obj,unsafedickey=dickey,unsafedicclass=dickey.dicparent)
m.save()
yjjs_gc.delay(companyid)
return JsonResponse({"code":1})
elif a == 'listall':
@ -3353,19 +3408,19 @@ def apipartuser(req):
if req.GET.get('parentid')=='company':
lst=[]
company = User.objects.get(userid=userid).usecomp
partobjs = Partment.objects.filter(parentid=company)
partobjs = Partment.objects.filter(parentid=company,deletemark=1)
for i in partobjs:
lst.append({'id':i.partid,'name':i.partname,'parentId':0,'checked':False,'isPeople':False,'children':[]})
userobjs = User.objects.filter(ubelongpart=company).exclude(issuper=1)
userobjs = User.objects.filter(ubelongpart=company,deletemark=1).exclude(issuper=1)
for i in userobjs:
lst.append({'id':i.userid,'name':i.name,'parentId':0,'checked':False,'isPeople':True,'children':[]})
return JsonResponse({"code":1,"data":lst})
else:
lst=[]
partobjs = Partment.objects.filter(parentid=req.GET.get('parentid'))
partobjs = Partment.objects.filter(parentid=req.GET.get('parentid'),deletemark=1)
for i in partobjs:
lst.append({'id':i.partid,'name':i.partname,'parentId':0,'checked':False,'isPeople':False,'children':[]})
userobjs = User.objects.filter(ubelongpart=req.GET.get('parentid')).exclude(issuper=1)
userobjs = User.objects.filter(ubelongpart=req.GET.get('parentid'),deletemark=1).exclude(issuper=1)
for i in userobjs:
lst.append({'id':i.userid,'name':i.name,'parentId':0,'checked':False,'isPeople':True,'children':[]})
return JsonResponse({"code":1,"data":lst})
@ -3471,7 +3526,7 @@ def apisuggest(req):
a = Suggest.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('-submittime')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'listself':
userid = req.session['userid']
@ -3479,7 +3534,7 @@ def apisuggest(req):
a = Suggest.objects.filter(jyr__userid=userid).order_by('-submittime')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'listtodo':
userid = req.session['userid']
@ -3487,7 +3542,7 @@ def apisuggest(req):
a = Suggest.objects.filter(todouser__userid=userid).order_by('-submittime')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'todonum':
userid = req.session['userid']
@ -3496,7 +3551,7 @@ def apisuggest(req):
elif a == 'detail':
jyid=req.GET.get('jyid')
a = Suggest.objects.filter(jyid=jyid)
x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj')[0]
x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj','accept')[0]
if x['jyimg']!='':
x['jyimg'] = x['jyimg'].split('?')
else:
@ -3526,7 +3581,7 @@ def apisuggest(req):
if req.GET.get('jssj'):
a = a.filter(submittime__lte=req.GET.get('jssj'))
total = a.count()
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'exportexcel':
userid = req.session['userid']
@ -3568,6 +3623,15 @@ def apisuggest(req):
obj.save()
Suggestflow.objects.create(suggest=obj,user=User.objects.get(userid=userid),action='转交'+user.name+'评估')
return JsonResponse({"code":1})
elif 'accept' in data:
if data['accept'] == 'no':
obj.jyzt = 4
obj.todouser = None
obj.jyfk = data['jyfk']
obj.accept = 0
obj.save()
Suggestflow.objects.create(suggest=obj,user=User.objects.get(userid=userid),action='未采纳该建议')
return JsonResponse({"code":1})
else:
obj.jyzt = 4
obj.todouser = None
@ -3694,11 +3758,23 @@ def apitool(req):
newpart = req.GET.get('part')
username = req.GET.get('username')
user = User.objects.get(username=username)
oldpart = user.ubelongpart
oldpart.aqy = oldpart.aqy.replace(','+str(user.userid)+',','')
oldpart.bmzg = oldpart.bmzg.replace(','+str(user.userid)+',','')
oldpart.bsq = oldpart.bsq.replace(','+str(user.userid)+',','')
oldpart.save()
part = Partment.objects.get(partid=newpart)
companyid = part.partlink.split(',')[1]
if part.iscompany==1:
usecomp = part
else:
usecomp = Partment.objects.get(partid=part.partlink.split(',')[1])
user.ubelongpart = part
user.usecomp = Partment.objects.get(partid=companyid)
user.usecomp = usecomp
user.save()
for i in Group.objects.filter(usecomp=usecomp):
i.users.remove(user)
groupobj = Group.objects.filter(usecomp=usecomp,grouptype=3).first()
groupobj.users.add(user)
return JsonResponse({"code":1})
elif a == 'correctionzs':
objs = Socertificate.objects.all()
@ -3941,13 +4017,14 @@ def apioperation(req):
obj.zyzt = {'zyzt':'确认中','index':0}
obj.save()
splc = []
splc.append({'jdmc':'作业部门审批','spr':getspr(obj.zybm)})
splc.append({'jdmc':'属地部门审批','spr':getspr(obj.sdbm)})
splc.append({'jdmc':'作业负责人审批','sprs':[userid]})
splc.append({'jdmc':'作业部门审批','sprs':getsprs(obj.zybm)})
splc.append({'jdmc':'属地部门审批','sprs':getsprs(obj.sdbm)})
for i in Operationspjd.objects.filter(zylx=obj.zylx,usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'):
splc.append({'jdmc':i.jdmc,'spr':i.spr.userid})
splc.append({'jdmc':i.jdmc,'sprs':i.sprs})
obj.zyzt['splc']=splc
obj.save()
Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
# Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
b=[]#发送通知
for i in data['zyry']:
x=User.objects.get(userid=i)
@ -4002,7 +4079,7 @@ def apioperation(req):
for x in b:
i.append(x.oper.zyid)
a = Operation.objects.filter(usecomp=usecomp,deletemark=1,zyid__in=i)
a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))).order_by('-submittime')
a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))|Operation.objects.filter(todousers__contains=[userid])).order_by('-submittime')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('zyid','zylx__dickeyname','zynum','zyfzr__name','zynr','zyzt','submittime')
@ -4041,7 +4118,8 @@ def apioperation(req):
return res
elif a == 'qrzy':
userid = req.session['userid']
zyid = req.POST.get('zyid')
data = json.loads(req.body.decode('utf-8'))
zyid = data['zyid']
Operzyry.objects.filter(oper__zyid=zyid,operzyry__userid=userid).update(checked=1)
if Operzyry.objects.filter(oper__zyid=zyid,checked=0).exists():
pass
@ -4052,14 +4130,57 @@ def apioperation(req):
obj.zyzt['index'] = 0
index = obj.zyzt['index']
obj.zyzt['jdmc'] = obj.zyzt['splc'][index]['jdmc']
obj.todouser = User.objects.get(userid=obj.zyzt['splc'][index]['spr'])
if 'sprs' in obj.zyzt['splc'][index]:
sprs = obj.zyzt['splc'][index]['sprs']
else:
sprs = [obj.zyzt['splc'][index]['spr']]
obj.todousers = sprs
obj.save()
for i in sprs:
postdict={
'touser':'',
'template_id':User.objects.get(userid=i).openid,
'data':{
'first':{
'value':obj.zylx.dickeyname + '作业审批:'
},
'keyword1':{
'value':obj.zynr
},
'keyword2':{
'value':obj.kssj
},
'keyword3':{
'value':obj.zydd
},
'remark':{
'value':'请您及时完成审批!'
}
}
}
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
elif a == 'spzy':
userid = req.session['userid']
data = json.loads(req.body.decode('utf-8'))
zyid = data['zyid']
obj = Operation.objects.get(zyid=zyid)
oldtodo = obj.todousers
oldjdmc = obj.zyzt['jdmc']
nextindex = obj.zyzt['index']+1
spruser = User.objects.get(userid=userid)
if 'zzsp' in data:
obj.zyzt['zyzt'] = '待关闭'
obj.todouser = obj.zyfzr
obj.todousers = None
obj.save()
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
postdict={
'touser':'',
'template_id':obj.todouser.openid,
'template_id':obj.zyfzr.openid,
'data':{
'first':{
'value':obj.zylx.dickeyname + '作业审批:'
'value':obj.zylx.dickeyname + '作业审批通过:'
},
'keyword1':{
'value':obj.zynr
@ -4071,53 +4192,79 @@ def apioperation(req):
'value':obj.zydd
},
'remark':{
'value':'请您及时完成审批!'
'value':'你是作业负责人,可以开始作业,作业完成请及时关闭!'
}
}
}
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
elif a == 'spzy':
zyid = req.POST.get('zyid')
obj = Operation.objects.get(zyid=zyid)
oldtodo = obj.todouser
oldjdmc = obj.zyzt['jdmc']
nextindex = obj.zyzt['index']+1
return JsonResponse({"code":1})
if 'zjsp' in data:
newsprs = data['newsprs']#新审批人
obj.todousers = newsprs
obj.save()
for i in newsprs:
postdict={
'touser':'',
'template_id':User.objects.get(userid=i).openid,
'data':{
'first':{
'value':obj.zylx.dickeyname + '作业审批:'
},
'keyword1':{
'value':obj.zynr
},
'keyword2':{
'value':obj.kssj
},
'keyword3':{
'value':obj.zydd
},
'remark':{
'value':'请您及时完成审批!'
}
}
}
send_wechatmsg.delay(postdict)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=2,spbm=spruser.ubelongpart)
return JsonResponse({"code":1})
try:
nextsplc = obj.zyzt['splc'][nextindex]
obj.zyzt['zyzt'] = '审批中'
obj.zyzt['index'] = nextindex
obj.zyzt['jdmc'] = nextsplc['jdmc']
obj.todouser = User.objects.get(userid=nextsplc['spr'])
obj.todousers = nextsplc['sprs']
obj.save()
postdict={
'touser':'',
'template_id':obj.todouser.openid,
'data':{
'first':{
'value':obj.zylx.dickeyname + '作业审批:'
},
'keyword1':{
'value':obj.zynr
},
'keyword2':{
'value':obj.kssj
},
'keyword3':{
'value':obj.zydd
},
'remark':{
'value':'请您及时完成审批!'
for i in nextsplc['sprs']:
postdict={
'touser':'',
'template_id':User.objects.get(userid=i).openid,
'data':{
'first':{
'value':obj.zylx.dickeyname + '作业审批:'
},
'keyword1':{
'value':obj.zynr
},
'keyword2':{
'value':obj.kssj
},
'keyword3':{
'value':obj.zydd
},
'remark':{
'value':'请您及时完成审批!'
}
}
}
}
send_wechatmsg.delay(postdict)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart)
send_wechatmsg.delay(postdict)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
except :
obj.zyzt['zyzt'] = '待关闭'
obj.todouser = obj.zyfzr
obj.todouser = None
obj.todousers = [obj.zyfzr.userid]
obj.save()
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
postdict={
'touser':'',
'template_id':obj.zyfzr.openid,
@ -4150,13 +4297,14 @@ def apioperation(req):
obj.zyimg2 = '?'.join(zyimg2)
obj.zyzt['zyzt']='已关闭'
obj.todouser = None
obj.todousers = None
obj.save()
return JsonResponse({"code":1})
elif a == 'todonum':
userid = req.session['userid']
i = []
b = Operzyry.objects.filter(operzyry__userid=userid,checked=0)
c = Operation.objects.filter(todouser=User.objects.get(userid=userid))
c = Operation.objects.filter(Q(todouser=User.objects.get(userid=userid))|Q(todousers__contains=[userid]))
for x in b:
i.append(x.oper.zyid)
for x in c:
@ -4240,8 +4388,9 @@ def apioperationspjd(req):
zylx = Dickey.objects.get(dickeyid=data['zylx'])
jdmc = data['jdmc']
spbm = Partment.objects.get(partid=data['spbm'])
spr = User.objects.get(userid=data['spr'])
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,spr=spr,usecomp=Partment.objects.get(partid=companyid))
#spr = User.objects.get(userid=data['spr'])
sprs = data['spr']
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,sprs=sprs,usecomp=Partment.objects.get(partid=companyid))
return JsonResponse({"code":1})
elif a=='listall':
if req.GET.get('zylx'):
@ -4250,8 +4399,9 @@ def apioperationspjd(req):
companyid = getcompany(userid)
a = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=zylx),usecomp=Partment.objects.get(partid=companyid)).order_by('id')
total = a.count()
startnum,endnum=fenye(req)
a = a[startnum:endnum].values('id','jdmc','spbm__partname','spr__name')
a = a.values('id','jdmc','spbm__partname','sprs')
for i in a:
i['sprnames'] = list(User.objects.filter(userid__in=i['sprs']).values_list('name',flat=True))
return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'del':
id = req.GET.get('id')
@ -5092,6 +5242,13 @@ def apiriskact(req):
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')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a=='listall2':
a = RiskAct.objects
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')
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)
@ -5455,8 +5612,8 @@ def apiriskacttask(req):
startnum,endnum=fenye(req)
objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable')
return HttpResponse(transjson(total,objs),content_type="application/json")
elif a == 'listself':
a = RiskActTask.objects.filter(user__userid=userid,istask=1)
elif a == 'listself':#排查记录
a = RiskActTask.objects.filter(user__userid=userid)
total = a.count()
startnum,endnum=fenye(req)
a = a.order_by('-id')[startnum:endnum].values('id','riskact__level','riskact__name','riskact__area__name','riskact__place','taskdo','state','usable','riskact__group__groupname','taskadd','taskexpire','user__userid','riskact__id')