diff --git a/safesite/admin.py b/safesite/admin.py index a97c8c56..afd620c0 100644 --- a/safesite/admin.py +++ b/safesite/admin.py @@ -10,7 +10,7 @@ admin.site.register(models.MySchedule) admin.site.register(models.GridTaskSet) @admin.register(models.Menu) class Menuadmin(admin.ModelAdmin): - list_display = ('menuname','menucode','type','url') + list_display = ('menuname','menucode','type','url', 'sortnum') list_display_links = ('menuname',) search_fields = ('menuname', 'menucode',) def formfield_for_foreignkey(self, db_field, request, **kwargs): diff --git a/safesite/models.py b/safesite/models.py index c2ae874c..0ca4b54a 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -6,6 +6,8 @@ from django.contrib.postgres.fields import JSONField, ArrayField import jwt import datetime # Create your models here. +from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule + class Menu(models.Model): # 菜单 @@ -57,7 +59,14 @@ class Partment(models.Model): def __str__(self): return self.partname - +class MySchedule(models.Model): + name = models.CharField('名称', max_length=200) + typeset = models.CharField('类型', default=1,max_length=10) + interval = models.ForeignKey(IntervalSchedule, null=True, blank=True, on_delete=models.SET_NULL) + crontab = models.ForeignKey(CrontabSchedule, null=True, blank=True, on_delete=models.SET_NULL) + usecomp = models.ForeignKey( + Partment, on_delete=models.CASCADE) + class Map(models.Model): # type_choices = ( # (1, '工厂'), @@ -259,7 +268,6 @@ class TroubleAccess(models.Model): # 隐患流程表 yhzt = models.IntegerField(default='1') accesssj = models.DateTimeField(default=timezone.now) - class Drill(models.Model): # 应急演练 drillid = models.AutoField(primary_key=True) drillnum = models.CharField(max_length=100, default='1') @@ -1066,30 +1074,37 @@ class EdulessonWatch(models.Model): # 在线视频观看情况表 user = models.ForeignKey(User, on_delete=models.CASCADE) submittime = models.DateTimeField(default=timezone.now) -from django_celery_beat.models import PeriodicTask, IntervalSchedule, CrontabSchedule -class MySchedule(models.Model): - name = models.CharField('名称', max_length=200) - typeset = models.CharField('类型', default=1,max_length=10) - interval = models.ForeignKey(IntervalSchedule, null=True, blank=True, on_delete=models.SET_NULL) - crontab = models.ForeignKey(CrontabSchedule, null=True, blank=True, on_delete=models.SET_NULL) - usecomp = models.ForeignKey( - Partment, on_delete=models.CASCADE) class GridTaskSet(models.Model): """ 网格化管理任务制定 + 隐患跟踪任务/风险点排查任务 """ - riskact = models.ForeignKey(RiskAct, on_delete=models.CASCADE, related_name='gridtaskset_riskact') + riskact = models.ForeignKey(RiskAct, on_delete=models.CASCADE, related_name='gridtaskset_riskact', null=True, blank=True) + trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE, related_name='gridtaskset_trouble', null=True, blank=True) gridlevel = models.ForeignKey(Dickey, on_delete=models.CASCADE, verbose_name='网格化层级') user = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='执行人') - note = models.TextField('检查备注', null=True) + note = models.TextField('备注', null=True) myschedule = models.ForeignKey(MySchedule,on_delete=models.SET_NULL, null=True, blank=True) expire = models.IntegerField('执行有效期', null=True, blank=True) count = models.IntegerField('派发次数', default=0) last_run_at = models.DateTimeField('最近派发时间', null=True, blank=True) periodictask = models.ForeignKey(PeriodicTask, on_delete=models.CASCADE, related_name='gridtaskset_periodictask') +class TroubleFollowTask(models.Model): + """ + 隐患跟踪任务 + """ + trouble = models.ForeignKey(Trouble, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="跟踪人") + taskadd = models.DateTimeField('任务创建时间', null=True, blank=True) + taskdo = models.DateTimeField('任务执行时间', null=True, blank=True) + taskexpire = models.DateTimeField('任务过期时间', null=True, blank=True) + desc = models.TextField('跟踪描述', null=True, blank=True) + tasknote = models.TextField('任务执行说明', null=True, blank=True) + taskset = models.ForeignKey(GridTaskSet, null=True, blank=True, verbose_name='由哪个设置派发', on_delete=models.SET_NULL) + class RiskActTask(models.Model): # 风险点排查执行记录 id = models.AutoField(primary_key=True) riskact = models.ForeignKey( @@ -1127,8 +1142,7 @@ class Risktask(models.Model): # 风险排查任务清单 class Riskcheck2(models.Model): # 风险排查记录2 id = models.AutoField(primary_key=True) - riskacttask = models.ForeignKey( - RiskActTask, on_delete=models.CASCADE, null=True, blank=True) + riskacttask = models.ForeignKey(RiskActTask, on_delete=models.CASCADE, null=True, blank=True) risk = models.ForeignKey( Risk, on_delete=models.CASCADE, null=True, blank=True) dotime = models.DateTimeField(null=True, blank=True) diff --git a/safesite/templates/troublefollow.html b/safesite/templates/troublefollow.html new file mode 100644 index 00000000..09c1fede --- /dev/null +++ b/safesite/templates/troublefollow.html @@ -0,0 +1,435 @@ +
+
+ + + 详细筛选 +
+
+ {% load myfilter %} + {% if request|has_permission:'b_trouble_add' %} + 新增 + {% endif %} + 处理 + 删除 + 对标 + + 查看详情 + + {% if request|has_permission:'b_trouble_import' %} + 导入待整改隐患 + {% endif %} + {% if request|has_permission:'b_trouble_exportdoc' %} + 导出Word + {% endif %} + + {% if request|has_permission:'b_trouble_exportxls' %} + 导出Excel + {% endif %} +
+
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+
+
+
+ 查询 + 重置 +
+ +
+
+
+
+
+

请按模板录入后导入

+

点击下载模板

+

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

+ +
+ + + + + + \ No newline at end of file diff --git a/safesite/urls.py b/safesite/urls.py index a4b87760..e7e2fe2d 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -135,6 +135,7 @@ urlpatterns = [ path('html/scheduleset/add/', views.schedulesetadd), path('html/scheduleset/edit//',views.schedulesetedit), + path('html/troublefollow/',views.troublefollow), path('html/trainplan/', views.trainplanhtml), path('html/trainplan/add/', views.trainplanaddhtml), path('html/trainplan/edit//', views.trainplanedithtml), diff --git a/safesite/views.py b/safesite/views.py index 142c7804..69bd068c 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -171,6 +171,8 @@ class EquipmentCheckFormView(TemplateView): def riskas(req): return render(req, 'riskas.html') +def troublefollow(req): + return render(req, 'troublefollow.html') def reportedit(req): return render(req, 'reportedit.html', {'year': req.GET.get('year'), 'month': req.GET.get('month'), 'part': req.GET.get('part')}) @@ -7450,6 +7452,8 @@ def apigridtaskset(req): objs = GridTaskSet.objects.filter(riskact__usecomp__partid=companyid) if req.GET.get('riskact', None): objs = objs.filter(riskact__id=req.GET.get('riskact')) + if req.GET.get('trouble', None): + objs = objs.filter(trouble__id=req.GET.get('trouble')) total = objs.count() startnum, endnum = fenye(req) objs = objs.order_by('-pk')[startnum:endnum].values('id', 'gridlevel__dickeyname', 'user__name',