From 05b1bfc14e5c55a21a08728886035b98aa8f5bcd Mon Sep 17 00:00:00 2001 From: shilixia <2309368887@qq.com> Date: Wed, 18 Sep 2019 15:24:15 +0800 Subject: [PATCH] falv --- .../migrations/0265_auto_20190912_1117.py | 83 ++++ .../migrations/0266_auto_20190912_1151.py | 23 ++ .../migrations/0267_auto_20190917_1543.py | 23 ++ safesite/models.py | 36 +- safesite/rlt/__init__.py | 0 safesite/rlt/urls.py | 13 + safesite/rlt/views.py | 177 +++++++++ .../static/safesite/easyui/themes/icon.css | 7 +- .../easyui/themes/icons/regulationstype.png | Bin 0 -> 440 bytes safesite/templates/lawsadd.html | 340 +++++++++++++++++ safesite/templates/lawsedit.html | 357 ++++++++++++++++++ safesite/templates/lawsindex.html | 221 +++++++++++ safesite/templates/lawstypeadd.html | 54 +++ safesite/templates/lawstypeedit.html | 61 +++ safesite/urls.py | 1 + 15 files changed, 1393 insertions(+), 3 deletions(-) create mode 100644 safesite/migrations/0265_auto_20190912_1117.py create mode 100644 safesite/migrations/0266_auto_20190912_1151.py create mode 100644 safesite/migrations/0267_auto_20190917_1543.py create mode 100644 safesite/rlt/__init__.py create mode 100644 safesite/rlt/urls.py create mode 100644 safesite/rlt/views.py create mode 100644 safesite/static/safesite/easyui/themes/icons/regulationstype.png create mode 100644 safesite/templates/lawsadd.html create mode 100644 safesite/templates/lawsedit.html create mode 100644 safesite/templates/lawsindex.html create mode 100644 safesite/templates/lawstypeadd.html create mode 100644 safesite/templates/lawstypeedit.html diff --git a/safesite/migrations/0265_auto_20190912_1117.py b/safesite/migrations/0265_auto_20190912_1117.py new file mode 100644 index 00000000..df64522b --- /dev/null +++ b/safesite/migrations/0265_auto_20190912_1117.py @@ -0,0 +1,83 @@ +# Generated by Django 2.1.5 on 2019-09-12 11:17 + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0264_auto_20190909_0916'), + ] + + operations = [ + migrations.CreateModel( + name='CompanyInfo', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=64, verbose_name='公司名称')), + ('nature', models.SmallIntegerField(choices=[(0, '国企'), (1, '私企')], default=0, verbose_name='企业性质')), + ('address', models.CharField(max_length=128, verbose_name='公司地址')), + ('fixed_assets', models.IntegerField(blank=True, null=True, verbose_name='固定资产')), + ('website', models.CharField(blank=True, max_length=64, null=True, verbose_name='公司网址')), + ('peoplenum', models.IntegerField(blank=True, null=True, verbose_name='公司人数')), + ('legalperson', models.CharField(blank=True, max_length=24, null=True, verbose_name='法人代表')), + ('legalperson_phone', models.CharField(blank=True, max_length=24, null=True, verbose_name='法人电话')), + ('liaison', models.CharField(max_length=24, verbose_name='联系人')), + ('liaison_phone', models.CharField(max_length=24, verbose_name='联系人电话')), + ('liaison_fax', models.CharField(blank=True, max_length=10, null=True, verbose_name='联系人传真')), + ('introduce', models.TextField(blank=True, null=True, verbose_name='公司概况')), + ('createtime', models.DateTimeField(auto_now_add=True)), + ('modifytime', models.DateTimeField(auto_now=True)), + ('partment', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment', verbose_name='公司ID')), + ], + ), + migrations.CreateModel( + name='FileManage', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('maragename', models.CharField(max_length=50)), + ('maragepath', models.CharField(blank=True, max_length=200, null=True)), + ('readernum', models.IntegerField(default=0)), + ('publisdate', models.DateTimeField(default=django.utils.timezone.now)), + ('versionnum', models.CharField(max_length=50)), + ('maragestate', models.IntegerField(default=1)), + ('accessorytype', models.CharField(max_length=50)), + ('actualizedata', models.DateTimeField(default=django.utils.timezone.now)), + ('createdate', models.DateTimeField(default=django.utils.timezone.now)), + ('createuser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User')), + ], + ), + migrations.CreateModel( + name='FileReader', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('kindnum', models.CharField(max_length=50)), + ('readertime', models.DateTimeField(default=django.utils.timezone.now)), + ('readeruser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User')), + ], + ), + migrations.CreateModel( + name='Regulations', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('typename', models.CharField(max_length=50)), + ('deletemark', models.IntegerField(default=1)), + ('creattime', models.DateTimeField(default=django.utils.timezone.now)), + ('createuser', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='rgs', to='safesite.User')), + ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Regulations')), + ('usecomp', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment')), + ], + ), + migrations.AddField( + model_name='filemanage', + name='maragetype', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Regulations'), + ), + migrations.AddField( + model_name='filemanage', + name='usecomp', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment'), + ), + ] diff --git a/safesite/migrations/0266_auto_20190912_1151.py b/safesite/migrations/0266_auto_20190912_1151.py new file mode 100644 index 00000000..8254f38f --- /dev/null +++ b/safesite/migrations/0266_auto_20190912_1151.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.5 on 2019-09-12 11:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0265_auto_20190912_1117'), + ] + + operations = [ + migrations.AddField( + model_name='filemanage', + name='downnum', + field=models.IntegerField(default=0), + ), + migrations.AddField( + model_name='regulations', + name='sortorder', + field=models.IntegerField(default=0), + ), + ] diff --git a/safesite/migrations/0267_auto_20190917_1543.py b/safesite/migrations/0267_auto_20190917_1543.py new file mode 100644 index 00000000..bb47541a --- /dev/null +++ b/safesite/migrations/0267_auto_20190917_1543.py @@ -0,0 +1,23 @@ +# Generated by Django 2.1.5 on 2019-09-17 15:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('safesite', '0266_auto_20190912_1151'), + ] + + operations = [ + migrations.AddField( + model_name='filemanage', + name='deletemark', + field=models.IntegerField(default=1), + ), + migrations.AddField( + model_name='filereader', + name='deletemark', + field=models.IntegerField(default=1), + ), + ] diff --git a/safesite/models.py b/safesite/models.py index 5afec4ce..fbd42222 100644 --- a/safesite/models.py +++ b/safesite/models.py @@ -831,4 +831,38 @@ class CompanyInfo(models.Model): liaison_fax = models.CharField(max_length=10, null=True, blank=True, verbose_name='联系人传真') introduce = models.TextField( null=True, blank=True, verbose_name='公司概况') createtime = models.DateTimeField(auto_now_add=True) - modifytime = models.DateTimeField(auto_now=True) \ No newline at end of file + modifytime = models.DateTimeField(auto_now=True) +#法律法规分类表 +class Regulations(models.Model): + id = models.AutoField(primary_key=True) + typename = models.CharField(max_length=50) + parent = models.ForeignKey('self',blank=True,null=True,on_delete=models.CASCADE) + sortorder = models.IntegerField(default=0) + deletemark = models.IntegerField(default=1) + creattime = models.DateTimeField(default = timezone.now) + createuser = models.ForeignKey(User,related_name='rgs',on_delete=models.CASCADE,null=True,blank=True) + usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) +#法律法规阅读人员管理表 +class FileReader(models.Model): + id = models.AutoField(primary_key=True) + kindnum = models.CharField(max_length=50) + readeruser = models.ForeignKey(User,on_delete=models.CASCADE) + readertime = models.DateTimeField(default = timezone.now) + deletemark = models.IntegerField(default=1) +#法律法规表 +class FileManage(models.Model): + id = models.AutoField(primary_key=True) + maragename = models.CharField(max_length=50) + maragepath = models.CharField(max_length=200,null=True,blank=True) + readernum = models.IntegerField(default=0) + maragetype = models.ForeignKey(Regulations,on_delete=models.CASCADE,null=True,blank=True) + publisdate = models.DateTimeField(default = timezone.now) + versionnum = models.CharField(max_length=50) + maragestate = models.IntegerField(default=1) #0是现行,1是废止,2修改,3修订 + accessorytype = models.CharField(max_length=50) + actualizedata = models.DateTimeField(default = timezone.now) + createdate = models.DateTimeField(default = timezone.now) + createuser = models.ForeignKey(User,on_delete=models.CASCADE) + usecomp= models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) + downnum = models.IntegerField(default=0) + deletemark = models.IntegerField(default=1) diff --git a/safesite/rlt/__init__.py b/safesite/rlt/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/safesite/rlt/urls.py b/safesite/rlt/urls.py new file mode 100644 index 00000000..e731af9e --- /dev/null +++ b/safesite/rlt/urls.py @@ -0,0 +1,13 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('', views.index), + path('html/laws/add', views.lawsadd), + path('api/lawstype',views.lawstype), + path('api/upload',views.upload), + path('html/lawstype/edit//',views.lawstypeedit), + path('html/laws/addlaws',views.addlaws), + path('html/laws/edit//',views.lawsdit) + +] \ No newline at end of file diff --git a/safesite/rlt/views.py b/safesite/rlt/views.py new file mode 100644 index 00000000..dedc4aeb --- /dev/null +++ b/safesite/rlt/views.py @@ -0,0 +1,177 @@ +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,Edulesson,EdulessonWatch,FileManage,FileReader,Regulations +from django.template import RequestContext +from django.views.decorators.csrf import csrf_exempt +from django.core import serializers +import json +from uuid import UUID +import os +import time +from datetime import datetime,date,timedelta +from django.db.models import F,Count,Sum +import requests +from ..tasks import send_wechatmsgs,send_wechatmsg,yjjs,gettime,yjjs_px,yjjs_yl,updateTzzs,updateAqzs +from ..export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2 +from ..daoru import drusers,drequipments,drrisks +from django.forms.models import model_to_dict +from ..safespider import getTzzs,getAqzs +#from duibiao import calsim +from django.db.models import Q +from django.core.serializers.json import DjangoJSONEncoder +from io import StringIO +import operator +import jwt +from ..views import getcompany,fenye,transjson +#法律法规 +def index(req): + return render(req,'lawsindex.html') +#添加法律法规分类 +def lawsadd(req): + return render(req,'lawstypeadd.html') +#添加法律法规 +def addlaws(req): + return render(req,'lawsadd.html') +def lawsdit(req,id): + return render(req,'lawsedit.html',{'id':id}) +#选中一行编辑法律法规分类 +def lawstypeedit(req,id): + return render(req,'lawstypeedit.html',{'id':id}) +#上传文件,返回地址和名称 +def upload(req): + 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/laws', 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}) +def lawstype(req): + a=req.GET.get('a') + userid = req.session['userid'] + companyid = getcompany(userid) + #index展示数据 + if a=='listall': + x = FileManage.objects.filter(deletemark=1) + startnum,endnum=fenye(req) + a = x.filter(usecomp__partid__in= [1,Partment.objects.get(partid=companyid).partid],deletemark=1 ).order_by('id')#无deletemark + if req.GET.get('typeID'): + typeID = req.GET.get('typeID') + a = x.filter(maragetype=Regulations.objects.get(id=typeID)) + + total = a.count() + startnum,endnum=fenye(req) + a = a[startnum:endnum].values('id','maragename','readernum','maragetype__typename','publisdate','versionnum','maragestate','actualizedata','maragepath') + return HttpResponse(transjson(total,a),content_type="application/json") + #index展示的tree + elif a=='tree1': + list_items = (Regulations.objects.filter(usecomp__partid=1,deletemark=1)).annotate(parentId=F('parent__id'),name=F('typename')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + #编辑的时候展示的tree + elif a == 'tree2': + list_items = (Regulations.objects.filter(usecomp__partid=companyid,deletemark=1)).annotate(parentId=F('parent__id'),name=F('typename')).values('id','parentId','name') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'tree': + list_items = (Regulations.objects.filter(usecomp__partid=1,deletemark=1)|Regulations.objects.filter(usecomp__partid=companyid,deletemark=1)).annotate(parentId=F('parent__id')).values('id','parentId','typename') + return HttpResponse(json.dumps(list(list_items)),content_type="application/json") + elif a == 'add': + data = json.loads(req.body.decode('utf-8')) + obj = Regulations() + name = data['name'] + obj.typename = name + if 'parent' in data: + if data['parent']: + parent = data['parent'] + parentobj = Regulations.objects.get(id=parent) + obj.parent = parentobj + obj.usecomp = Partment.objects.get(partid=companyid) + obj.createuser=User.objects.get(userid=userid) + obj.save() + return JsonResponse({"code":1}) + #编辑法律法规分类(修改) + elif a == 'edit': + data = json.loads(req.body.decode('utf-8')) + id = data['id'] + a = Regulations.objects.get(id=id) + a.typename = data['name'] + if 'parent' in data: + if data['parent']: + parent = Regulations.objects.get(id=data['parent']) + a.parent = parent + + a.save() + return JsonResponse({"code":1}) + + elif a == 'detail': + id = req.GET.get('id') + a = Regulations.objects.filter(id=id).values('id','typename','parent__id')[0] + return JsonResponse(a) + elif a == 'addlaws': + obj = FileManage() + data = json.loads(req.body.decode('utf-8')) + obj.maragename = data['maragename'] + obj.versionnum = data['versionnum'] + obj.maragetype= Regulations.objects.get(id=data['maragetype']) + obj.publisdate=data['publisdate'] + obj.maragestate=data['maragestate'] + obj.actualizedata=data['actualizedata'] + obj.maragepath=data['url'] + obj.usecomp=Partment.objects.get(partid=companyid) + obj.createuser=User.objects.get(userid=userid) + + obj.save() + return JsonResponse({"code":1}) + #删除分类 + elif a == 'del': + id = req.GET.get('id') + user = User.objects.get(userid=userid) + a = Regulations.objects.get(id=id) + if user.issuper==1 or a.usecomp.partid == companyid: + Regulations.objects.filter(id = id).update(deletemark=0) + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) + return JsonResponse({"code":1}) + #删除数据,判断是否是自己建的 + elif a == 'canedit': + id = req.GET.get('id') + a = Regulations.objects.get(id=id) + if a.usecomp == companyid or int(companyid)==1: + return JsonResponse({'code':1}) + else: + return JsonResponse({"code":0}) + #编辑法律法规,显数据示 + elif a == 'detaillaws': + id = req.GET.get('id') + a = FileManage.objects.filter(id=id).values('maragename','readernum','maragetype','publisdate','versionnum','maragestate','actualizedata','maragepath') + return JsonResponse(a[0]) + #修改法律法规 + elif a == 'editlaws': + data = json.loads(req.body.decode('utf-8')) + obj = FileManage.objects.get(id=data['id']) + obj.maragename = data['maragename'] + obj.maragetype = Regulations.objects.get(id=data['maragetype']) + obj.publisdate=data['publisdate'] + obj.maragestate=data['maragestate'] + obj.actualizedata=data['actualizedata'] + obj.maragepath=data['url'] + obj.usecomp=Partment.objects.get(partid=companyid) + obj.createuser=User.objects.get(userid=userid) + + obj.save() + + return JsonResponse({"code":1}) + #删除法律法规 + elif a == 'dellaws': + id =req.GET.get('id') + userid = req.session['userid'] + a = FileManage.objects.get(id=id) + if User.objects.get(userid = userid).issuper == 1: + a.deletemark=0 + a.save() + return JsonResponse({"code":1}) + else: + return JsonResponse({"code":0}) \ No newline at end of file diff --git a/safesite/static/safesite/easyui/themes/icon.css b/safesite/static/safesite/easyui/themes/icon.css index ce57790d..1cf78d04 100644 --- a/safesite/static/safesite/easyui/themes/icon.css +++ b/safesite/static/safesite/easyui/themes/icon.css @@ -148,8 +148,11 @@ .icon-edu{ background:url('icons/edu.png') no-repeat center center; } -.icon-companyinfo{ - background:url('icons/companyinfo.png') no-repeat center center; +.icon-regulationstype { + background: url('icons/regulationstype.png') no-repeat center center; +} +.icon-companyinfo { + background: url('icons/companyinfo.png') no-repeat center center; } .icon-riskactcheck{ background:url('icons/riskactcheck.png') no-repeat center center; diff --git a/safesite/static/safesite/easyui/themes/icons/regulationstype.png b/safesite/static/safesite/easyui/themes/icons/regulationstype.png new file mode 100644 index 0000000000000000000000000000000000000000..27d4b6680074dc6c8d7559952942e965dfce39b1 GIT binary patch literal 440 zcmV;p0Z0CcP)knA{+#!dRtZ=%msWbk}(Z8C-TD z&Nu_bZbQMh%g_II;eQAn5A68)&>sP(>GjCL!GqEf&;H7>7fXBL$a7SFl7;f9RH|PC?);P+BuMOo*B6pK>6#=&*pCH6jb)o>AAi@Pl zaZhjOrD_fkr!^FCRqItbTCXM`ayP&B#d+#45O6FDkhxNrETD-q0<;d$PN&_# zY_=X|hjU#CN-lQ7Wm5@soK`?}F%%H!1e6@rxk-SIYjXgY%~pFj0M*l>+JuDzHLkx7 zcprX{pJ^9nn88e2f`W? + + #content { + border: 1px solid saddlebrown; + padding: 16px; + border-radius: 2px + } + + .list { + top: 15px; + width: 140px; + height: 40px; + border: 1px solid #0082E6; + display: inline-block; + border-radius: 2px; + position: relative; + line-height: 40px; + } + + #file { + position: absolute; + opacity: 0; + color: white; + width: 100%; + height: 100%; + z-index: 100; + } + + .list span { + display: inline-block; + text-align: center; + width: 100%; + line-height: 40px; + position: absolute; + color: #0082E6; + } + + video { + margin-top: 8px; + border-radius: 4px; + } + + ._p { + margin: 14px; + } + + ._p input { + display: inline-block; + width: 70%; + margin-left: 6px; + } + + ._p span { + font-size: 15px; + } + .container { + width: 100%; + height: 20px; + background-color: gray; + + } + + #progress { + height: 20px; + background-color: orange; + display: inline-block; + + } + .btn { + text-align: center; + color: #0082E6; + width: 140px; + height: 41px; + border: 1px solid #0082E6; + display: inline-block; + border-radius: 2px; + position: relative; + line-height: 40px; + background-color: white; + } + .ploadname { + display: inline-block; + text-align: center; + color: #0082E6; + height: 40px; + display: inline-block; + border-radius: 2px; + position: relative; + line-height: 40px; + background-color: white; + } + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
法律法规名称: + +
版本号: + +
法律法规分类: + +
发布时间: + +
状态: + + +
实施日期: + +
+
+ +

