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")