From dd402fe5a95b8a8d66e02d4f02867580f5079428 Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Sun, 26 Apr 2020 15:03:42 +0800 Subject: [PATCH] renwuzuiou --- .../migrations/0333_auto_20200424_1000.py | 19 +++ safesite/models.py | 1 + safesite/tasks.py | 2 +- safesite/templates/checkjob.html | 133 ++++++++++++++---- safesite/templates/checklist.html | 63 ++++++++- safesite/templates/checklistadd.html | 2 +- safesite/templates/checklistadd2.html | 102 ++++++++++++++ safesite/templates/trouble.html | 118 ++++++++-------- safesite/urls.py | 1 + safesite/views.py | 121 +++++++++++++++- 10 files changed, 464 insertions(+), 98 deletions(-) create mode 100644 safesite/migrations/0333_auto_20200424_1000.py create mode 100644 safesite/templates/checklistadd2.html diff --git a/safesite/migrations/0333_auto_20200424_1000.py b/safesite/migrations/0333_auto_20200424_1000.py new file mode 100644 index 00000000..b1bb8893 --- /dev/null +++ b/safesite/migrations/0333_auto_20200424_1000.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.8 on 2020-04-24 10:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0332_auto_20200421_1354'), + ] + + operations = [ + + migrations.AddField( + model_name='checktask', + name='taskstate', + field=models.IntegerField(default=1), + ), + ] diff --git a/safesite/models.py b/safesite/models.py index 4e4659f9..d4431a26 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -1249,6 +1249,7 @@ class Checktask(models.Model): tasktype = models.IntegerField(default=0)#任务执行频率(1每天,2每周,3每月,4每季度,5每半年,6每年) userlist = models.CharField(max_length=200,null=True,)#检查人列表 zxstate = models.IntegerField(default=1)#1同时执行,2一个执行就执行 + taskstate = models.IntegerField(default=1)#是否暂停,1运行,2暂停 class Checkjob(models.Model): id=models.AutoField(primary_key=True)#主键 checktask=models.ForeignKey(Checktask,on_delete=models.CASCADE)#关联任务表 diff --git a/safesite/tasks.py b/safesite/tasks.py index a1f6b72d..6fee05b7 100644 --- a/safesite/tasks.py +++ b/safesite/tasks.py @@ -282,7 +282,7 @@ def riskacttask(): @shared_task def checktask(): nowtime = datetime.datetime.now() - for i in Checktask.objects.filter(deletemark=1): + for i in Checktask.objects.filter(deletemark=1,taskstate=1): if i.tasktype==1: if i.checktime: diff --git a/safesite/templates/checkjob.html b/safesite/templates/checkjob.html index 94692575..d585dbfe 100644 --- a/safesite/templates/checkjob.html +++ b/safesite/templates/checkjob.html @@ -9,36 +9,49 @@ - + 详细筛选
{% load myfilter %} {% if request|has_permission:'b_checkjob_add' %} 执行任务 {% endif %} + + 删除 + {% if request|has_permission:'b_checkjob_detail' %} 详情 {% endif %} +
+
+
+
+
+
+
+ +
+
+
+
+
+ 查询 +
+ +
\ No newline at end of file diff --git a/safesite/templates/checklist.html b/safesite/templates/checklist.html index a2d3bb85..215fb9a7 100644 --- a/safesite/templates/checklist.html +++ b/safesite/templates/checklist.html @@ -10,9 +10,13 @@ {% if request|has_permission:'b_checklist_add' %} 发布任务 {% endif %} + + 发布专项任务 + {% if request|has_permission:'b_checklist_del' %} 删除 {% endif %} + 停止 详情 @@ -36,12 +40,12 @@ columns: [[ { field: 'id', title: 'ID', hidden: true }, { field: 'checktaskname', title: '任务名称', width: 150 }, - { field: 'checktype__checktitle', title: '检查表', width: 100 }, - { field: 'checktime', title: '更新时间', width: 300 }, + { field: 'checktype__checktitle', title: '检查表', width: 300 }, + //{ field: 'checktime', title: '更新时间', width: 300 }, { field: 'createuser__name', title: '创建人', width: 300 }, { field: 'createdate', title: '创建时间', width: 300 }, - { field: 'checkplace', title: '检查地点', width: 300 }, + { field: 'checkplace', title: '检查地点', width: 200 }, { field: 'tasktype', title: '排查频次', width: 100, formatter: function (value, row, index) { switch (value) { @@ -52,6 +56,7 @@ case 4: return '每季度一次'; break; case 5: return '每半年一次'; break; case 6: return '每年一次'; break; + case 7: return '专项检查'; break; } }, styler: function (value, row, index) { switch (value) { @@ -62,13 +67,28 @@ case 4: return 'color:green;font-weight:bold'; break; case 5: return 'color:green;font-weight:bold'; break; case 6: return 'color:green;font-weight:bold'; break; + case 7: return 'color:green;font-weight:bold'; break; + }}}, + { field: 'taskstate', title: '派发状态', width: 100, formatter: function (value, row, index) { + switch (value) { + case 1: return '正常派发'; break; + case 2: return '停止派发'; break; + } + }, styler: function (value, row, index) { + switch (value) { + + case 1: return 'background-color:green;font-weight:bold;color:#fafafa'; break; + case 2: return 'background-color:yellow;font-weight:bold;'; break; + }}}, - ]] }); function addcheckrw(){ - opendg('发布检查任务','html/addcheckrw') + opendg('发布检查任务','html/addcheckrw')//普通检查任务 + } + function addcheckrw2(){ + opendg('发布专项检查任务','html/addcheckrw2')//专项检查任务 } function detailcheck() { var row = $('#tasktab').datagrid('getSelected'); @@ -79,6 +99,38 @@ $.messager.alert('提示', '请先选择一条数据!'); } + } + function stopstate(){ + var row = $('#tasktab').datagrid('getSelected'); + if (row) { + $.messager.confirm('提示', '确定停止该条任务吗?', function (r) { + if (r) { + $.ajax({ + type: "GET", + url: 'api/checkproject?a=checkstop', + data: { 'id': row.id }, + datatype: "json", + beforeSend: function () { }, + success: function (data) { + if (data.code == 1) { + $("#tasktab").datagrid('reload'); + } + else { + $.messager.alert('提示', '你无权停止该条任务信息!'); + } + }, + complete: function (XMLHttpRequest, textStatus) { + }, + error: function () { + } + }); + } + }); + + } + else { + $.messager.alert('提示', '请选择一行数据!'); + } } function deltask() { var row = $('#tasktab').datagrid('getSelected'); @@ -112,4 +164,5 @@ $.messager.alert('提示', '请选择一行数据!'); } } + \ No newline at end of file diff --git a/safesite/templates/checklistadd.html b/safesite/templates/checklistadd.html index 0a39052d..2a09256a 100644 --- a/safesite/templates/checklistadd.html +++ b/safesite/templates/checklistadd.html @@ -29,7 +29,6 @@ -
@@ -67,6 +66,7 @@ }) + function aaa(x) { if (x == "participant") { diff --git a/safesite/templates/checklistadd2.html b/safesite/templates/checklistadd2.html new file mode 100644 index 00000000..b9d9505a --- /dev/null +++ b/safesite/templates/checklistadd2.html @@ -0,0 +1,102 @@ +
+
+ 提交 + 取消 +
+
+
+ +
+ +
+
+ + + 选择 +
+
+ 同时执行 + 单人执行 +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ + +
+
+
+ \ No newline at end of file diff --git a/safesite/templates/trouble.html b/safesite/templates/trouble.html index da902f1e..ca6ce02e 100644 --- a/safesite/templates/trouble.html +++ b/safesite/templates/trouble.html @@ -1,12 +1,12 @@
- - - + 详细筛选
@@ -16,14 +16,14 @@ {% endif %} 处理 删除 - 对标 - + 对标 + 查看详情 {% if request|has_permission:'b_trouble_import' %} 导入待整改隐患 - {% endif %} + data-options="iconCls:'fa-upload',plain:true">导入待整改隐患 + {% endif %} {% if request|has_permission:'b_trouble_exportdoc' %} 导出Word {% endif %} @@ -33,47 +33,49 @@ {% endif %}
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- 查询 -
+ data-options="iconCls:'fa-search',resizable:true,modal:true,closed:true,border:false"> +
+
+
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ 查询 +
-
-
+
+
-

请按模板录入后导入

-

点击下载模板

-

录入完成后点击下方按钮上传文件

- + data-options="iconCls:'fa-upload',resizable:true,modal:true,closed:true,border:false"> +

请按模板录入后导入

+

点击下载模板

+

录入完成后点击下方按钮上传文件

+
diff --git a/safesite/urls.py b/safesite/urls.py index 6a856e6d..29e3320a 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -111,6 +111,7 @@ urlpatterns = [ path('html/addchecktask',views.addchecktask),#检查任务 path('html/checklist',views.checklist),#检查任务 path('html/addcheckrw',views.addcheckrw),#检查任务 + path('html/addcheckrw2',views.addcheckrw2),#专项检查任务 path('html/checkjob',views.checkjob),#检查任务 path('html/addcheckjob//',views.addcheckjob),#检查任务 path('html/detailjob//',views.detailjob),#任务详情 diff --git a/safesite/views.py b/safesite/views.py index 6a9f60c9..dcfc2eba 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -516,6 +516,8 @@ def checklist(req): return render(req,'checklist.html') def addcheckrw(req): return render(req,'checklistadd.html') +def addcheckrw2(req): + return render(req,'checklistadd2.html') def detailjob(req,id): return render(req,'checkjobdetail.html',{'id':id}) def updchecktable(req,id): @@ -2002,6 +2004,7 @@ def troublehandle(req): obj = a.order_by('-fxsj')[startnum:endnum].values('troubleid', 'fxr__userid', 'fxr__name', 'yhms', 'yhzt', 'fxsj', 'tbsj', 'yhlb__dickeyname', 'todouser__name', 'yhpg__dickeyname', 'yhnum', 'yhdj__dickeyname', 'shresult', 'zgqx', 'yhtp', 'zghtp', 'todouser__userid') return HttpResponse(transjson(total, obj), content_type="application/json") + elif a == 'listarea': userid = req.session['userid'] companyid = getcompany(userid) @@ -7765,7 +7768,7 @@ def checkprojects(req): total = a.count() startnum, endnum = fenye(req) - a = a[startnum:endnum].values('id','checktaskname','tasktype','checktype__checktitle','checkplace', 'checktime','createuser__name','createdate') + a = a[startnum:endnum].values('id','checktaskname','taskstate','tasktype','checktype__checktitle','checkplace', 'checktime','createuser__name','createdate') return HttpResponse(transjson(total, a), content_type="application/json") elif a == 'listall4': @@ -7889,6 +7892,9 @@ def checkprojects(req): elif a=='checktablist': projectlist = Checktable.objects.filter(usecomp__partid=companyid,deletemark=1).values('id', 'checktitle') return HttpResponse(transstr(projectlist,'id','checktitle'),content_type="application/json") + elif a=='checktablist2': + projectlist = Checktask.objects.filter(usecomp__partid=companyid,deletemark=1).values('id', 'checktaskname') + return HttpResponse(transstr(projectlist,'id','checktaskname'),content_type="application/json") elif a=='addchecklist': data = json.loads(req.body.decode('utf-8')) @@ -7957,6 +7963,70 @@ def checkprojects(req): } send_wechatmsgs.delay(postdict, s) return JsonResponse({"code": 1}) + + #专项检查 + elif a=='addchecklist2': + data = json.loads(req.body.decode('utf-8')) + + + starttime =datetime.strptime(str(data['starttime']), '%Y-%m-%d %H:%M') + endtime =datetime.strptime(str(data['endtime']), '%Y-%m-%d %H:%M') + obj = Checktask() + obj.checktaskname = data['checktaskname'] + obj.checktime=starttime + obj.checkplace=data['checkplace'] + obj.zxstate=data['zxstate'] + obj.tasktype=7#专项检查 + obj.checktype =Checktable.objects.get(id=data['checktabtitle']) + obj.createuser = User.objects.get(userid=userid) + obj.usecomp=Partment.objects.get(partid=companyid) + obj.userlist=data['participant'].split(',') + obj.save() + + list = data['participant'].split(',') + s=[] + for i in list: + x = User.objects.get(userid=i) + obj.checkname.add(x) + objs = Checkjob() + objs.checktask=obj + objs.checkname=x + objs.taskstate=4 + objs.starttime=starttime + + objs.endtime=endtime + + objs.usecomp=Partment.objects.get(partid=companyid) + + objs.save() + s.append(x.openid) + postdict = { + 'touser': '', + 'template_id': 'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0', + "miniprogram": {"appid": "wx5c39b569f01c27db"}, + 'data': { + 'first': { + 'value': '检查任务通知:' + }, + 'keyword1': { + 'value':'任务名:'+ obj.checktaskname + }, + 'keyword2': { + 'value': '执行时间:'+str(data['starttime']) + }, + 'keyword3': { + 'value': '发布人:'+obj.createuser.name + }, + 'remark': { + 'value': '请及时查看阅读' + } + } + } + send_wechatmsgs.delay(postdict, s) + return JsonResponse({"code": 1}) + + + #删除 elif a == 'del': id =req.GET.get('id') @@ -7993,6 +8063,17 @@ def checkprojects(req): return JsonResponse({"code":0}) + elif a == 'deljob': + id =req.GET.get('id') + a = Checkjob.objects.get(id=id) + if a.createuser==User.objects.get(userid=userid): + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + + else: + + return JsonResponse({"code":0}) elif a == 'checkjobdetail': id = req.GET.get('id') @@ -8024,4 +8105,40 @@ def checkprojects(req): x = a.values('checktaskname','zxstate','tasktype','checkplace','checktime','checktype__checktitle','checktype__checkcontent')[0] x['bcfr'] = uselist - return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json") \ No newline at end of file + return HttpResponse(json.dumps(x, cls=MyEncoder), content_type="application/json") + elif a=='checkstop': + id = req.GET.get('id') + a = Checktask.objects.get(id=id) + if a.createuser==User.objects.get(userid=userid): + a.taskstate=2 + a.save() + return JsonResponse({"code":1}) + + else: + + return JsonResponse({"code":0}) +#筛选 + elif a == 'listsearch': + a = Checkjob.objects.filter(usecomp=Partment.objects.get( + partid=companyid)).exclude(deletemark=0) + qssj = req.GET.get('qssj')#开始时间 + jssj = req.GET.get('jssj')#结束时间 + checktabtitle = req.GET.get('checktabtitle')#检查表名 + checktaskname = req.GET.get('checktaskname')#任务名称 + + if qssj: + a = a.filter(starttime__gte=qssj) + if jssj: + a = a.filter(starttime__lte=jssj) + if checktabtitle: + a = a.filter(checktask__checktype__id=checktabtitle) + if checktaskname: + a = a.filter(checktask__id=checktaskname) + 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','checkname__name', 'taskstate','checktask__checktime','createuser__username','createdate') + + return HttpResponse(transjson(total, a), content_type="application/json") +