+ 选择上传文件: + + + 选择文件 + + + +

+ + + + + + + +
+ +
+ + +
+ 提交 + 取消 +
+ +
+
+ diff --git a/safesite/templates/lawsedit.html b/safesite/templates/lawsedit.html new file mode 100644 index 00000000..eb9cda0d --- /dev/null +++ b/safesite/templates/lawsedit.html @@ -0,0 +1,357 @@ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
法律法规名称: + +
版本号: + +
法律法规分类: + +
发布时间: + +
状态: + + +
实施日期: + +
+
+ +

+ 修改上传文件: + + + 选择文件 + + + +

+ + + + + + + +
+ +
+ + +
+ 提交 + 取消 +
+ +
+
+ diff --git a/safesite/templates/lawsindex.html b/safesite/templates/lawsindex.html new file mode 100644 index 00000000..7a83acd3 --- /dev/null +++ b/safesite/templates/lawsindex.html @@ -0,0 +1,221 @@ +
+
+
+
    +
    + +
    +
    + 新增 + 编辑 + 删除 +
    +
      +
      +
      +
      + +
      + 新建 + 编辑 + 删除 + +
      +
      + +
      +
      + \ No newline at end of file diff --git a/safesite/templates/lawstypeadd.html b/safesite/templates/lawstypeadd.html new file mode 100644 index 00000000..f6df4f6a --- /dev/null +++ b/safesite/templates/lawstypeadd.html @@ -0,0 +1,54 @@ +
      +
      +
      + 保存 + 取消 +
      +
      +
      +
      +
      + +
      +
      + +
      +
      +
      + +
      \ No newline at end of file diff --git a/safesite/templates/lawstypeedit.html b/safesite/templates/lawstypeedit.html new file mode 100644 index 00000000..6e56ea97 --- /dev/null +++ b/safesite/templates/lawstypeedit.html @@ -0,0 +1,61 @@ +
      +
      +
      + 保存 + 取消 +
      +
      +
      +
      + +
      + +
      +
      + +
      +
      +
      + +
      \ No newline at end of file diff --git a/safesite/urls.py b/safesite/urls.py index f0bc0e14..8d3309ca 100644 --- a/safesite/urls.py +++ b/safesite/urls.py @@ -171,4 +171,5 @@ urlpatterns = [ path('datashow/',datashowview.area, name='datashow'), path('datashow/charthandle', views.charthandle), path('companyinfo/', views.companyinfo), + path('rlt/',include('safesite.rlt.urls')), ]