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 15a6c14b..a455388b 100644
--- a/safesite/models.py
+++ b/safesite/models.py
@@ -1121,10 +1121,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):
@@ -1133,10 +1135,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/edulessonadd.html b/safesite/templates/edulessonadd.html
index 00cbb214..0fc8cd81 100644
--- a/safesite/templates/edulessonadd.html
+++ b/safesite/templates/edulessonadd.html
@@ -133,7 +133,7 @@
选择视频:
- 选择视频
+ 选择视频
@@ -214,20 +214,47 @@
var ot; //时间
var oloaded;//大小
//上传文件方法
- function UpladFile() {
+ function UpladFile(target, id) {
var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj.name) {
$(".el-upload-list").css("display", "block");
$(".el-upload-list li").css("border", "1px solid #20a0ff");
- $("#videoName").text(fileObj.name);
- var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj == undefined || fileObj == "") {
alert("请选择文件");
return false;
};
- var imagSize = document.getElementById("file").files[0].size;
+
+
+
+ var filetypes = [".mp4"];
+ var filepath = target.value;
+ if (filepath) {
+ var isnext = false;
+ var fileend = filepath.substring(filepath.indexOf("."));
+ if (filetypes && filetypes.length > 0) {
+ for (var i = 0; i < filetypes.length; i++) {
+ if (filetypes[i] == fileend) {
+ isnext = true;
+ break;
+ }
+ }
+ }
+ if (!isnext) {
+ alert("不接受此文件类型!");
+ target.value = "";
+ $("#videoName").text('文件格式不支持,请重新选择上传文件!');
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+
+
+ var imagSize = fileObj.size;
if (imagSize > 1024 * 1024 * 10) {
- alert("视频大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的视频!");
+ alert("视频大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择10M以内的视频!");
+ $("#videoName").text('文件太大了超出范围!');
return false;
}
var url = "edu/api/upload"; // 接收上传文件的后台地址
@@ -241,8 +268,10 @@
xhr.upload.onloadstart = function () { //上传开始执行方法
ot = new Date().getTime(); //设置上传开始时间
oloaded = 0; //设置上传开始时,以上传的文件大小为0
+
};
xhr.send(form); //开始上传,发送form数据
+ $("#videoName").text(fileObj.name);
} else {
alert("请选择文件");
}
diff --git a/safesite/templates/edulessonaddwj.html b/safesite/templates/edulessonaddwj.html
index 2a581e55..1ea9e144 100644
--- a/safesite/templates/edulessonaddwj.html
+++ b/safesite/templates/edulessonaddwj.html
@@ -148,7 +148,7 @@
- 选择文件
+ 选择文件
@@ -221,21 +221,46 @@
var ot; //时间
var oloaded;//大小
//上传文件方法
- function UpladFile() {
+ function UpladFile(target, id) {
var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj.name) {
$(".el-upload-list").css("display", "block");
$(".el-upload-list li").css("border", "1px solid #20a0ff");
- $("#fileName").text(fileObj.name);
- var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj == undefined || fileObj == "") {
alert("请选择文件");
return false;
};
- var imagSize = document.getElementById("file").files[0].size;
+
+
+ var filetypes = [".xls",".txt",".ppt",".doc",".pdf",".dot"];
+ var filepath = target.value;
+ if (filepath) {
+ var isnext = false;
+ var fileend = filepath.substring(filepath.indexOf("."));
+ if (filetypes && filetypes.length > 0) {
+ for (var i = 0; i < filetypes.length; i++) {
+ if (filetypes[i] == fileend) {
+ isnext = true;
+ break;
+ }
+ }
+ }
+ if (!isnext) {
+ alert("不接受此文件类型!");
+ target.value = "";
+ $("#videoName").text('文件格式不支持,请重新选择上传文件!');
+ return false;
+ }
+ } else {
+ return false;
+ }
+
+
+ var imagSize = fileObj.size;
if (imagSize > 1024 * 1024 * 3) {
alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的文件!");
+ $("#videoName").text('文件太大了超出范围!');
return false;
}
@@ -252,6 +277,7 @@
oloaded = 0; //设置上传开始时,以上传的文件大小为0
};
xhr.send(form); //开始上传,发送form数据
+ $("#fileName").text(fileObj.name);
}
else {
@@ -312,7 +338,6 @@
var str = data.filepath;
document.getElementById('url').innerHTML = str;
alert("上传成功!");
-
}
} else {
alert("上传失败");
diff --git a/safesite/templates/mgtadd.html b/safesite/templates/mgtadd.html
index 484383fa..595b63cb 100644
--- a/safesite/templates/mgtadd.html
+++ b/safesite/templates/mgtadd.html
@@ -126,21 +126,16 @@
选择文件:
- 选择文件
+ 选择文件
-
+
+
+
+
-
-
-
+
+
@@ -209,36 +204,65 @@
var ot; //时间
var oloaded;//大小
//上传文件方法
- function UpladFile() {
+ function UpladFile(target, id) {
var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj.name) {
$(".el-upload-list").css("display", "block");
$(".el-upload-list li").css("border", "1px solid #20a0ff");
- $("#videoName").text(fileObj.name);
- var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
if (fileObj == undefined || fileObj == "") {
alert("请选择文件");
return false;
};
- var imagSize = document.getElementById("file").files[0].size;
- if (imagSize > 1024 * 1024 * 10) {
- alert("视频大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的视频!");
+
+ var filetypes = [ ".txt", ".ppt", ".doc", ".pdf", ".dot"];//判断上传文件格式类型
+ var filepath = target.value;
+ if (filepath) {
+ var isnext = false;
+ var fileend = filepath.substring(filepath.indexOf("."));
+ if (filetypes && filetypes.length > 0) {
+ for (var i = 0; i < filetypes.length; i++) {
+ if (filetypes[i] == fileend) {
+ isnext = true;
+ break;
+ }
+ }
+ }
+ if (!isnext) {
+ alert("不接受此文件类型!");
+ target.value = "";
+ $("#videoName").text('文件格式不支持,请重新选择上传文件!');
+ return false;
+ }
+ } else {
return false;
}
- var url = "mgt/upload"; // 接收上传文件的后台地址
- var form = new FormData(); // FormData 对象
- form.append("mf", fileObj); // 文件对象
- xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
- xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
- xhr.onload = uploadComplete; //请求完成
- xhr.onerror = uploadFailed; //请求失败
- xhr.upload.onprogress = progressFunction; //【上传进度调用方法实现】
- xhr.upload.onloadstart = function () { //上传开始执行方法
- ot = new Date().getTime(); //设置上传开始时间
- oloaded = 0; //设置上传开始时,以上传的文件大小为0
- };
- xhr.send(form); //开始上传,发送form数据
- } else {
+ var imagSize = fileObj.size;
+
+ if (imagSize > 1024 * 1024 * 10) {
+ alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择10M以内的视频!");
+ $("#videoName").text('文件太大了超出范围!');
+ return false;
+ }
+
+ var url = "mgt/upload"; // 接收上传文件的后台地址
+ var form = new FormData(); // FormData 对象
+ form.append("mf", fileObj); // 文件对象
+ xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
+ xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
+ xhr.onload = uploadComplete; //请求完成
+ xhr.onerror = uploadFailed; //请求失败
+ xhr.upload.onprogress = progressFunction; //【上传进度调用方法实现】
+ xhr.upload.onloadstart = function () { //上传开始执行方法
+ ot = new Date().getTime(); //设置上传开始时间
+ oloaded = 0; //设置上传开始时,以上传的文件大小为0
+ };
+ xhr.send(form); //开始上传,发送form数据
+
+ $("#fileName").text(fileObj.name);
+
+ }
+
+ else {
alert("请选择文件");
}
}
@@ -297,7 +321,6 @@
var str = data.filepath;
document.getElementById('url').innerHTML = str;
alert("上传成功!");
- $(".preview").append("
");
}
} else {
alert("上传失败");
diff --git a/safesite/templates/operproce.html b/safesite/templates/operproce.html
new file mode 100644
index 00000000..372a1de6
--- /dev/null
+++ b/safesite/templates/operproce.html
@@ -0,0 +1,113 @@
+
+
+
+
\ 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 c9b9fbee..83a03493 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,7 +181,8 @@ urlpatterns = [
path('test',views.test),
path('.well-known/pki-validation/fileauth.txt',views.vewechat),#验证
path('miniprogram/boUR15vyNu.txt',views.minip_px),
-
+ path('api/getresbilitydata',views.getresbilitydata),#责任制
+ path('api/getprodata',views.getprodata),#操作规程
#合作模块
path('edu/',include('safesite.edu.urls')),
diff --git a/safesite/views.py b/safesite/views.py
index 5c918c9f..21363de4 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
@@ -471,6 +471,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):
# 计算一些数据
@@ -7021,3 +7037,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")