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