This commit is contained in:
caoqianming 2019-10-08 21:29:55 +08:00
parent 783a0cb6ce
commit 21be18b1a4
6 changed files with 145 additions and 70 deletions

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.
@ -466,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):#作业分析措施
@ -508,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)

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

@ -98,7 +98,7 @@
field: 'accept', title: '建议状态', width: 80, styler: function (value, row, index) {
switch (value) {
case 1: return 'background-color:green;'; break;
case 0: return 'background-color:yellow;'; break;
case 0: return 'background-color:red;'; break;
}
}, formatter: function (value, row, index) {

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

@ -480,6 +480,27 @@ 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.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']
@ -1499,13 +1520,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})
@ -3496,7 +3519,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']
@ -3504,7 +3527,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']
@ -3512,7 +3535,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']
@ -3521,7 +3544,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:
@ -3551,7 +3574,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']
@ -3987,13 +4010,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)
@ -4048,7 +4072,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')
@ -4098,72 +4122,79 @@ 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'])
sprs = obj.zyzt['splc'][index]['sprs']
obj.todousers = 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 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)
send_wechatmsg.delay(postdict)
return JsonResponse({"code":1})
elif a == 'spzy':
userid = req.session['userid']
zyid = req.POST.get('zyid')
obj = Operation.objects.get(zyid=zyid)
oldtodo = obj.todouser
oldtodo = obj.todousers
oldjdmc = obj.zyzt['jdmc']
nextindex = obj.zyzt['index']+1
spruser = User.objects.get(userid=userid)
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.todousers = None
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,
@ -4202,7 +4233,7 @@ def apioperation(req):
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:
@ -4286,8 +4317,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'):
@ -4296,8 +4328,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')
@ -5138,6 +5171,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)
@ -5501,8 +5541,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')