diff --git a/safesite/migrations/0378_offence.py b/safesite/migrations/0378_offence.py new file mode 100644 index 00000000..2bb77be7 --- /dev/null +++ b/safesite/migrations/0378_offence.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.8 on 2021-05-09 15:19 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0377_troublefollowtask_gridlevel'), + ] + + operations = [ + migrations.CreateModel( + name='Offence', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('type', models.CharField(default='公司员工', max_length=200, verbose_name='人员类型')), + ('dept', models.CharField(default='', max_length=200, verbose_name='车间')), + ('post', models.CharField(default='', max_length=200, verbose_name='岗位')), + ('area', models.CharField(default='', max_length=200, verbose_name='具体区域')), + ('parter', models.CharField(default='', max_length=200, verbose_name='当事人')), + ('description', models.TextField(blank=True, null=True, verbose_name='描述')), + ('imgs', models.TextField(blank=True, null=True, verbose_name='图片地址')), + ('createtime', models.DateTimeField(auto_now_add=True)), + ('modifytime', models.DateTimeField(auto_now=True)), + ('reporter', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User', verbose_name='举报人')), + ('usecomp', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='所属公司')), + ], + ), + ] diff --git a/safesite/migrations/0379_auto_20210509_1916.py b/safesite/migrations/0379_auto_20210509_1916.py new file mode 100644 index 00000000..55196670 --- /dev/null +++ b/safesite/migrations/0379_auto_20210509_1916.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.8 on 2021-05-09 19:16 + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0378_offence'), + ] + + operations = [ + migrations.AddField( + model_name='offence', + name='happentime', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='发生时间'), + preserve_default=False, + ), + migrations.AddField( + model_name='offence', + name='place', + field=models.CharField(default='', max_length=200, verbose_name='具体地点'), + ), + migrations.AlterField( + model_name='offence', + name='area', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='safesite.Area', verbose_name='区域'), + ), + ] diff --git a/safesite/models.py b/safesite/models.py index 7243c35e..698b156c 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -392,12 +392,17 @@ class Offence(models.Model): type = models.CharField(verbose_name="人员类型", default="公司员工", max_length=200) dept = models.CharField(verbose_name="车间", default="", max_length=200) post = models.CharField(verbose_name="岗位", default="", max_length=200) - area = models.CharField(verbose_name="具体区域", default="", max_length=200) + area = models.ForeignKey(Area, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="区域") + place = models.CharField(verbose_name="具体地点", default="", max_length=200) parter = models.CharField(verbose_name="当事人", default="", max_length=200) description = models.TextField("描述", null=True, blank=True) imgs = models.TextField("图片地址", null=True, blank=True) + happentime = models.DateTimeField('发生时间') reporter = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="举报人") - + + createtime = models.DateTimeField(auto_now_add=True) + modifytime = models.DateTimeField(auto_now=True) + usecomp = models.ForeignKey(Partment, on_delete=models.CASCADE, verbose_name='所属公司') class Group(models.Model): # 用户组,岗位 diff --git a/safesite/templates/offence.html b/safesite/templates/offence.html index 4df4d5d6..d70d219d 100644 --- a/safesite/templates/offence.html +++ b/safesite/templates/offence.html @@ -21,24 +21,25 @@ {% if request|has_permission:'b_inspect_del' %} 删除 {% endif %} --> + 删除 查看详情 + + \ No newline at end of file diff --git a/safesite/urls.py b/safesite/urls.py index 89fa2ec2..fbc85eca 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -1,4 +1,4 @@ -from safesite.views import apitrainplan, inspectitem, trainplanchosehtml, trainplanhtml +from safesite.views import apioffence, apitrainplan, inspectitem, trainplanchosehtml, trainplanhtml from django.urls import path,include from . import views, viewsdrf, viewsn from . import datashowview @@ -145,6 +145,8 @@ urlpatterns = [ path('html/personalp/', views.personalphtml), + path('html/offence/', views.offence), + path('html/offence/detail//', views.offencedetail), path('getuser', views.getuser), path('addyh', views.addyh), @@ -220,8 +222,7 @@ urlpatterns = [ path('api/trainplan/', views.apitrainplan), path('api/troublefollowtask/', views.apitroublefollowtask), - - + path('api/offence/', views.apioffence), path('api/countsafe/', viewsn.apicountsafe), # 安全数据统计 diff --git a/safesite/views.py b/safesite/views.py index 16667dc6..bace21c4 100644 --- a/safesite/views.py +++ b/safesite/views.py @@ -160,6 +160,12 @@ def upfile(req): # html页面 +def offence(req): + return render(req, 'offence.html') + +def offencedetail(req, id): + return render(req, 'offencedetail.html', {'id':id}) + def personalphtml(req): user = User.objects.get(userid=req.session['userid']) return render(req, 'personalp.html', locals()) @@ -8883,3 +8889,45 @@ def checkprojects(req): return HttpResponse(transjson(total, a), content_type="application/json") + + +@apicheck_login +def apioffence(req): + a = req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + if a == 'listall': + objs = Offence.objects.filter(usecomp__partid=companyid) + if req.GET.get('qssj', None): + objs = objs.filter(happentime__gte=req.GET.get('qssj')) + if req.GET.get('jssj', None): + objs = objs.filter(happentime__lte=req.GET.get('jssj')) + total = objs.count() + startnum, endnum = fenye(req) + objs = objs.order_by('-createtime')[startnum:endnum].values('id', 'type', 'dept', 'area', 'parter', 'reporter', 'reporter__name', 'createtime', 'area__name', 'happentime', 'description') + return HttpResponse(transjson(total, objs), content_type="application/json") + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + user = User.objects.get(userid=userid) + if data.get('area', None): + data['area'] = Area.objects.get(id=data['area']) + data['reporter'] = user + data['usecomp'] = user.usecomp + if 'imgs' in data and data['imgs']: + data['imgs'] = '?'.join(data['imgs']) + instance = Offence(**data) + instance.save() + return JsonResponse({"code":1}) + elif a == 'detail': + id = req.GET.get('id') + obj = Offence.objects.filter(id=id) + res = obj.values('id', 'type', 'dept', 'area', 'parter', 'reporter', 'reporter__name', 'createtime', 'area__name', 'happentime', 'description', 'imgs', 'post', 'place')[0] + if res['imgs']: + res['imgs'] = res['imgs'].split('?') + return HttpResponse(json.dumps(res, cls=MyEncoder), content_type="application/json") + elif a == 'del': + data = json.loads(req.body.decode('utf-8')) + obj = Offence.objects.get(id=data['id']) + obj.delete() + return JsonResponse({"code":1}) + \ No newline at end of file