diff --git a/safesite/edu/views.py b/safesite/edu/views.py
index 62d5bfd3..e4ba9299 100644
--- a/safesite/edu/views.py
+++ b/safesite/edu/views.py
@@ -143,9 +143,9 @@ def api(req):
obj.save()
return JsonResponse({"code":1,"url": a.url})
#观看详情
+
elif a=='detail':
- id =req.GET.get('eduid')
- a = EdulessonWatch.objects.filter(edulesson=id).values('id','user__name','submittime')
- total = a.count()
- return HttpResponse(transjson(total,a),content_type="application/json")
-
\ No newline at end of file
+ id=req.GET.get('zrid')
+ a = EdulessonWatch.objects.filter(edulesson=id).values('id','user__name','submittime')
+ total = a.count()
+ return HttpResponse(transjson(total,a),content_type="application/json")
\ No newline at end of file
diff --git a/safesite/migrations/0297_merge_20191216_1700.py b/safesite/migrations/0297_merge_20191216_1700.py
new file mode 100644
index 00000000..1b213678
--- /dev/null
+++ b/safesite/migrations/0297_merge_20191216_1700.py
@@ -0,0 +1,14 @@
+# Generated by Django 2.2.8 on 2019-12-16 17:00
+
+from django.db import migrations
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('safesite', '0296_auto_20191206_1559'),
+ ('safesite', '0296_auto_20191209_1029'),
+ ]
+
+ operations = [
+ ]
diff --git a/safesite/migrations/0298_auto_20191216_1700.py b/safesite/migrations/0298_auto_20191216_1700.py
new file mode 100644
index 00000000..cc26ea48
--- /dev/null
+++ b/safesite/migrations/0298_auto_20191216_1700.py
@@ -0,0 +1,37 @@
+# Generated by Django 2.2.8 on 2019-12-16 17:00
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('safesite', '0297_merge_20191216_1700'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='companyinfo',
+ name='liaison_fax',
+ ),
+ migrations.AddField(
+ model_name='operproce',
+ name='filepath',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='operproce',
+ name='operprocepath',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='resbility',
+ name='filepath',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ migrations.AddField(
+ model_name='resbility',
+ name='resbilitypath',
+ field=models.CharField(blank=True, max_length=200, null=True),
+ ),
+ ]
diff --git a/safesite/models.py b/safesite/models.py
index ef6b0db0..441d4328 100644
--- a/safesite/models.py
+++ b/safesite/models.py
@@ -1127,10 +1127,12 @@ class Resbility(models.Model):
jobs = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)#岗位
homeworktype=models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)#作业许可类型
department = models.ForeignKey(Partment,related_name='resbbm',on_delete=models.CASCADE,null=True,blank=True)#部门
+ resbilitypath = models.CharField(max_length=200,null=True,blank=True)#上传文件
createuser = models.ForeignKey(User,on_delete=models.CASCADE)#上传者
createdate = models.DateTimeField(default = timezone.now)#上传时间
usecomp = models.ForeignKey(Partment,related_name='resbgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司
deletemark = models.IntegerField(default=1)#是否删除
+ filepath=models.CharField(max_length=200,null=True,blank=True)
reads = models.IntegerField(default='0')
#操作规程
class Operproce(models.Model):
@@ -1139,10 +1141,12 @@ class Operproce(models.Model):
jobs = models.ForeignKey(Group,on_delete=models.CASCADE,null=True,blank=True)#岗位
homeworktype=models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)#作业许可类型
department = models.ForeignKey(Partment,related_name='optbm',on_delete=models.CASCADE,null=True,blank=True)#部门
+ operprocepath = models.CharField(max_length=200,null=True,blank=True)#上传文件
createuser = models.ForeignKey(User,on_delete=models.CASCADE)#上传者
createdate = models.DateTimeField(default = timezone.now)#上传时间
usecomp = models.ForeignKey(Partment,related_name='optgs',on_delete=models.CASCADE,null=True,blank=True)#所属公司
deletemark = models.IntegerField(default=1)#是否删除
+ filepath=models.CharField(max_length=200,null=True,blank=True)
reads = models.IntegerField(default='0')
#责任阅读表
class Readerblility(models.Model):
diff --git a/safesite/templates/bindwechat.html b/safesite/templates/bindwechat.html
index bfe7cbb1..3e146c1d 100644
--- a/safesite/templates/bindwechat.html
+++ b/safesite/templates/bindwechat.html
@@ -36,9 +36,11 @@
{% endif %}
\ No newline at end of file
diff --git a/safesite/templates/operproceadd.html b/safesite/templates/operproceadd.html
new file mode 100644
index 00000000..3e66c115
--- /dev/null
+++ b/safesite/templates/operproceadd.html
@@ -0,0 +1,373 @@
+
+
+
\ No newline at end of file
diff --git a/safesite/templates/operprocedetail.html b/safesite/templates/operprocedetail.html
new file mode 100644
index 00000000..2d2e0e7b
--- /dev/null
+++ b/safesite/templates/operprocedetail.html
@@ -0,0 +1,30 @@
+
+
+
+
\ No newline at end of file
diff --git a/safesite/templates/resbility.html b/safesite/templates/resbility.html
new file mode 100644
index 00000000..141d30e1
--- /dev/null
+++ b/safesite/templates/resbility.html
@@ -0,0 +1,113 @@
+
+
+
+
\ No newline at end of file
diff --git a/safesite/templates/resbilityadd.html b/safesite/templates/resbilityadd.html
new file mode 100644
index 00000000..38690f56
--- /dev/null
+++ b/safesite/templates/resbilityadd.html
@@ -0,0 +1,373 @@
+
+
+
\ No newline at end of file
diff --git a/safesite/templates/resbilitydetail.html b/safesite/templates/resbilitydetail.html
new file mode 100644
index 00000000..05dfb128
--- /dev/null
+++ b/safesite/templates/resbilitydetail.html
@@ -0,0 +1,30 @@
+
+
+
+
\ No newline at end of file
diff --git a/safesite/urls.py b/safesite/urls.py
index b6bae2cd..9fa5e944 100644
--- a/safesite/urls.py
+++ b/safesite/urls.py
@@ -91,6 +91,14 @@ urlpatterns = [
path('html/riskact/chose',views.riskactchose),
path('html/trainfig',views.trainfigure),
path('html/equipmentfig',views.equipmentfigure),
+
+ path('html/resbility',views.resbility),#责任制度
+ path('html/addresbility',views.addresbility),#责任制度
+ path('html/resbility/detail//',views.resbilitydetail),#责任制度观看详情
+
+ path('html/operproce',views.operproce),#操作规程
+ path('html/addoperproce',views.addoperproce),
+ path('html/operproce/detail//',views.operprocedetail),#责任制度观看详情
#html页面
@@ -173,8 +181,13 @@ urlpatterns = [
path('test',views.test),
path('.well-known/pki-validation/fileauth.txt',views.vewechat),#验证
path('miniprogram/boUR15vyNu.txt',views.minip_px),
- path('boUR15vyNu.txt',views.vewechat2),
+<<<<<<< HEAD
+ path('api/getresbilitydata',views.getresbilitydata),#责任制
+ path('api/getprodata',views.getprodata),#操作规程
+=======
+ path('boUR15vyNu.txt',views.minip_px),
+>>>>>>> a4a3b20c8aa023a59b49709971b32d9bc8d9bb43
#合作模块
path('edu/',include('safesite.edu.urls')),
diff --git a/safesite/views.py b/safesite/views.py
index 5d19dd57..aedefa18 100644
--- a/safesite/views.py
+++ b/safesite/views.py
@@ -3,7 +3,7 @@ from captcha.helpers import captcha_image_url
from captcha.models import CaptchaStore
from django.shortcuts import render, redirect, render_to_response
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
-from .models import User, Trouble, Dickey, Partment, Dicclass, Train, Drill, TroubleAccess, Group, Yjyc, Trainuser, Drilluser, Yjsetup, Menu, Observe, Observeto, Unsafes, Miss, Socertificate, Userprofile, Suggest, Notice, Noticeto, Operation, Operzyry, Fxcs, Operationspjd, Operspxq, Question, ExamPaper, ExamTest, ExamPaperDetail, ExamTestDetail, Questioncat, Safecert, Map, Area, Missto, Suggestflow, Equipment, Inspect, Risk, RiskAct, Risktask, Riskcheck, Report, RiskActTask, Riskcheck2
+from .models import User, Trouble, Dickey, Partment, Dicclass, Train, Drill, TroubleAccess, Group, Yjyc, Trainuser, Drilluser, Yjsetup, Menu, Observe, Observeto, Unsafes, Miss, Socertificate, Userprofile, Suggest, Notice, Noticeto, Operation, Operzyry, Fxcs, Operationspjd, Operspxq, Question, ExamPaper, ExamTest, ExamPaperDetail, ExamTestDetail, Questioncat, Safecert, Map, Area, Missto, Suggestflow, Equipment, Inspect, Risk, RiskAct, Risktask, Riskcheck, Report, RiskActTask, Riskcheck2,Resbility,Operproce,Readerblility,ReaderOperproce
from django.template import RequestContext
from django.views.decorators.csrf import csrf_exempt
from django.core import serializers
@@ -473,6 +473,22 @@ def trainfigure(req):
def equipmentfigure(req):
return render(req, 'equipmentfigure.html')
+def resbility(req):
+ return render(req, 'resbility.html')
+
+
+def addresbility(req):#责任制
+ return render(req,'resbilityadd.html')
+def resbilitydetail(req, id):
+ return render(req, 'resbilitydetail.html', {'id': id})
+
+def operproce(req):#操作规程
+ return render(req, 'operproce.html')
+def addoperproce(req):#责任制
+ return render(req,'operproceadd.html')
+
+def operprocedetail(req, id):
+ return render(req, 'operprocedetail.html', {'id': id})
def mainhtml(req):
# 计算一些数据
@@ -7087,3 +7103,177 @@ def equipmentfig(req):
'area__name').annotate(num=Count('area'))
return HttpResponse(json.dumps({'code': 1, 'data': {'eqmlist': list(eqmlist)}}), content_type='application/json')
+
+
+#责任制
+def getresbilitydata(req):
+ a = req.GET.get('a')
+ userid = req.session['userid']
+ companyid = getcompany(userid)
+ if a=='dic':#行为列表
+
+ dicclass=req.GET.get('dicclass')
+ a = Dickey.objects.filter(dicparent=dicclass,deletemark=1)
+ a = (a.filter(usecomps__contains=',1,')|a.filter(usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',')
+ a = a.values('dickeyid','dicparent__dicname','dickeyname','dicparent__dicid','detail').order_by('dickeyid')
+ return HttpResponse(transstr(a,'dickeyid','dickeyname'),content_type="application/json")
+ elif a=='job':#岗位列表
+ joblist = Group.objects.filter(usecomp__partid=companyid).exclude(grouptype=0).values('groupid', 'groupname', 'grouptype')
+ return HttpResponse(transstr(joblist,'groupid','groupname'),content_type="application/json")
+ elif a== 'tree':#部门列表
+ list_items = (Partment.objects.filter(partlink__contains=','+companyid+',') | Partment.objects.filter(partid=companyid)
+ ).annotate(id=F('partid'), parentId=F('parentid'), name=F('partname')).values('id', 'parentId', 'name')
+ return HttpResponse(json.dumps(list(list_items)), content_type="application/json")
+ elif a== 'upload':#文件上传
+ username = User.objects.get(userid=req.session['userid']).username
+ file_name = time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['mf'].name
+ user_upload_folder = os.path.join('media/zeren', username)
+ if not os.path.exists(user_upload_folder):
+ os.mkdir(user_upload_folder)
+ filepath = os.path.join(user_upload_folder, file_name)
+ filepath = filepath.replace('\\','/')
+ with open( filepath, 'wb') as f:
+ f.write(req.FILES['mf'].read())
+ return JsonResponse({"code":1,"filename":file_name,"filepath":filepath})
+ elif a=='add':#新增责任制
+ obj = Resbility()
+ data = json.loads(req.body.decode('utf-8'))
+ obj.title = data['title']
+ obj.jobs =Group.objects.get(groupid= data['group'])
+ obj.homeworktype= Dickey.objects.get(dickeyid=data['type'])
+ obj.department=Partment.objects.get(partid=data['jobpart'])
+ obj.resbilitypath=data['filepath']
+ obj.createuser=User.objects.get(userid=userid)
+ obj.createdate=data['publisdate']
+ obj.usecomp=Partment.objects.get(partid=companyid)
+ obj.filepath=data['filepath']
+ obj.save()
+ return JsonResponse({"code":1})
+ elif a=='listall':#责任列表
+ startnum,endnum=fenye(req)
+ #groups = Group.objects.filter(users__userid=userid)
+ # part= Partment.objects.filter(partid=User.objects.get(userid=userid).ubelongpart.partid)
+ #a = Resbility.objects.filter(usecomp=companyid,jobs__in=groups,department__in=part).order_by('id')
+ a = Resbility.objects.filter(usecomp=companyid,deletemark=1).order_by('id')
+ total = a.count()
+ startnum,endnum=fenye(req)
+ a = a[startnum:endnum].values('id','title','department__partname','jobs__groupname','resbilitypath','homeworktype__dickeyname','createdate','createuser__name','reads')
+ return HttpResponse(transjson(total,a),content_type="application/json")
+ #点击阅读
+ elif a=='readnum':
+ id =req.GET.get('id')
+ a = Resbility.objects.get(id=id)
+ a.reads=a.reads+1
+ a.save()
+ obj = Readerblility()
+ obj.readid=a
+ obj.num=''
+ obj.readeruser=User.objects.get(userid=userid)
+ obj.save()
+ return JsonResponse({"code":1,"url": a.resbilitypath})
+ #删除
+ elif a == 'del':
+ id =req.GET.get('id')
+ userid = req.session['userid']
+ companyid = getcompany(userid)#公司ID
+ a = Resbility.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=='detail':
+ id =req.GET.get('zrid')
+ a = Readerblility.objects.filter(readid=id).values('id','readeruser__name','readertime')
+ total = a.count()
+ return HttpResponse(transjson(total,a),content_type="application/json")
+
+
+#操作规程
+def getprodata(req):
+ a = req.GET.get('a')
+ userid = req.session['userid']
+ companyid = getcompany(userid)
+ if a=='dic':#行为列表
+
+ dicclass=req.GET.get('dicclass')
+ a = Dickey.objects.filter(dicparent=dicclass,deletemark=1)
+ a = (a.filter(usecomps__contains=',1,')|a.filter(usecomps__contains=','+companyid+',')).exclude(nousecomps__contains=','+companyid+',')
+ a = a.values('dickeyid','dicparent__dicname','dickeyname','dicparent__dicid','detail').order_by('dickeyid')
+ return HttpResponse(transstr(a,'dickeyid','dickeyname'),content_type="application/json")
+ elif a=='job':#岗位列表
+ joblist = Group.objects.filter(usecomp__partid=companyid).exclude(grouptype=0).values('groupid', 'groupname', 'grouptype')
+ return HttpResponse(transstr(joblist,'groupid','groupname'),content_type="application/json")
+ elif a== 'tree':#部门列表
+ list_items = (Partment.objects.filter(partlink__contains=','+companyid+',') | Partment.objects.filter(partid=companyid)
+ ).annotate(id=F('partid'), parentId=F('parentid'), name=F('partname')).values('id', 'parentId', 'name')
+ return HttpResponse(json.dumps(list(list_items)), content_type="application/json")
+ elif a== 'upload':#文件上传
+ username = User.objects.get(userid=req.session['userid']).username
+ file_name = time.strftime('%Y%m%d%H%M%S')+ '_' + req.FILES['mf'].name
+ user_upload_folder = os.path.join('media/caozuo', username)
+ if not os.path.exists(user_upload_folder):
+ os.mkdir(user_upload_folder)
+ filepath = os.path.join(user_upload_folder, file_name)
+ filepath = filepath.replace('\\','/')
+ with open( filepath, 'wb') as f:
+ f.write(req.FILES['mf'].read())
+ return JsonResponse({"code":1,"filename":file_name,"filepath":filepath})
+ elif a=='add':#新增责任制
+ obj = Operproce()
+ data = json.loads(req.body.decode('utf-8'))
+ obj.title = data['title']
+ obj.jobs =Group.objects.get(groupid= data['group'])
+ obj.homeworktype= Dickey.objects.get(dickeyid=data['type'])
+ obj.department=Partment.objects.get(partid=data['jobpart'])
+ obj.operprocepath=data['filepath']
+ obj.createuser=User.objects.get(userid=userid)
+ obj.createdate=data['publisdate']
+ obj.usecomp=Partment.objects.get(partid=companyid)
+ obj.filepath=data['filepath']
+ obj.save()
+ return JsonResponse({"code":1})
+ elif a=='listall':#责任列表
+ startnum,endnum=fenye(req)
+ #groups = Group.objects.filter(users__userid=userid)
+ # part= Partment.objects.filter(partid=User.objects.get(userid=userid).ubelongpart.partid)
+ #a = Resbility.objects.filter(usecomp=companyid,jobs__in=groups,department__in=part).order_by('id')
+ a = Operproce.objects.filter(usecomp=companyid,deletemark=1).order_by('id')
+ total = a.count()
+ startnum,endnum=fenye(req)
+ a = a[startnum:endnum].values('id','title','department__partname','jobs__groupname','operprocepath','homeworktype__dickeyname','createdate','createuser__name','reads')
+ return HttpResponse(transjson(total,a),content_type="application/json")
+ #点击阅读
+ elif a=='readnum':
+ id =req.GET.get('id')
+ a = Operproce.objects.get(id=id)
+ a.reads=a.reads+1
+ a.save()
+ obj = ReaderOperproce()
+ obj.readid=a
+ obj.num=''
+ obj.readeruser=User.objects.get(userid=userid)
+ obj.save()
+ return JsonResponse({"code":1,"url": a.operprocepath})
+ #删除
+ elif a == 'del':
+ id =req.GET.get('id')
+ userid = req.session['userid']
+ companyid = getcompany(userid)#公司ID
+ a = Operproce.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=='detail':
+ id =req.GET.get('zrid')
+ a = ReaderOperproce.objects.filter(readid=id).values('id','readeruser__name','readertime')
+ total = a.count()
+ return HttpResponse(transjson(total,a),content_type="application/json")