Merge branch 'master' of 10.7.100.160:/job/safesite
This commit is contained in:
commit
05e78a2a98
|
@ -0,0 +1,31 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-19 14:09
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Groups',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=128, unique=True)),
|
||||
('password', models.CharField(max_length=256)),
|
||||
('groupname', models.CharField(max_length=128, unique=True)),
|
||||
('type', models.CharField(choices=[('real', '集团'), ('fictitious', '组合')], default='集团', max_length=32)),
|
||||
('createtime', models.DateTimeField(auto_now_add=True)),
|
||||
('members', models.ManyToManyField(to='safesite.Partment')),
|
||||
],
|
||||
options={
|
||||
'ordering': ['-createtime'],
|
||||
'verbose_name_plural': '集团',
|
||||
'verbose_name': '集团',
|
||||
},
|
||||
),
|
||||
]
|
|
@ -17,7 +17,7 @@ def makeqr(data):
|
|||
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
||||
img.save(filepath)
|
||||
return filepath
|
||||
def makeqr2(data):
|
||||
def makeqr_train(data):
|
||||
upload_folder = 'media/qr_train'
|
||||
if not os.path.exists(upload_folder):
|
||||
os.mkdir(upload_folder)
|
||||
|
@ -26,7 +26,7 @@ def makeqr2(data):
|
|||
img.save(filepath)
|
||||
return filepath
|
||||
|
||||
def makeqr3(data):
|
||||
def makeqr_riskact(data):
|
||||
upload_folder = 'media/qr_riskact'
|
||||
if not os.path.exists(upload_folder):
|
||||
os.mkdir(upload_folder)
|
||||
|
@ -35,7 +35,7 @@ def makeqr3(data):
|
|||
img.save(filepath)
|
||||
return filepath
|
||||
|
||||
def makeqr4(data):
|
||||
def makeqr_examtest(data):
|
||||
upload_folder = 'media/qr_examtest'
|
||||
if not os.path.exists(upload_folder):
|
||||
os.mkdir(upload_folder)
|
||||
|
@ -44,6 +44,15 @@ def makeqr4(data):
|
|||
img.save(filepath)
|
||||
return filepath
|
||||
|
||||
def makeqr_area(data):
|
||||
upload_folder = 'media/qr_area'
|
||||
if not os.path.exists(upload_folder):
|
||||
os.mkdir(upload_folder)
|
||||
img = qrcode.make(data=data)
|
||||
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
||||
img.save(filepath)
|
||||
return filepath
|
||||
|
||||
def drequipments(companyid,path):
|
||||
wb = load_workbook(path)
|
||||
sheet = wb.worksheets[0]
|
||||
|
@ -274,7 +283,7 @@ def drrisks(companyid,path):
|
|||
if users.exists():
|
||||
obj.zrr = users[0]
|
||||
obj.save()
|
||||
obj.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
||||
obj.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
||||
obj.save()
|
||||
a = Risk()
|
||||
a.riskact=obj
|
||||
|
|
|
@ -119,13 +119,17 @@ def api(req):
|
|||
elif a == 'del':
|
||||
id =req.GET.get('id')
|
||||
userid = req.session['userid']
|
||||
companyid = getcompany(userid)#公司ID
|
||||
a = Edulesson.objects.get(id=id)
|
||||
if User.objects.get(userid = userid).issuper == 1:
|
||||
if a.usecomp==Partment.objects.get(partid=companyid):
|
||||
a.deletemark=0
|
||||
a.save()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
else:
|
||||
|
||||
return JsonResponse({"code":0})
|
||||
|
||||
#点击阅读
|
||||
elif a=='readnumber':
|
||||
id =req.GET.get('id')
|
||||
|
|
|
@ -19,6 +19,5 @@ class CompanyInfoForm(forms.Form):
|
|||
legalperson_phone = forms.CharField(max_length=24, label='法人电话', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
liaison = forms.CharField(max_length=24, label='联系人', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
liaison_phone = forms.CharField(max_length=24, label='联系人电话', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
liaison_fax = forms.CharField(max_length=13, label='联系人传真', widget=forms.TextInput(attrs={'size': '50'}))
|
||||
introduce = forms.CharField(label='公司概况', widget=forms.Textarea)
|
||||
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('', views.index),
|
||||
path('add',views.add),
|
||||
path('api',views.api),
|
||||
path('getdickey', views.getdickey),
|
||||
path('upload', views.upload),
|
||||
|
||||
]
|
|
@ -0,0 +1,95 @@
|
|||
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,Mgtsystem
|
||||
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,'mgtindex.html')
|
||||
def add(req):
|
||||
return render(req,'mgtadd.html')
|
||||
#上传文件,返回地址和名称
|
||||
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/mgt', 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})
|
||||
#转换为combobox所用string
|
||||
def transstr(obj,str1,str2):
|
||||
keylist = []
|
||||
for i in list(obj):
|
||||
keydictstr = '{"value":"'+ str(i[str1])+'","text":"'+i[str2]+'"}'
|
||||
keylist.append(keydictstr)
|
||||
keystr = '['+','.join(keylist)+']'
|
||||
return keystr
|
||||
|
||||
def getdickey(req):
|
||||
userid = req.session['userid']
|
||||
companyid = getcompany(userid)
|
||||
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")
|
||||
|
||||
def api(req):
|
||||
a=req.GET.get('a')
|
||||
userid = req.session['userid']
|
||||
companyid = getcompany(userid)
|
||||
if a == 'add':
|
||||
obj = Mgtsystem()
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
obj.mgtname = data['mgtname']
|
||||
obj.mgtpath = data['filepath']
|
||||
obj.type= Dickey.objects.get(dickeyid=data['type'])
|
||||
obj.publisdate=data['publisdate']
|
||||
obj.usecomp=Partment.objects.get(partid=companyid)
|
||||
obj.createuser=User.objects.get(userid=userid)
|
||||
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
|
||||
elif a=='listall':
|
||||
startnum,endnum=fenye(req)
|
||||
a = Mgtsystem.objects.filter(usecomp__partid__in= [1,Partment.objects.get(partid=companyid).partid] ,deletemark=1).order_by('id')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('id','mgtname','mgtpath','type__dickeyname','publisdate','createuser__name')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
|
||||
elif a == 'del':
|
||||
id =req.GET.get('id')
|
||||
userid = req.session['userid']
|
||||
a = Mgtsystem.objects.get(id=id)
|
||||
if a.usecomp==Partment.objects.get(partid=companyid):
|
||||
a.deletemark=0
|
||||
a.save()
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
return JsonResponse({"code":0})
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-17 23:14
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0265_auto_20190917_1716'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='area',
|
||||
name='qrcode',
|
||||
field=models.CharField(blank=True, max_length=200, null=True),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,14 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-19 14:23
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0267_auto_20190917_1543'),
|
||||
('safesite', '0265_auto_20190917_1716'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-19 14:23
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0268_merge_20190919_1423'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='observe',
|
||||
name='lookers',
|
||||
field=models.ManyToManyField(related_name='gcrs', to='safesite.User'),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,17 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-20 12:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0269_auto_20190919_1423'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='companyinfo',
|
||||
name='liaison_fax',
|
||||
),
|
||||
]
|
|
@ -0,0 +1,29 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-23 10:17
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0269_auto_20190919_1423'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Mgtsystem',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('mgtname', models.CharField(max_length=50)),
|
||||
('mgtpath', models.CharField(blank=True, max_length=200, null=True)),
|
||||
('publisdate', models.DateTimeField(default=django.utils.timezone.now)),
|
||||
('deletemark', models.IntegerField(default=1)),
|
||||
('createuser', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='safesite.User')),
|
||||
('type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Dickey')),
|
||||
('usecomp', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='safesite.Partment')),
|
||||
],
|
||||
),
|
||||
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-23 10:18
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0270_auto_20190923_1017'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='mgtsystem',
|
||||
name='mgtname',
|
||||
field=models.CharField(max_length=64),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-25 11:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0270_auto_20190920_1200'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='trouble',
|
||||
name='shresult',
|
||||
field=models.IntegerField(blank=True, choices=[(1, '通过'), (2, '审核未通过'), (3, '复查未通过'), (4, '已修改'), (5, '评估未通过'), (6, '未采纳')], null=True),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-23 10:26
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0271_auto_20190923_1018'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='mgtsystem',
|
||||
name='id',
|
||||
field=models.AutoField(primary_key=True, serialize=False),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mgtsystem',
|
||||
name='mgtname',
|
||||
field=models.CharField(max_length=50),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 2.1.5 on 2019-09-25 16:57
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0271_auto_20190925_1113'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='suggest',
|
||||
name='accept',
|
||||
field=models.IntegerField(default=1),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,29 @@
|
|||
# Generated by Django 2.1.5 on 2019-10-08 16:04
|
||||
|
||||
import django.contrib.postgres.fields
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('safesite', '0272_auto_20190925_1657'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# migrations.AddField(
|
||||
# model_name='area',
|
||||
# name='qrcode',
|
||||
# field=models.CharField(blank=True, max_length=200, null=True),
|
||||
# ),
|
||||
migrations.AddField(
|
||||
model_name='operation',
|
||||
name='todousers',
|
||||
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='operationspjd',
|
||||
name='sprs',
|
||||
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
|
||||
),
|
||||
]
|
|
@ -1,7 +1,7 @@
|
|||
from django.db import models
|
||||
import uuid
|
||||
import django.utils.timezone as timezone
|
||||
from django.contrib.postgres.fields import JSONField
|
||||
from django.contrib.postgres.fields import JSONField,ArrayField
|
||||
import jwt
|
||||
import datetime
|
||||
# Create your models here.
|
||||
|
@ -120,6 +120,7 @@ class Trouble(models.Model):#隐患排查
|
|||
(3, '复查未通过'),
|
||||
(4, '已修改'),
|
||||
(5,'评估未通过'),
|
||||
(6,'未采纳'),
|
||||
)
|
||||
deletemark=models.IntegerField(default='1')
|
||||
troubleid = models.AutoField(primary_key=True)
|
||||
|
@ -212,7 +213,7 @@ class Observe(models.Model):#行为观察
|
|||
lookplace = models.CharField(max_length=200)
|
||||
looktime = models.DateTimeField(default = timezone.now)
|
||||
looktime2 = models.DateTimeField(null=True,blank=True)
|
||||
#accompanyman = models.ManyToManyField(User,related_name='gcptr',null=True,blank=True)#陪同人员
|
||||
lookers = models.ManyToManyField(User,related_name='gcrs')#陪同人员
|
||||
lookpart = models.ForeignKey(Partment,related_name='gcbm',on_delete=models.CASCADE) #观察部门
|
||||
looker = models.ForeignKey(User,related_name='gcr',default='1', on_delete=models.CASCADE)#观察人
|
||||
lookeder = models.CharField(max_length=100,null=True,blank=True)#被观察对象
|
||||
|
@ -409,6 +410,7 @@ class Suggest(models.Model):#合理化建议
|
|||
yjwcsj = models.DateTimeField(null=True,blank=True) #预计完成时间
|
||||
sjwcsj = models.DateTimeField(null=True,blank=True) #实际完成时间
|
||||
shyj = models.CharField(max_length=1000,null=True,blank=True) #审核意见
|
||||
accept = models.IntegerField(default=1)
|
||||
|
||||
class Suggestflow(models.Model):#建议流程
|
||||
id = models.AutoField(primary_key=True)
|
||||
|
@ -464,6 +466,7 @@ class Operation(models.Model):#作业表
|
|||
zyzt = JSONField()
|
||||
fxcs = models.CharField(max_length=200)
|
||||
todouser = models.ForeignKey(User,related_name='zyclr',on_delete=models.CASCADE,null=True,blank=True)
|
||||
todousers = ArrayField(models.IntegerField(), blank=True,null=True)
|
||||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True,default=1)
|
||||
|
||||
class Fxcs(models.Model):#作业分析措施
|
||||
|
@ -506,12 +509,13 @@ class Operzyry(models.Model):#作业确认人
|
|||
modifytime = models.DateTimeField(auto_now = True)
|
||||
submittime = models.DateTimeField(default = timezone.now)
|
||||
|
||||
class Operationspjd(models.Model):#作业审批节点
|
||||
class Operationspjd(models.Model):#作业审批节点配置
|
||||
id = models.AutoField(primary_key=True)
|
||||
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
|
||||
jdmc = models.CharField(max_length=100)
|
||||
spbm = models.ForeignKey(Partment,related_name='spbm',on_delete=models.CASCADE,null=True,blank=True)#审批部门
|
||||
spr = models.ForeignKey(User,related_name='spr',on_delete=models.CASCADE,null=True,blank=True)#审批部门
|
||||
sprs = ArrayField(models.IntegerField(), blank=True,null=True)
|
||||
submittime = models.DateTimeField(u'创建时间',default = timezone.now)
|
||||
modifytime = models.DateTimeField(auto_now = True)
|
||||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||||
|
@ -830,7 +834,6 @@ class CompanyInfo(models.Model):
|
|||
legalperson_phone = models.CharField(max_length=24, null=True, blank=True, verbose_name='法人电话')
|
||||
liaison = models.CharField(max_length=24, verbose_name='联系人')
|
||||
liaison_phone = models.CharField(max_length=24, verbose_name='联系人电话')
|
||||
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)
|
||||
|
@ -868,3 +871,14 @@ class FileManage(models.Model):
|
|||
usecomp= models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||||
downnum = models.IntegerField(default=0)
|
||||
deletemark = models.IntegerField(default=1)
|
||||
|
||||
#管理制度表
|
||||
class Mgtsystem(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
mgtname = models.CharField(max_length=50)
|
||||
type = models.ForeignKey(Dickey,on_delete=models.CASCADE,null=True,blank=True)
|
||||
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)
|
||||
mgtpath = models.CharField(max_length=200,null=True,blank=True)
|
||||
publisdate = models.DateTimeField(default = timezone.now)
|
||||
createuser = models.ForeignKey(User,on_delete=models.CASCADE)
|
||||
deletemark = models.IntegerField(default=1)
|
||||
|
|
|
@ -75,7 +75,7 @@ def lawstype(req):
|
|||
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')
|
||||
list_items = (Regulations.objects.filter(usecomp__partid=1,deletemark=1)|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 == 'add':
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
|
@ -129,7 +129,7 @@ def lawstype(req):
|
|||
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:
|
||||
if a.usecomp==Partment.objects.get(partid=companyid):
|
||||
Regulations.objects.filter(id = id).update(deletemark=0)
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
|
@ -139,7 +139,7 @@ def lawstype(req):
|
|||
elif a == 'canedit':
|
||||
id = req.GET.get('id')
|
||||
a = Regulations.objects.get(id=id)
|
||||
if a.usecomp == companyid or int(companyid)==1:
|
||||
if a.usecomp==Partment.objects.get(partid=companyid):
|
||||
return JsonResponse({'code':1})
|
||||
else:
|
||||
return JsonResponse({"code":0})
|
||||
|
@ -169,7 +169,7 @@ def lawstype(req):
|
|||
id =req.GET.get('id')
|
||||
userid = req.session['userid']
|
||||
a = FileManage.objects.get(id=id)
|
||||
if User.objects.get(userid = userid).issuper == 1:
|
||||
if a.usecomp==Partment.objects.get(partid=companyid):
|
||||
a.deletemark=0
|
||||
a.save()
|
||||
return JsonResponse({"code":1})
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.panel {
|
||||
overflow: hidden;
|
||||
/*overflow: hidden;*/
|
||||
text-align: left;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
|
@ -37,11 +37,7 @@
|
|||
border-bottom-width: 0;
|
||||
}
|
||||
.panel-with-icon {
|
||||
<<<<<<< HEAD
|
||||
padding-left: 20px;
|
||||
=======
|
||||
padding-left: 10px;
|
||||
>>>>>>> 0ed848ff177ad9c427f58c714cb22f8012e2c913
|
||||
padding-left: 20px;
|
||||
}
|
||||
.panel-icon,
|
||||
.panel-tool {
|
||||
|
@ -3411,7 +3407,7 @@
|
|||
height: 40px;
|
||||
line-height: 30px;
|
||||
color: #313030;
|
||||
margin-left: 25px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.sidemenu .accordion-header:hover {
|
||||
background: #0066cc;
|
||||
|
|
|
@ -148,6 +148,9 @@
|
|||
.icon-edu{
|
||||
background:url('icons/edu.png') no-repeat center center;
|
||||
}
|
||||
.icon-gmt {
|
||||
background: url('icons/gmt.png') no-repeat center center;
|
||||
}
|
||||
.icon-regulationstype {
|
||||
background: url('icons/regulationstype.png') no-repeat center center;
|
||||
}
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 859 B |
File diff suppressed because one or more lines are too long
|
@ -32,6 +32,17 @@ function canvasDataURL(path, obj, callback) {
|
|||
scale = w / h;
|
||||
w = obj.width || w;
|
||||
h = obj.height || (w / scale);
|
||||
if(w <= h ){
|
||||
if(w>640){
|
||||
w = 640
|
||||
h = w/scale
|
||||
}
|
||||
}else{
|
||||
if(h>640){
|
||||
h=640
|
||||
w = h*scale
|
||||
}
|
||||
}
|
||||
var quality = 0.7; // 默认图片质量为0.7
|
||||
//生成canvas
|
||||
var canvas = document.createElement('canvas');
|
||||
|
@ -45,9 +56,9 @@ function canvasDataURL(path, obj, callback) {
|
|||
canvas.setAttributeNode(anh);
|
||||
ctx.drawImage(that, 0, 0, w, h);
|
||||
// 图像质量
|
||||
if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
|
||||
quality = obj.quality;
|
||||
}
|
||||
// if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
|
||||
// quality = obj.quality;
|
||||
// }
|
||||
// quality值越小,所绘制出的图像越模糊
|
||||
var base64 = canvas.toDataURL('image/jpeg', quality);
|
||||
// 回调函数返回base64的值
|
||||
|
@ -62,7 +73,6 @@ function convertBase64UrlToBlob(urlData) {
|
|||
}
|
||||
return new Blob([u8arr], { type: mime });
|
||||
}
|
||||
|
||||
//取消上传
|
||||
function cancleUploadFile() {
|
||||
|
||||
|
|
|
@ -301,7 +301,16 @@
|
|||
$("#yhms").textbox('disable');
|
||||
$('#fcyjdiv,#file2,#zgxq,#shyjdiv,#csyj,#reject').hide(); $('#jxpg').show();
|
||||
$("#yhpg").combobox({ url: 'getdickey?dicclass=19&a=combobox', });
|
||||
$("#zgbm").combotree({ url: 'parthandle?a=tree3', onSelect: function (node) { $('#zgr').combobox({ url: 'getuser?partid=' + node.id + '&a=combobox', }); } });
|
||||
$("#zgbm").combotree({ url: 'parthandle?a=tree3', onSelect: function (node) {
|
||||
$('#zgr').combobox({
|
||||
url: 'getuser?partid=' + node.id + '&a=combobox',
|
||||
editable: false,
|
||||
filter: function (q, row) {
|
||||
var opts = $(this).combobox('options');
|
||||
return row[opts.textField].indexOf(q) >= 0;//这里改成>=即可在任意地方匹配
|
||||
},
|
||||
});
|
||||
} });
|
||||
// if (data.yhpg__dickeyname != '' & data.yhpg__dickeyname != null) {
|
||||
// $("#yhpg").combobox('setValue', data.yhpg__dickeyid).combobox('readonly');
|
||||
// $("#yhlx").combobox({ url: 'getdicclass?dicid=15' }).combobox('setValue', data.yhlx__dicid).combobox('readonly');
|
||||
|
|
|
@ -6,6 +6,12 @@
|
|||
</div>
|
||||
<div data-options="region:'center'" style="height:100%;padding:15px 15px;">
|
||||
<form id="gcff" method="post" name="gcff" enctype="multipart/form-data">
|
||||
<div style="margin-bottom:5px">
|
||||
<input class="easyui-textbox" id="lookersname" style="width:480px;height:60px" editable="false"
|
||||
data-options="label:'观察人',multiline:true,prompt:'请选择'" required=true>
|
||||
<input type="hidden" id="lookers" name="lookers" />
|
||||
<a id="chooserys" class='easyui-linkbutton' onclick="choseusers('lookers')" style="width:auto">选择</a>
|
||||
</div>
|
||||
<div style="margin-bottom:5px">
|
||||
<input id="lookeder" name="lookeder" class="easyui-textbox" style="width:480px"
|
||||
data-options="label:'被观察人员'" required=true>
|
||||
|
@ -68,6 +74,12 @@
|
|||
</div>
|
||||
</div>
|
||||
<script>
|
||||
function aaa(x) {
|
||||
if (x == "lookers") {
|
||||
$('#lookers').attr('value', top.$('#in').val());
|
||||
$('#lookersname').textbox('setValue', top.$('#in').attr('show'));
|
||||
}
|
||||
}
|
||||
function getunsafe() {
|
||||
obj = document.getElementsByName("unsafe");
|
||||
check_val = [];
|
||||
|
|
|
@ -219,9 +219,7 @@
|
|||
var form = new FormData();
|
||||
if (fileObj.size / 1024 > 500) { //大于500k,进行压缩上传
|
||||
$("#file").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
|
||||
photoCompress(fileObj, {
|
||||
quality: 0.2
|
||||
}, function (base64Codes) {
|
||||
photoCompress(fileObj, {}, function (base64Codes) {
|
||||
//console.log("压缩后:" + base.length / 1024 + " " + base);
|
||||
var bl = convertBase64UrlToBlob(base64Codes);
|
||||
form.append("upfile", bl, fileObj.name); // 文件对象
|
||||
|
@ -310,9 +308,7 @@
|
|||
var form = new FormData();
|
||||
if (fileObj.size / 1024 > 500) { //大于500k,进行压缩上传
|
||||
$("#file2").after('<span id="tip" style="color:blue">图片大于500k,正在压缩...</span>');
|
||||
photoCompress(fileObj, {
|
||||
quality: 0.2
|
||||
}, function (base64Codes) {
|
||||
photoCompress(fileObj, {}, function (base64Codes) {//quality: 0.2
|
||||
//console.log("压缩后:" + base.length / 1024 + " " + base);
|
||||
var bl = convertBase64UrlToBlob(base64Codes);
|
||||
form.append("upfile", bl, fileObj.name); // 文件对象
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
</input>
|
||||
</div>
|
||||
</form>
|
||||
<div class="labeldiv">区域二维码</div>
|
||||
<img id="qrcode" height=240px width=240px>
|
||||
</div>
|
||||
<script>
|
||||
var id = {{id}}
|
||||
|
@ -23,6 +25,7 @@
|
|||
console.log(res)
|
||||
$('#qyname').textbox('setValue',res.name);
|
||||
$('#qyorder').textbox('setValue',res.order)
|
||||
$('#qrcode').attr('src',res.qrcode)
|
||||
})
|
||||
function submitform() {
|
||||
var data = $('#qyff').serializeJSON()
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
<div class="labeldiv" style="margin:10px">公司信息</div>
|
||||
<form method="post" action="/companyinfo/" id="companyform">
|
||||
{% csrf_token %}
|
||||
{{ companyinfo.non_field_errors }}
|
||||
|
|
|
@ -120,7 +120,7 @@
|
|||
<tr>
|
||||
<td>所属类别:</td>
|
||||
<td>
|
||||
<input id="cate" class="easyui-combotree" name="cate" style="width:480px" data-options="url:'api/questioncat?a=tree2',loadFilter: function (rows) {
|
||||
<input id="cate" class="easyui-combotree" name="cate" style="width:480px" data-options="url:'api/questioncat?a=tree',loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},">
|
||||
</td>
|
||||
|
@ -135,7 +135,7 @@
|
|||
<a class="list" href="javascript:;">
|
||||
<input id="file" type="file" name="myfile" onchange="UpladFile();" /><span>选择视频</span>
|
||||
</a>
|
||||
<button class="btn" type="button" onclick="sub();">上传</button>
|
||||
<!--<button class="btn" type="button" onclick="sub();">上传</button>-->
|
||||
|
||||
</p>
|
||||
<!--显示消失-->
|
||||
|
@ -220,37 +220,35 @@
|
|||
$(".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以内的视频!");
|
||||
return false;
|
||||
}
|
||||
var url = "edu/api/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 {
|
||||
alert("请选择文件");
|
||||
}
|
||||
}
|
||||
|
||||
/*点击提交*/
|
||||
function sub() {
|
||||
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以内的视频!");
|
||||
return false;
|
||||
}
|
||||
var url = "edu/api/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数据
|
||||
}
|
||||
|
||||
|
||||
//上传进度实现方法,上传过程中会频繁调用该方法
|
||||
function progressFunction(evt) {
|
||||
|
|
|
@ -135,7 +135,7 @@
|
|||
<tr>
|
||||
<td>所属类别:</td>
|
||||
<td>
|
||||
<input id="cate" class="easyui-combotree" name="cate" style="width:480px" data-options="url:'api/questioncat?a=tree2',loadFilter: function (rows) {
|
||||
<input id="cate" class="easyui-combotree" name="cate" style="width:480px" data-options="url:'api/questioncat?a=tree',loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},">
|
||||
</td>
|
||||
|
@ -150,7 +150,7 @@
|
|||
<a class="list" href="javascript:;">
|
||||
<input id="file" type="file" name="myfile" onchange="UpladFile();" /><span>选择文件</span>
|
||||
</a>
|
||||
<button class="btn" type="button" onclick="sub();">上传</button>
|
||||
<!--<button class="btn" type="button" onclick="sub();">上传</button>-->
|
||||
<a class="el-upload-list__item-name">
|
||||
<i class="el-icon-document"></i><span class="ploadname" id="fileName">上传文件名称</span>
|
||||
</a>
|
||||
|
@ -228,7 +228,30 @@
|
|||
$(".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;
|
||||
if (imagSize > 1024 * 1024 * 3) {
|
||||
alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的文件!");
|
||||
return false;
|
||||
}
|
||||
|
||||
var url = "edu/api/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 {
|
||||
|
@ -236,35 +259,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
/*点击提交*/
|
||||
function sub() {
|
||||
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 * 3)
|
||||
{
|
||||
alert("文件大小为:" + (imagSize / (1024 * 1024)).toFixed(2) + "M,超出了上传大小," + "请选择3M以内的文件!");
|
||||
return false;
|
||||
}
|
||||
|
||||
var url = "edu/api/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数据
|
||||
}
|
||||
|
||||
|
||||
//上传进度实现方法,上传过程中会频繁调用该方法
|
||||
function progressFunction(evt) {
|
||||
// event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
|
||||
|
|
|
@ -0,0 +1,123 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>答题详情</title>
|
||||
<script type="text/javascript" src="/static/safesite/easyui/jquery.min.js"></script>
|
||||
</head>
|
||||
|
||||
|
||||
<body >
|
||||
|
||||
<div style="height:100%;overflow:auto;width:70%;background-color:lightcyan;margin:0 auto;">
|
||||
<div id="examname" style="font-size: 36px;color: #73348a;text-align: center;margin-top: 30px;font-weight: bold;"></div>
|
||||
<div style="height:200px" id="user">
|
||||
|
||||
</div>
|
||||
<div id="examtype1"></div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
<script>
|
||||
|
||||
var id = {{id }};
|
||||
var html;
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: "/api/examtestdetail?a=detail",
|
||||
data: { 'id': id },
|
||||
dateType: "json",
|
||||
success: function (data) {
|
||||
document.getElementById("examname").innerHTML = data.examtest__name;
|
||||
var divUserHtml = "";
|
||||
divUserHtml += '<div style="margin-left:10px;padding-bottom:13px;float:left"><image style="margin: 10px 10px;" src=' + data.user__headimgurl + '></image></div>';
|
||||
divUserHtml += '<div style="float:left;margin-top: 20px;margin-left:20px"><p>姓名:' + data.user__name + '</p><p>得分:' + data.score + '</p><p>是否通过:' + (data.passcode == 1 ? '通过' : '不通过') + '</p></div > ';
|
||||
|
||||
$("#user").append(divUserHtml);
|
||||
|
||||
for (var i = 1; i <= data.testdetail.length; i++) {
|
||||
|
||||
|
||||
if (data.testdetail[i].question__type == 3)
|
||||
{
|
||||
var divHtml = "";
|
||||
divHtml += '<div style="margin-left:30px;padding-bottom:13px">';
|
||||
divHtml += '<span style="color:blue">' + "【判断题】</span></span>"+"第"+i+"题:" + data.testdetail[i].question__title +'</span>';
|
||||
divHtml += '<span style=" margin-left: 40px; color:#d5cc1d;">此题得分:' + data.testdetail[i].iscore + ' 分</span>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="margin-left: 80px;margin-top: 15px;"><span>A.' + data.testdetail[i].question__answer.A + '</span></br></br><span>B.' + data.testdetail[i].question__answer.B +'</span></div>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="padding-left: 10px; padding-top: 10px;">';
|
||||
divHtml += '<div style="color:green;">正确答案:' + data.testdetail[i].question__right + '</div>';
|
||||
if (data.testdetail[i].iscore == 0) {
|
||||
divHtml += '<div style="color:red;">您的答案错误:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
else {
|
||||
divHtml += '<div style="color:green;">您的答案正确:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
divHtml += '<div style="margin-top: 10px;color: #4f3b08;font-size:13px;">' + (data.testdetail[i].question_resolution == undefined ? '本题无解析!' : data.testdetail[i].question_resolution) +'</div>';
|
||||
}
|
||||
else if (data.testdetail[i].question__type == 2) {
|
||||
var divHtml = "";
|
||||
var answrText = "";
|
||||
divHtml += '<div style="margin-left:30px;padding-bottom:13px">';
|
||||
divHtml += '<span style="color:blue">' + "【多选题】</span></span>" +"第" + i + "题:" + data.testdetail[i].question__title + '</span>';
|
||||
divHtml += '<span style=" margin-left: 40px; color:#d5cc1d;">此题得分:' + data.testdetail[i].iscore + ' 分</span>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="margin-left: 80px;margin-top: 15px;"><span>A.' + data.testdetail[i].question__answer.A + '</span></br></br><span>B.' + data.testdetail[i].question__answer.B + '</span></br></br><span>C.' + data.testdetail[i].question__answer.C + '</span></br></br><span>D.' + data.testdetail[i].question__answer.D + '</span></br></br><span>E.' + (data.testdetail[i].question__answer.E == undefined ? '无该选项' : data.testdetail[i].question__answer.E) + '</span></br></br><span>F.' + (data.testdetail[i].question__answer.F == undefined ? '无该选项' : data.testdetail[i].question__answer.F) + '</span></div>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="padding-left: 10px; padding-top: 10px;">';
|
||||
divHtml += '<div style="color:green;">正确答案:' + data.testdetail[i].question__right + '</div>';
|
||||
|
||||
if (data.testdetail[i].iscore == data.testdetail[i].score) {
|
||||
divHtml += '<div style="color:green;">您的答案正确:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
else if (data.testdetail[i].iscore == 0) {
|
||||
divHtml += '<div style="color:red;">您的答案错误:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
else {
|
||||
divHtml += '<div style="color:yellow;">您没有选全答案:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
divHtml += '<div style="margin-top: 10px;color: #4f3b08;font-size:13px;">' + (data.testdetail[i].question_resolution == undefined ? '本题无解析!' : data.testdetail[i].question_resolution) + '</div>';
|
||||
}
|
||||
else {
|
||||
var divHtml = "";
|
||||
var answrText = "";
|
||||
divHtml += '<div style="margin-left:30px;padding-bottom:13px">';
|
||||
divHtml += '<span style="color:blue">' + "【单选题】</span></span>" + "第" + i + "题:" + data.testdetail[i].question__title + '</span>';
|
||||
divHtml += '<span style=" margin-left: 40px; color:#d5cc1d;">此题得分:' + data.testdetail[i].iscore + ' 分</span>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="margin-left: 80px;margin-top: 15px;"><span>A.' + data.testdetail[i].question__answer.A + '</span></br></br><span>B.' + data.testdetail[i].question__answer.B + '</span></br></br><span>C.' + data.testdetail[i].question__answer.C + '</span></br></br><span>D.' + data.testdetail[i].question__answer.D + '</span></div>';
|
||||
divHtml += '<br />';
|
||||
divHtml += '<div style="padding-left: 10px; padding-top: 10px;">';
|
||||
divHtml += '<div style="color:green;">正确答案:' + data.testdetail[i].question__right + '</div>';
|
||||
if (data.testdetail[i].iscore == 0) {
|
||||
divHtml += '<div style="color:red;">您的答案错误:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
else {
|
||||
divHtml += '<div style="color:green;">您的答案正确:' + data.testdetail[i].userchecked + '</div>';
|
||||
}
|
||||
divHtml += '<div style="margin-top: 10px;color: #4f3b08;font-size:13px;">' + (data.testdetail[i].question_resolution == undefined ? '本题无解析!' : data.testdetail[i].question_resolution) + '</div>';
|
||||
}
|
||||
$("#examtype1").append(divHtml);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
error: function () {
|
||||
return false;
|
||||
},
|
||||
async: false
|
||||
});
|
||||
|
||||
|
||||
|
||||
</script>
|
|
@ -60,16 +60,16 @@
|
|||
<table class='detailtable'>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:10%">
|
||||
序号
|
||||
</th>
|
||||
<th style="width:10%">
|
||||
序号
|
||||
</th>
|
||||
<th style="width:20%">
|
||||
姓名
|
||||
</th>
|
||||
<th style="width:30%">
|
||||
部门
|
||||
</th>
|
||||
<th style="width:20%">
|
||||
部门
|
||||
</th>
|
||||
<th style="width:15%">
|
||||
状态
|
||||
</th>
|
||||
<th style="width:10%">
|
||||
|
@ -78,6 +78,9 @@
|
|||
<th style="width:10%">
|
||||
用时
|
||||
</th>
|
||||
<th style="width:15%">
|
||||
答题详情
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{{each cjrydetail}}
|
||||
|
@ -92,6 +95,7 @@
|
|||
{{/if}}
|
||||
<td>{{$value.score}}</td>
|
||||
<td>{{$value.took}}</td>
|
||||
<td><a target="_blank" href="/html/examhistory/{{$value.id}}" >点击查看</a></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</table>
|
||||
|
@ -183,4 +187,6 @@
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
</script>
|
|
@ -99,7 +99,7 @@
|
|||
<tr>
|
||||
<td>法律法规名称:</td>
|
||||
<td>
|
||||
<input id="maragename" class="easyui-textbox" name="maragename" style="width:480px">
|
||||
<input id="maragename" class="easyui-textbox" name="maragename" readonly="readonly" style="width:480px">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
@ -113,7 +113,7 @@
|
|||
<tr>
|
||||
<td>法律法规分类:</td>
|
||||
<td>
|
||||
<input id="maragetype" class="easyui-combotree" name="maragetype" style="width:480px" data-options="url:'rlt/api/lawstype?a=tree2',loadFilter: function (rows) {
|
||||
<input id="maragetype" class="easyui-combotree" name="maragetype" style="width:480px" data-options="url:'rlt/api/lawstype?a=tree',loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},">
|
||||
</td>
|
||||
|
@ -158,7 +158,7 @@
|
|||
<a class="list" href="javascript:;">
|
||||
<input id="file" type="file" name="maragepath" onchange="UpladFile();" /><span>选择文件</span>
|
||||
</a>
|
||||
<button class="btn" type="button" onclick="sub();">上传</button>
|
||||
|
||||
|
||||
</p>
|
||||
<!--显示消失-->
|
||||
|
@ -219,7 +219,7 @@
|
|||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
alert("数据保存!");
|
||||
$('#edutab').datagrid('reload');
|
||||
$('#tmtable').datagrid('reload');
|
||||
$("#dd").dialog("close");
|
||||
} else { $.messager.alert('提示', '失败!'); }
|
||||
$('#submitb').linkbutton('enable');
|
||||
|
@ -241,37 +241,37 @@
|
|||
//$("#maragename").text(fileObj.name);
|
||||
|
||||
$("#maragename").textbox('setValue', 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,超出了上传大小," + "请选择10M以内的文件!");
|
||||
return false;
|
||||
}
|
||||
var url = "rlt/api/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 {
|
||||
alert("请选择文件");
|
||||
}
|
||||
}
|
||||
|
||||
/*点击提交*/
|
||||
function sub() {
|
||||
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以内的文件!");
|
||||
return false;
|
||||
}
|
||||
var url = "rlt/api/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数据
|
||||
}
|
||||
|
||||
|
||||
//上传进度实现方法,上传过程中会频繁调用该方法
|
||||
function progressFunction(evt) {
|
||||
|
|
|
@ -263,7 +263,7 @@ float: left;">
|
|||
|
||||
<div style="width:70%;float:left;height:100%;margin-top: 10px;" align=center>
|
||||
<div style="margin-left:10px;margin-right: 10px">
|
||||
<div id="panelx" class="easyui-panel" title="各指标数量趋势" data-options="iconCls:'fa-bar-chart',closable:true,
|
||||
<div class="easyui-panel" title="各指标数量趋势" data-options="iconCls:'fa-bar-chart',closable:true,
|
||||
collapsible:true,"
|
||||
align=center style="height:100%">
|
||||
<div id='gzbqst' style="width:90%;height:500px;"></div>
|
||||
|
@ -326,6 +326,12 @@ float: left;">
|
|||
|
||||
</div>
|
||||
|
||||
<div style="width:98%;margin-left:1%;margin-right:1%;height:800px">
|
||||
<div id="panelx" class="easyui-panel" data-options="iconCls:'fa-bar-chart'" >
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
//首页总数统计
|
||||
$.ajax({
|
||||
|
@ -372,13 +378,12 @@ float: left;">
|
|||
|
||||
<script>
|
||||
var data=JSON.parse(localStorage.getItem("data"));
|
||||
bindmap9('gzbqst')
|
||||
if(data.rights.indexOf('30')!=-1){ //有无地图功能
|
||||
$('#panelx').panel({
|
||||
href:'html/mapshow',
|
||||
title:'地图展示'
|
||||
})
|
||||
}else{
|
||||
bindmap9('gzbqst')
|
||||
}
|
||||
$("#sfxbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
|
|
|
@ -0,0 +1,312 @@
|
|||
<style type="text/css">
|
||||
|
||||
#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;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="easyui-layout" style="width:100%;height:100%;">
|
||||
<form id="edu" method="post" name="edu" enctype="multipart/form-data">
|
||||
<div data-options="region:'center'" style="padding:15px 15px;">
|
||||
|
||||
<table class="listTab">
|
||||
<tr>
|
||||
<td>制度标题:</td>
|
||||
<td>
|
||||
<input id="title" class="easyui-textbox" name="mgtname" style="width:480px">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>上传时间:</td>
|
||||
<td>
|
||||
<input id="submittime" editable="false" name="publisdate" class="easyui-datetimebox" style="width:480px"
|
||||
data-options="currentText:'今天',closeText:'关闭',showSeconds:false" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr>
|
||||
<td>所属类别:</td>
|
||||
<td>
|
||||
<input id="mgttype" name="type" class="easyui-textbox" style="width:480px">
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<div id="content">
|
||||
|
||||
<p class="_p">
|
||||
<span>选择文件: </span>
|
||||
<!--文件选择按钮-->
|
||||
<a class="list" href="javascript:;">
|
||||
<input id="file" type="file" name="myfile" onchange="UpladFile();" /><span>选择文件</span>
|
||||
</a>
|
||||
|
||||
|
||||
</p>
|
||||
<!--显示消失-->
|
||||
<ul class="el-upload-list el-upload-list--text" style="display: none;list-style-type:none">
|
||||
<li tabindex="0" class="el-upload-list__item is-success">
|
||||
<a class="el-upload-list__item-name">
|
||||
<i class="el-icon-document"></i><span class="ploadname" id="videoName">food.jpeg</span>
|
||||
</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
<span id="url" style="display:none"></span>
|
||||
<!--进度条-->
|
||||
<div class="el-progress el-progress--line" style="display: none;">
|
||||
<div class='container'>
|
||||
<span id="progress"></span>
|
||||
|
||||
</div>
|
||||
<!--上传速度显示-->
|
||||
<span id="time"></span>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div id='southdiv' data-options="region:'south'" style="height:50px;text-align:center;padding:5px">
|
||||
<a href="javascript:void(0)" iconCls="fa-check" class="easyui-linkbutton" onclick="wssubmitForm()" id="submitb">提交</a>
|
||||
<a href="javascript:void(0)" iconCls="fa-close" class="easyui-linkbutton" onclick="closeForm()">取消</a>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$("#mgttype").combobox({
|
||||
url: 'mgt/getdickey?dicclass=55',
|
||||
valueField: 'value',
|
||||
textField: 'text',
|
||||
editable: false,
|
||||
});
|
||||
|
||||
function wssubmitForm() {
|
||||
|
||||
|
||||
var edudata = $('#edu').serializeJSON();
|
||||
edudata['filepath'] = document.getElementById('url').innerHTML;
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: 'mgt/api?a=add',
|
||||
data: JSON.stringify(edudata),
|
||||
datatype: "json",
|
||||
processData: false,
|
||||
contentType: "application/json;charset=utf-8",
|
||||
beforeSend: function () {
|
||||
var bo = $('#edu').form('validate')
|
||||
if (bo == false) {
|
||||
return bo
|
||||
} else {
|
||||
$('#submitb').linkbutton('disable');
|
||||
}
|
||||
},
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
alert("数据保存!");
|
||||
$('#mgttab').datagrid('reload');
|
||||
$("#dd").dialog("close");
|
||||
} else { $.messager.alert('提示', '失败!'); }
|
||||
$('#submitb').linkbutton('enable');
|
||||
},
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
var xhr;//异步请求对象
|
||||
var ot; //时间
|
||||
var oloaded;//大小
|
||||
//上传文件方法
|
||||
function UpladFile() {
|
||||
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以内的视频!");
|
||||
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 {
|
||||
alert("请选择文件");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//上传进度实现方法,上传过程中会频繁调用该方法
|
||||
function progressFunction(evt) {
|
||||
// event.total是需要传输的总字节,event.loaded是已经传输的字节。如果event.lengthComputable不为真,则event.total等于0
|
||||
if (evt.lengthComputable) {
|
||||
|
||||
$(".el-progress--line").css("display", "block");
|
||||
var percent = Math.round(evt.loaded * 100 / evt.total);
|
||||
|
||||
/*进度条显示进度*/
|
||||
document.getElementById('progress').innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
|
||||
document.getElementById('progress').style.width = percent.toFixed(2) + '%';
|
||||
|
||||
}
|
||||
|
||||
var time = document.getElementById("time");
|
||||
var nt = new Date().getTime(); //获取当前时间
|
||||
var pertime = (nt - ot) / 1000; //计算出上次调用该方法时到现在的时间差,单位为s
|
||||
ot = new Date().getTime(); //重新赋值时间,用于下次计算
|
||||
|
||||
var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b
|
||||
oloaded = evt.loaded; //重新赋值已上传文件大小,用以下次计算
|
||||
|
||||
//上传速度计算
|
||||
var speed = perload / pertime; //单位b/s
|
||||
var bspeed = speed;
|
||||
var units = 'b/s'; //单位名称
|
||||
if (speed / 1024 > 1) {
|
||||
speed = speed / 1024;
|
||||
units = 'k/s';
|
||||
}
|
||||
if (speed / 1024 > 1) {
|
||||
speed = speed / 1024;
|
||||
units = 'M/s';
|
||||
}
|
||||
speed = speed.toFixed(1);
|
||||
//剩余时间
|
||||
var resttime = ((evt.total - evt.loaded) / bspeed).toFixed(1);
|
||||
time.innerHTML = '上传速度:' + speed + units + ',剩余时间:' + resttime + 's';
|
||||
if (bspeed == 0)
|
||||
time.innerHTML = '上传已取消';
|
||||
}
|
||||
//上传成功响应
|
||||
function uploadComplete(evt) {
|
||||
//服务断接收完文件返回的结果 注意返回的字符串要去掉双引号
|
||||
|
||||
if (evt.target.responseText) {
|
||||
var data = JSON.parse(evt.target.responseText);
|
||||
if (data.code = 1) {
|
||||
|
||||
var str = data.filepath;
|
||||
document.getElementById('url').innerHTML = str;
|
||||
alert("上传成功!");
|
||||
$(".preview").append("<video controls='' autoplay='' style='width:200px;height;200px' name='media'><source src=" + str + " type='video/mp4'></video>");
|
||||
}
|
||||
} else {
|
||||
alert("上传失败");
|
||||
}
|
||||
}
|
||||
//上传失败
|
||||
function uploadFailed(evt) {
|
||||
alert("上传失败!");
|
||||
}
|
||||
|
||||
|
||||
</script>
|
|
@ -0,0 +1,78 @@
|
|||
|
||||
<div id="edubar" style="padding: 4px;height: 40px;background-color:#FCFCFC">
|
||||
<div style="width: 500px;padding: 5px;">
|
||||
<a id="addedu" class="easyui-linkbutton" onclick="javascript:opendg('新增文件','mgt/add')" data-options="iconCls: 'fa-plus',plain:true">新增</a>
|
||||
<a id="deledu" class="easyui-linkbutton" onclick="deledu()" data-options="iconCls: 'fa-trash',plain:true">删除</a>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<table id="mgttab" style="width:100%;height:100%;text-align: center;"></table>
|
||||
<script>
|
||||
|
||||
$('#mgttab').datagrid({
|
||||
url: 'mgt/api?a=listall',
|
||||
rownumbers: true,
|
||||
singleSelect: true,
|
||||
striped: true,
|
||||
fitColumns: true,
|
||||
method: 'get',
|
||||
pagination: 'true',
|
||||
pageSize: 20,
|
||||
border: false,
|
||||
toolbar:'#edubar',
|
||||
columns: [[
|
||||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'mgtname', title: '制度名称', width: 100 },
|
||||
{ field: 'type__dickeyname', title: '制度类别', width: 100 },
|
||||
{ field: 'publisdate', title: '上传时间', width: 100 },
|
||||
{ field: 'createuser__name', title: '创建人', width: 100 },
|
||||
|
||||
{
|
||||
field: 'mgtpath', title: '点击观看', width: 100, formatter: function (value, row, index) {
|
||||
return '<a style="color:blue" target="_blank" href="' + row.mgtpath + '" id="one">点击查看</a>';
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
]]
|
||||
});
|
||||
|
||||
|
||||
function deledu() {
|
||||
var row = $('#mgttab').datagrid('getSelected');
|
||||
if (row) {
|
||||
$.messager.confirm('提示', '确定删除吗?', function (r) {
|
||||
if (r) {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url: 'mgt/api?a=del',
|
||||
data: { 'id': row.id },
|
||||
datatype: "json",
|
||||
beforeSend: function () { },
|
||||
success: function (data) {
|
||||
if (data.code == 1) {
|
||||
$("#mgttab").datagrid('reload');
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '你无权删除该条管理制度!');
|
||||
}
|
||||
},
|
||||
complete: function (XMLHttpRequest, textStatus) {
|
||||
},
|
||||
error: function () {
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
else {
|
||||
$.messager.alert('提示', '请选择一行数据!');
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
|
@ -101,7 +101,7 @@
|
|||
{ field: 'lookplace', title: '观察地点', width: 150 },
|
||||
{ field: 'actname', title: '作业名称', width: 200 },
|
||||
{ field: 'looktime', title: '观察时间', width: 200 },
|
||||
{ field: 'looker__name', title: '观察人', width: 200 },
|
||||
{ field: 'looker__name', title: '观察记录人', width: 200 },
|
||||
{ field: 'lookeder', title: '被观察对象', width: 200 },
|
||||
{ field: 'otherunsafe', title: '过程和交流记录', width: 300 },
|
||||
]]
|
||||
|
|
|
@ -14,7 +14,10 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td style="width:50%">所属部门:{{lookpart__partname}}</td>
|
||||
<td style="width:50%">观察人:{{looker__name}}</td>
|
||||
<td>观察人记录人:{{looker__name}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">观察人员:{{lookers}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>开始时间:{{looktime| dateFormat 'yyyy-MM-dd hh:mm'}}</td>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
required=true />
|
||||
</div>
|
||||
<div style="margin-bottom:5px">
|
||||
<input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人'"
|
||||
<input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人',multiple:true"
|
||||
required=true />
|
||||
</div>
|
||||
</form>
|
||||
|
@ -22,9 +22,13 @@
|
|||
<script>
|
||||
$('#spbm').combotree({ url: 'parthandle?a=tree', loadFilter: function(rows){
|
||||
return convert(rows);
|
||||
},onSelect: function (node) { $('#spr').combobox({ url: 'getuser?partid=' + node.id + '&a=combobox', }); } });
|
||||
},onSelect: function (node) { $('#spr').combobox({
|
||||
url: 'getuser?partid=' + node.id + '&a=combobox',
|
||||
}); } });
|
||||
function spjdsubmitForm() {
|
||||
var spjddata = $('#spjdff').serializeJSON();
|
||||
spjddata['spr'] = $('#spr').combobox('getValues')
|
||||
console.log(spjddata)
|
||||
spjddata['zylx'] = $('#zylxlist').datalist('getSelected').value
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
|
|
|
@ -72,6 +72,10 @@
|
|||
<input id="B" class="easyui-textbox" name="B" style="width:480px;" data-options="label:'选项B'," value="错" editable=false/>
|
||||
<input name="right" type="radio" value="B" />
|
||||
</div>
|
||||
<div style="margin-top:5px;margin-bottom:5px">
|
||||
<input id="resolution" class="easyui-textbox" name="resolution" style="width:480px;height:80px"
|
||||
data-options="label:'解析',multiline:true" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -93,6 +93,7 @@
|
|||
//$('#station').combobox('setValue',res.station__groupid)
|
||||
$('#label').textbox('setValue',res.label)
|
||||
$('#title').textbox('setValue',res.title)
|
||||
$('#resolution').textbox('setValue',res.resolution)
|
||||
for(var key in res.answer){
|
||||
$('#'+key).textbox('setValue',res.answer[key])
|
||||
}
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
//$('#station').combobox('setValue',res.station__groupid)
|
||||
$('#label').textbox('setValue',res.label)
|
||||
$('#title').textbox('setValue',res.title)
|
||||
$('#resolution').textbox('setValue',res.resolution)
|
||||
for(var key in res.answer){
|
||||
$('#'+key).textbox('setValue',res.answer[key])
|
||||
}
|
||||
|
|
|
@ -72,6 +72,10 @@
|
|||
<input id="B" class="easyui-textbox" name="B" style="width:480px;" data-options="label:'选项B'," value="错" editable=false/>
|
||||
<input id="Bcheck" name="right" type="radio" value="B" />
|
||||
</div>
|
||||
<div style="margin-top:5px;margin-bottom:5px">
|
||||
<input id="resolution" class="easyui-textbox" name="resolution" style="width:480px;height:80px"
|
||||
data-options="label:'解析',multiline:true" />
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -83,6 +87,7 @@
|
|||
// $('#station').combobox('setValue',res.station__groupid)
|
||||
$('#label').textbox('setValue',res.label)
|
||||
$('#title').textbox('setValue',res.title)
|
||||
$('#resolution').textbox('setValue',res.resolution)
|
||||
for(var key in res.answer){
|
||||
$('#'+key).textbox('setValue',res.answer[key])
|
||||
}
|
||||
|
|
|
@ -39,6 +39,10 @@
|
|||
<input id="jtwz" class="easyui-textbox" name="place" style="width:480px" data-options="label:'具体位置'"
|
||||
/>
|
||||
</div>
|
||||
<div style="margin-top:10px;margin-bottom:5px">
|
||||
<input id="group" class="easyui-combobox" name="group" style="width:480px" data-options="label:'所属岗位',url:'grouphandle?a=combobox'"
|
||||
required=true editable=false/>
|
||||
</div>
|
||||
<div style="margin-top:10px;margin-bottom:5px">
|
||||
<select id="gkcj" class="easyui-combobox" name="gkcj" style="width:480px" data-options="label:'管控层级'"
|
||||
required=true editable=false>
|
||||
|
@ -80,7 +84,7 @@
|
|||
$('#fxdmc').textbox('setValue',data.name)
|
||||
$('#jtwz').textbox('setValue',data.place)
|
||||
$('#qrcode').attr('src',data.qrcode)
|
||||
$('#group').combobox('setValue', res.group__groupid)
|
||||
$('#group').combobox('setValue', data.group__groupid)
|
||||
$("#zrbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
onSelect: function (node) {
|
||||
|
|
|
@ -94,6 +94,20 @@
|
|||
{ field: 'dqxz', title: '当前现状', width: 200 },
|
||||
{ field: 'jynr', title: '建议内容', width: 400 },
|
||||
{ field: 'jyfk', title: '建议反馈', width: 400 },
|
||||
{
|
||||
field: 'accept', title: '建议状态', width: 80, styler: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 1: return 'background-color:green;'; break;
|
||||
case 0: return 'background-color:red;'; break;
|
||||
|
||||
}
|
||||
}, formatter: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 1: return '已采纳'; break;
|
||||
case 0: return '未采纳'; break;
|
||||
}
|
||||
}
|
||||
},
|
||||
]]
|
||||
});
|
||||
function addjy(){
|
||||
|
|
|
@ -116,12 +116,13 @@
|
|||
{ field: 'todouser__userid', hidden: true },
|
||||
{ field: 'sybzt', hidden: true },
|
||||
{
|
||||
field: 'shresult', title: '整改结果状态', width: 100, styler: function (value, row, index) {
|
||||
field: 'shresult', title: '隐患状态', width: 100, styler: function (value, row, index) {
|
||||
switch (value) {
|
||||
case 1: return ''; break;
|
||||
case 2: return 'background-color:red;'; break;
|
||||
case 3: return 'background-color:red;'; break;
|
||||
case 4: return 'background-color:yellow;'; break;
|
||||
case 6: return 'background-color:yellow;'; break;
|
||||
}
|
||||
}, formatter: function (value, row, index) {
|
||||
switch (value) {
|
||||
|
@ -130,6 +131,7 @@
|
|||
case 3: return '复查未通过'; break;
|
||||
case 4: return '已修改'; break;
|
||||
case 5: return '评估未通过'; break;
|
||||
case 6: return '未采纳'; break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
{ field: 'id', title: 'ID', hidden: true },
|
||||
{ field: 'jdmc', title: '节点名称', width: 40 },
|
||||
{ field: 'spbm__partname', title: '审批部门', width: 120 },
|
||||
{ field: 'spr__name', title: '审批人', width: 120 },
|
||||
{ field: 'sprnames', title: '审批人', width: 120 },
|
||||
]]
|
||||
});
|
||||
$('#fxcstable').datagrid({
|
||||
|
|
|
@ -148,7 +148,7 @@ urlpatterns = [
|
|||
#path('api/riskactcheck',views.apiriskactcheck),
|
||||
path('api/riskcheck2',views.apiriskcheck2),
|
||||
path('api/report',views.apireport),
|
||||
|
||||
path('html/examhistory/<int:id>/',views.examhistory),
|
||||
|
||||
|
||||
#path('api/rights/group/<int:groupid>',views.rightsgroup),
|
||||
|
@ -172,4 +172,5 @@ urlpatterns = [
|
|||
path('datashow/charthandle', views.charthandle),
|
||||
path('companyinfo/', views.companyinfo),
|
||||
path('rlt/',include('safesite.rlt.urls')),
|
||||
path('mgt/',include('safesite.mgt.urls')),
|
||||
]
|
||||
|
|
|
@ -14,7 +14,7 @@ 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,yjjs_gc,yjjs_ws
|
||||
from .export import exportdoc,exportxlsx,exportyjdoc,exportsimplexlsx,exportdoc2
|
||||
from .daoru import drusers,drequipments,drrisks,cal_riskact_level,cal_area_risk_level,makeqr,makeqr2,makeqr3,makeqr4
|
||||
from .daoru import drusers,drequipments,drrisks,cal_riskact_level,cal_area_risk_level,makeqr,makeqr_train,makeqr_riskact,makeqr_examtest,makeqr_area
|
||||
from django.forms.models import model_to_dict
|
||||
from .safespider import getTzzs,getAqzs
|
||||
from duibiao import calsim
|
||||
|
@ -135,6 +135,8 @@ def exampaperadd(req):
|
|||
return render(req,'exampaperadd.html')
|
||||
def exampaper(req):
|
||||
return render(req,'exampaper.html')
|
||||
def examhistory(req,id):
|
||||
return render(req,'examhistory.html',{'id':id})
|
||||
def questionadd(req):
|
||||
return render(req,'questionadd.html')
|
||||
def questionadd2(req):
|
||||
|
@ -480,6 +482,32 @@ def getspr(ubp):
|
|||
return User.objects.get(ubelongpart=currentpart,issuper=1)
|
||||
return a
|
||||
|
||||
def getsprs(ubp):
|
||||
currentpart=ubp
|
||||
a=getsprs_ubp(currentpart)
|
||||
while a==False:
|
||||
currentpart=currentpart.parentid #已找不到上级部门
|
||||
if currentpart:
|
||||
a=getsprs_ubp(currentpart)
|
||||
else:
|
||||
return User.objects.get(ubelongpart=currentpart,issuper=1)
|
||||
return a
|
||||
|
||||
def getsprs_ubp(ubp):
|
||||
a=ubp
|
||||
if a.aqy !=',':
|
||||
aqystr = a.aqy
|
||||
aqylist = aqystr.split(',')
|
||||
aqylist = list(map(int, list(filter(None, aqylist))))
|
||||
return aqylist
|
||||
if a.bmzg !=',':
|
||||
zgstr = a.bmzg
|
||||
zglist = zgstr.split(',')
|
||||
zglist = list(map(int, list(filter(None, zglist))))
|
||||
return zglist
|
||||
else:
|
||||
return False
|
||||
|
||||
@check_login
|
||||
def menutree(req):
|
||||
userid = req.session['userid']
|
||||
|
@ -945,29 +973,55 @@ def accessyh(req):
|
|||
return JsonResponse({"code":1})
|
||||
elif a.yhzt==1:
|
||||
if yhdata['shresult'] == 'reject':
|
||||
a.shresult = 5
|
||||
a.yhzt = 0
|
||||
a.sybzt = 1
|
||||
a.todouser = a.fxr
|
||||
a.pgyj = yhdata['pgyj']
|
||||
a.save()
|
||||
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=0,action='请'+a.fxr.name+'重新填报',result=0)
|
||||
m.save()
|
||||
postdict={
|
||||
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
|
||||
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
|
||||
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
|
||||
'data':{
|
||||
'first':{'value':a.yhdj.dickeyname + '被退出需重新上报:'},
|
||||
'keyword1':{'value':a.yhms},
|
||||
'keyword2':{'value':a.fxsj},
|
||||
'keyword3':{'value':a.yhdd},
|
||||
'remark':{'value':'请查看评估意见并修改后上传。'}
|
||||
if 'accept' in yhdata:
|
||||
if yhdata['accept'] == 'no':
|
||||
a.shresult = 6
|
||||
a.yhzt = 6
|
||||
a.sybzt = 1
|
||||
a.todouser = None
|
||||
a.pgyj = yhdata['pgyj']
|
||||
a.save()
|
||||
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=6,action='未采纳',opinion=yhdata['pgyj'])
|
||||
m.save()
|
||||
postdict={
|
||||
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
|
||||
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
|
||||
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
|
||||
'data':{
|
||||
'first':{'value':a.yhdj.dickeyname + '未被采纳:'},
|
||||
'keyword1':{'value':a.yhms},
|
||||
'keyword2':{'value':a.fxsj},
|
||||
'keyword3':{'value':a.yhdd},
|
||||
'remark':{'value':'请查看未采纳原因'}
|
||||
}
|
||||
}
|
||||
postdict['touser']=a.fxr.openid
|
||||
send_wechatmsg.delay(postdict)
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
a.shresult = 5
|
||||
a.yhzt = 0
|
||||
a.sybzt = 1
|
||||
a.todouser = a.fxr
|
||||
a.pgyj = yhdata['pgyj']
|
||||
a.save()
|
||||
m=TroubleAccess(troubleid=a,clr=a.pgr,yhzt=0,action='请'+a.fxr.name+'重新填报',result=0)
|
||||
m.save()
|
||||
postdict={
|
||||
'touser':'oPGqkweX75QtLmgehUN-ipR4hcyc',
|
||||
'template_id':'lOuwSE67vZC3ZVFYPZvz2eb7JdFxqx7ysMFkXrYmYh0',
|
||||
"miniprogram":{"appid":"wx5c39b569f01c27db","path":"pages/trouble/accesstrouble?troubleid="+str(a.troubleid)},
|
||||
'data':{
|
||||
'first':{'value':a.yhdj.dickeyname + '被退出需重新上报:'},
|
||||
'keyword1':{'value':a.yhms},
|
||||
'keyword2':{'value':a.fxsj},
|
||||
'keyword3':{'value':a.yhdd},
|
||||
'remark':{'value':'请查看评估意见并修改后上传。'}
|
||||
}
|
||||
}
|
||||
}
|
||||
postdict['touser']=a.todouser.openid
|
||||
send_wechatmsg.delay(postdict)
|
||||
return JsonResponse({"code":1})
|
||||
postdict['touser']=a.todouser.openid
|
||||
send_wechatmsg.delay(postdict)
|
||||
return JsonResponse({"code":1})
|
||||
elif 'zppg' in yhdata and yhdata['zppg']=='yes':
|
||||
a.yhzt=1
|
||||
a.sybzt=1
|
||||
|
@ -1213,7 +1267,7 @@ def addtrain(req):
|
|||
a.duration=req.POST.get('duration')
|
||||
a.trainnum='PX'+time.strftime('%Y%m%d%H%M%S')
|
||||
a.save()
|
||||
a.checkqr = makeqr2('https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(a.trainid))
|
||||
a.checkqr = makeqr_train('https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(a.trainid))
|
||||
a.save()
|
||||
plist=req.POST.getlist('trainpart')
|
||||
ustr = req.POST.get('participant')
|
||||
|
@ -1473,13 +1527,15 @@ def troublehandle(req):
|
|||
userid = req.session['userid']
|
||||
if User.objects.get(userid = userid).issuper == 1:
|
||||
a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
|
||||
a.delete()
|
||||
a.deletemark=0
|
||||
a.save()
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
|
||||
b = TroubleAccess.objects.filter(troubleid__troubleid=req.POST.get('troubleid')).count()
|
||||
if b == 1 and a.fxr.userid==userid:
|
||||
a.delete()
|
||||
a.deletemark=0
|
||||
a.save()
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
return JsonResponse({"code":0})
|
||||
|
@ -2543,12 +2599,18 @@ def gchandle(req):
|
|||
if 'lookimg' in gcdata:
|
||||
obj.lookimg = '?'.join(gcdata['lookimg'])
|
||||
obj.save()
|
||||
if 'lookers' in gcdata:
|
||||
ulist=gcdata['lookers'].split(',')
|
||||
for i in ulist:
|
||||
x=User.objects.get(userid=i)
|
||||
obj.lookers.add(x)
|
||||
if 'unsafe' in gcdata:
|
||||
olist = gcdata['unsafe']
|
||||
for i in olist:
|
||||
dickey = Dickey.objects.get(dickeyid=i)
|
||||
m = Unsafes(observe = obj,unsafedickey=dickey,unsafedicclass=dickey.dicparent)
|
||||
m.save()
|
||||
if i != 0:
|
||||
dickey = Dickey.objects.get(dickeyid=i)
|
||||
m = Unsafes(observe = obj,unsafedickey=dickey,unsafedicclass=dickey.dicparent)
|
||||
m.save()
|
||||
yjjs_gc.delay(companyid)
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'listall':
|
||||
|
@ -2621,9 +2683,10 @@ def gchandle(req):
|
|||
x['lookimg'] = x['lookimg'].split('?')
|
||||
else:
|
||||
x['lookimg']=[]
|
||||
for key in x:
|
||||
if x[key] == None:
|
||||
x[key] = ''
|
||||
x['lookers']=[]
|
||||
for i in a[0].lookers.all():
|
||||
x['lookers'].append(i.name)
|
||||
x['lookers']=','.join(x['lookers'])
|
||||
Observeto.objects.get_or_create(observe=a[0], user=User.objects.get(userid=req.session['userid']),defaults={'read': 1})
|
||||
return HttpResponse(json.dumps(x,cls=MyEncoder),content_type="application/json")
|
||||
elif a == 'getdics':
|
||||
|
@ -3345,19 +3408,19 @@ def apipartuser(req):
|
|||
if req.GET.get('parentid')=='company':
|
||||
lst=[]
|
||||
company = User.objects.get(userid=userid).usecomp
|
||||
partobjs = Partment.objects.filter(parentid=company)
|
||||
partobjs = Partment.objects.filter(parentid=company,deletemark=1)
|
||||
for i in partobjs:
|
||||
lst.append({'id':i.partid,'name':i.partname,'parentId':0,'checked':False,'isPeople':False,'children':[]})
|
||||
userobjs = User.objects.filter(ubelongpart=company).exclude(issuper=1)
|
||||
userobjs = User.objects.filter(ubelongpart=company,deletemark=1).exclude(issuper=1)
|
||||
for i in userobjs:
|
||||
lst.append({'id':i.userid,'name':i.name,'parentId':0,'checked':False,'isPeople':True,'children':[]})
|
||||
return JsonResponse({"code":1,"data":lst})
|
||||
else:
|
||||
lst=[]
|
||||
partobjs = Partment.objects.filter(parentid=req.GET.get('parentid'))
|
||||
partobjs = Partment.objects.filter(parentid=req.GET.get('parentid'),deletemark=1)
|
||||
for i in partobjs:
|
||||
lst.append({'id':i.partid,'name':i.partname,'parentId':0,'checked':False,'isPeople':False,'children':[]})
|
||||
userobjs = User.objects.filter(ubelongpart=req.GET.get('parentid')).exclude(issuper=1)
|
||||
userobjs = User.objects.filter(ubelongpart=req.GET.get('parentid'),deletemark=1).exclude(issuper=1)
|
||||
for i in userobjs:
|
||||
lst.append({'id':i.userid,'name':i.name,'parentId':0,'checked':False,'isPeople':True,'children':[]})
|
||||
return JsonResponse({"code":1,"data":lst})
|
||||
|
@ -3463,7 +3526,7 @@ def apisuggest(req):
|
|||
a = Suggest.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('-submittime')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a == 'listself':
|
||||
userid = req.session['userid']
|
||||
|
@ -3471,7 +3534,7 @@ def apisuggest(req):
|
|||
a = Suggest.objects.filter(jyr__userid=userid).order_by('-submittime')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a == 'listtodo':
|
||||
userid = req.session['userid']
|
||||
|
@ -3479,7 +3542,7 @@ def apisuggest(req):
|
|||
a = Suggest.objects.filter(todouser__userid=userid).order_by('-submittime')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a == 'todonum':
|
||||
userid = req.session['userid']
|
||||
|
@ -3488,7 +3551,7 @@ def apisuggest(req):
|
|||
elif a == 'detail':
|
||||
jyid=req.GET.get('jyid')
|
||||
a = Suggest.objects.filter(jyid=jyid)
|
||||
x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj')[0]
|
||||
x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj','accept')[0]
|
||||
if x['jyimg']!='':
|
||||
x['jyimg'] = x['jyimg'].split('?')
|
||||
else:
|
||||
|
@ -3518,7 +3581,7 @@ def apisuggest(req):
|
|||
if req.GET.get('jssj'):
|
||||
a = a.filter(submittime__lte=req.GET.get('jssj'))
|
||||
total = a.count()
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime')
|
||||
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a == 'exportexcel':
|
||||
userid = req.session['userid']
|
||||
|
@ -3560,6 +3623,15 @@ def apisuggest(req):
|
|||
obj.save()
|
||||
Suggestflow.objects.create(suggest=obj,user=User.objects.get(userid=userid),action='转交'+user.name+'评估')
|
||||
return JsonResponse({"code":1})
|
||||
elif 'accept' in data:
|
||||
if data['accept'] == 'no':
|
||||
obj.jyzt = 4
|
||||
obj.todouser = None
|
||||
obj.jyfk = data['jyfk']
|
||||
obj.accept = 0
|
||||
obj.save()
|
||||
Suggestflow.objects.create(suggest=obj,user=User.objects.get(userid=userid),action='未采纳该建议')
|
||||
return JsonResponse({"code":1})
|
||||
else:
|
||||
obj.jyzt = 4
|
||||
obj.todouser = None
|
||||
|
@ -3620,7 +3692,7 @@ def apitool(req):
|
|||
return JsonResponse({'code':1,'clist':clist})
|
||||
elif a == 'correct_train_qr':
|
||||
for i in Train.objects.all():
|
||||
i.checkqr = makeqr2('https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(i.trainid))
|
||||
i.checkqr = makeqr_train('https://safeyun.ctcshe.com/miniprogram/checktrain?trainid='+str(i.trainid))
|
||||
i.save()
|
||||
return JsonResponse({'code':1})
|
||||
elif a == 'correct_teacher':
|
||||
|
@ -3631,12 +3703,17 @@ def apitool(req):
|
|||
return JsonResponse({'code':1})
|
||||
elif a == 'correct_riskact_qr':
|
||||
for i in RiskAct.objects.all():
|
||||
i.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(i.id))
|
||||
i.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(i.id))
|
||||
i.save()
|
||||
return JsonResponse({'code':1})
|
||||
elif a == 'correct_examtest_qr':
|
||||
for i in ExamTest.objects.all():
|
||||
i.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(i.id))
|
||||
i.qrcode = makeqr_examtest('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(i.id))
|
||||
i.save()
|
||||
return JsonResponse({'code':1})
|
||||
elif a == 'correct_area_qr':
|
||||
for i in Area.objects.all():
|
||||
i.qrcode = makeqr_area('https://safeyun.ctcshe.com/miniprogram/area?id='+str(i.id))
|
||||
i.save()
|
||||
return JsonResponse({'code':1})
|
||||
elif a == 'correct_risk':
|
||||
|
@ -3681,11 +3758,23 @@ def apitool(req):
|
|||
newpart = req.GET.get('part')
|
||||
username = req.GET.get('username')
|
||||
user = User.objects.get(username=username)
|
||||
oldpart = user.ubelongpart
|
||||
oldpart.aqy = oldpart.aqy.replace(','+str(user.userid)+',','')
|
||||
oldpart.bmzg = oldpart.bmzg.replace(','+str(user.userid)+',','')
|
||||
oldpart.bsq = oldpart.bsq.replace(','+str(user.userid)+',','')
|
||||
oldpart.save()
|
||||
part = Partment.objects.get(partid=newpart)
|
||||
companyid = part.partlink.split(',')[1]
|
||||
if part.iscompany==1:
|
||||
usecomp = part
|
||||
else:
|
||||
usecomp = Partment.objects.get(partid=part.partlink.split(',')[1])
|
||||
user.ubelongpart = part
|
||||
user.usecomp = Partment.objects.get(partid=companyid)
|
||||
user.usecomp = usecomp
|
||||
user.save()
|
||||
for i in Group.objects.filter(usecomp=usecomp):
|
||||
i.users.remove(user)
|
||||
groupobj = Group.objects.filter(usecomp=usecomp,grouptype=3).first()
|
||||
groupobj.users.add(user)
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'correctionzs':
|
||||
objs = Socertificate.objects.all()
|
||||
|
@ -3928,13 +4017,14 @@ def apioperation(req):
|
|||
obj.zyzt = {'zyzt':'确认中','index':0}
|
||||
obj.save()
|
||||
splc = []
|
||||
splc.append({'jdmc':'作业部门审批','spr':getspr(obj.zybm)})
|
||||
splc.append({'jdmc':'属地部门审批','spr':getspr(obj.sdbm)})
|
||||
splc.append({'jdmc':'作业负责人审批','sprs':[userid]})
|
||||
splc.append({'jdmc':'作业部门审批','sprs':getsprs(obj.zybm)})
|
||||
splc.append({'jdmc':'属地部门审批','sprs':getsprs(obj.sdbm)})
|
||||
for i in Operationspjd.objects.filter(zylx=obj.zylx,usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'):
|
||||
splc.append({'jdmc':i.jdmc,'spr':i.spr.userid})
|
||||
splc.append({'jdmc':i.jdmc,'sprs':i.sprs})
|
||||
obj.zyzt['splc']=splc
|
||||
obj.save()
|
||||
Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
|
||||
# Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
|
||||
b=[]#发送通知
|
||||
for i in data['zyry']:
|
||||
x=User.objects.get(userid=i)
|
||||
|
@ -3989,7 +4079,7 @@ def apioperation(req):
|
|||
for x in b:
|
||||
i.append(x.oper.zyid)
|
||||
a = Operation.objects.filter(usecomp=usecomp,deletemark=1,zyid__in=i)
|
||||
a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))).order_by('-submittime')
|
||||
a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))|Operation.objects.filter(todousers__contains=[userid])).order_by('-submittime')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('zyid','zylx__dickeyname','zynum','zyfzr__name','zynr','zyzt','submittime')
|
||||
|
@ -4028,7 +4118,8 @@ def apioperation(req):
|
|||
return res
|
||||
elif a == 'qrzy':
|
||||
userid = req.session['userid']
|
||||
zyid = req.POST.get('zyid')
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
zyid = data['zyid']
|
||||
Operzyry.objects.filter(oper__zyid=zyid,operzyry__userid=userid).update(checked=1)
|
||||
if Operzyry.objects.filter(oper__zyid=zyid,checked=0).exists():
|
||||
pass
|
||||
|
@ -4039,14 +4130,57 @@ def apioperation(req):
|
|||
obj.zyzt['index'] = 0
|
||||
index = obj.zyzt['index']
|
||||
obj.zyzt['jdmc'] = obj.zyzt['splc'][index]['jdmc']
|
||||
obj.todouser = User.objects.get(userid=obj.zyzt['splc'][index]['spr'])
|
||||
if 'sprs' in obj.zyzt['splc'][index]:
|
||||
sprs = obj.zyzt['splc'][index]['sprs']
|
||||
else:
|
||||
sprs = [obj.zyzt['splc'][index]['spr']]
|
||||
obj.todousers = sprs
|
||||
obj.save()
|
||||
for i in sprs:
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':User.objects.get(userid=i).openid,
|
||||
'data':{
|
||||
'first':{
|
||||
'value':obj.zylx.dickeyname + '作业审批:'
|
||||
},
|
||||
'keyword1':{
|
||||
'value':obj.zynr
|
||||
},
|
||||
'keyword2':{
|
||||
'value':obj.kssj
|
||||
},
|
||||
'keyword3':{
|
||||
'value':obj.zydd
|
||||
},
|
||||
'remark':{
|
||||
'value':'请您及时完成审批!'
|
||||
}
|
||||
}
|
||||
}
|
||||
send_wechatmsg.delay(postdict)
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'spzy':
|
||||
userid = req.session['userid']
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
zyid = data['zyid']
|
||||
obj = Operation.objects.get(zyid=zyid)
|
||||
oldtodo = obj.todousers
|
||||
oldjdmc = obj.zyzt['jdmc']
|
||||
nextindex = obj.zyzt['index']+1
|
||||
spruser = User.objects.get(userid=userid)
|
||||
if 'zzsp' in data:
|
||||
obj.zyzt['zyzt'] = '待关闭'
|
||||
obj.todouser = obj.zyfzr
|
||||
obj.todousers = None
|
||||
obj.save()
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':obj.todouser.openid,
|
||||
'template_id':obj.zyfzr.openid,
|
||||
'data':{
|
||||
'first':{
|
||||
'value':obj.zylx.dickeyname + '作业审批:'
|
||||
'value':obj.zylx.dickeyname + '作业审批通过:'
|
||||
},
|
||||
'keyword1':{
|
||||
'value':obj.zynr
|
||||
|
@ -4058,53 +4192,79 @@ def apioperation(req):
|
|||
'value':obj.zydd
|
||||
},
|
||||
'remark':{
|
||||
'value':'请您及时完成审批!'
|
||||
'value':'你是作业负责人,可以开始作业,作业完成请及时关闭!'
|
||||
}
|
||||
}
|
||||
}
|
||||
send_wechatmsg.delay(postdict)
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'spzy':
|
||||
zyid = req.POST.get('zyid')
|
||||
obj = Operation.objects.get(zyid=zyid)
|
||||
oldtodo = obj.todouser
|
||||
oldjdmc = obj.zyzt['jdmc']
|
||||
nextindex = obj.zyzt['index']+1
|
||||
return JsonResponse({"code":1})
|
||||
if 'zjsp' in data:
|
||||
newsprs = data['newsprs']#新审批人
|
||||
obj.todousers = newsprs
|
||||
obj.save()
|
||||
for i in newsprs:
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':User.objects.get(userid=i).openid,
|
||||
'data':{
|
||||
'first':{
|
||||
'value':obj.zylx.dickeyname + '作业审批:'
|
||||
},
|
||||
'keyword1':{
|
||||
'value':obj.zynr
|
||||
},
|
||||
'keyword2':{
|
||||
'value':obj.kssj
|
||||
},
|
||||
'keyword3':{
|
||||
'value':obj.zydd
|
||||
},
|
||||
'remark':{
|
||||
'value':'请您及时完成审批!'
|
||||
}
|
||||
}
|
||||
}
|
||||
send_wechatmsg.delay(postdict)
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=2,spbm=spruser.ubelongpart)
|
||||
return JsonResponse({"code":1})
|
||||
try:
|
||||
nextsplc = obj.zyzt['splc'][nextindex]
|
||||
obj.zyzt['zyzt'] = '审批中'
|
||||
obj.zyzt['index'] = nextindex
|
||||
obj.zyzt['jdmc'] = nextsplc['jdmc']
|
||||
obj.todouser = User.objects.get(userid=nextsplc['spr'])
|
||||
obj.todousers = nextsplc['sprs']
|
||||
obj.save()
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':obj.todouser.openid,
|
||||
'data':{
|
||||
'first':{
|
||||
'value':obj.zylx.dickeyname + '作业审批:'
|
||||
},
|
||||
'keyword1':{
|
||||
'value':obj.zynr
|
||||
},
|
||||
'keyword2':{
|
||||
'value':obj.kssj
|
||||
},
|
||||
'keyword3':{
|
||||
'value':obj.zydd
|
||||
},
|
||||
'remark':{
|
||||
'value':'请您及时完成审批!'
|
||||
for i in nextsplc['sprs']:
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':User.objects.get(userid=i).openid,
|
||||
'data':{
|
||||
'first':{
|
||||
'value':obj.zylx.dickeyname + '作业审批:'
|
||||
},
|
||||
'keyword1':{
|
||||
'value':obj.zynr
|
||||
},
|
||||
'keyword2':{
|
||||
'value':obj.kssj
|
||||
},
|
||||
'keyword3':{
|
||||
'value':obj.zydd
|
||||
},
|
||||
'remark':{
|
||||
'value':'请您及时完成审批!'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
send_wechatmsg.delay(postdict)
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart)
|
||||
send_wechatmsg.delay(postdict)
|
||||
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
|
||||
except :
|
||||
obj.zyzt['zyzt'] = '待关闭'
|
||||
obj.todouser = obj.zyfzr
|
||||
obj.todouser = None
|
||||
obj.todousers = [obj.zyfzr.userid]
|
||||
obj.save()
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart)
|
||||
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
|
||||
postdict={
|
||||
'touser':'',
|
||||
'template_id':obj.zyfzr.openid,
|
||||
|
@ -4137,13 +4297,14 @@ def apioperation(req):
|
|||
obj.zyimg2 = '?'.join(zyimg2)
|
||||
obj.zyzt['zyzt']='已关闭'
|
||||
obj.todouser = None
|
||||
obj.todousers = None
|
||||
obj.save()
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'todonum':
|
||||
userid = req.session['userid']
|
||||
i = []
|
||||
b = Operzyry.objects.filter(operzyry__userid=userid,checked=0)
|
||||
c = Operation.objects.filter(todouser=User.objects.get(userid=userid))
|
||||
c = Operation.objects.filter(Q(todouser=User.objects.get(userid=userid))|Q(todousers__contains=[userid]))
|
||||
for x in b:
|
||||
i.append(x.oper.zyid)
|
||||
for x in c:
|
||||
|
@ -4227,8 +4388,9 @@ def apioperationspjd(req):
|
|||
zylx = Dickey.objects.get(dickeyid=data['zylx'])
|
||||
jdmc = data['jdmc']
|
||||
spbm = Partment.objects.get(partid=data['spbm'])
|
||||
spr = User.objects.get(userid=data['spr'])
|
||||
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,spr=spr,usecomp=Partment.objects.get(partid=companyid))
|
||||
#spr = User.objects.get(userid=data['spr'])
|
||||
sprs = data['spr']
|
||||
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,sprs=sprs,usecomp=Partment.objects.get(partid=companyid))
|
||||
return JsonResponse({"code":1})
|
||||
elif a=='listall':
|
||||
if req.GET.get('zylx'):
|
||||
|
@ -4237,8 +4399,9 @@ def apioperationspjd(req):
|
|||
companyid = getcompany(userid)
|
||||
a = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=zylx),usecomp=Partment.objects.get(partid=companyid)).order_by('id')
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a[startnum:endnum].values('id','jdmc','spbm__partname','spr__name')
|
||||
a = a.values('id','jdmc','spbm__partname','sprs')
|
||||
for i in a:
|
||||
i['sprnames'] = list(User.objects.filter(userid__in=i['sprs']).values_list('name',flat=True))
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a == 'del':
|
||||
id = req.GET.get('id')
|
||||
|
@ -4506,7 +4669,7 @@ def apiexamtest(req):
|
|||
obj.duration = data['duration']
|
||||
obj.createuser = User.objects.get(userid=userid)
|
||||
obj.save()
|
||||
obj.qrcode = makeqr4('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
|
||||
obj.qrcode = makeqr_examtest('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
|
||||
obj.save()
|
||||
ksry = data['participant'].split(',')
|
||||
b = []
|
||||
|
@ -4584,7 +4747,7 @@ def apiexamtest(req):
|
|||
obj.passscore = data['passscore']
|
||||
obj.duration = data['duration']
|
||||
obj.createuser = User.objects.get(userid=userid)
|
||||
obj.qrcode = makeqr4('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
|
||||
obj.qrcode = makeqr_examtest('https://safeyun.ctcshe.com/miniprogram/examtest?id='+str(obj.id))
|
||||
obj.save()
|
||||
ksry = data['participant'].split(',')
|
||||
b = []
|
||||
|
@ -4745,7 +4908,7 @@ def apiexamtestdetail(req):
|
|||
elif a == 'detail':
|
||||
id = req.GET.get('id')
|
||||
obj = ExamTestDetail.objects.filter(id=id)
|
||||
data = obj.values('id','starttime','took','score','testdetail')[0]
|
||||
data = obj.values('id','starttime','took','score','passcode','testdetail','examtest__name','user__headimgurl','user__name')[0]
|
||||
return JsonResponse(data)
|
||||
|
||||
def apitrain(req):
|
||||
|
@ -4857,7 +5020,8 @@ def apiarea(req):
|
|||
return JsonResponse({"code":0})
|
||||
map = data['map']
|
||||
order = data['order']
|
||||
Area.objects.create(name = name,order=order,belongmap=Map.objects.get(id=map),usecomp=Partment.objects.get(partid=companyid))
|
||||
obj = Area.objects.create(name = name,order=order,belongmap=Map.objects.get(id=map),usecomp=Partment.objects.get(partid=companyid))
|
||||
makeqr_area('https://safeyun.ctcshe.com/miniprogram/area?id='+str(obj.id))
|
||||
return JsonResponse({"code":1})
|
||||
elif a == 'del':
|
||||
if User.objects.get(userid=userid).issuper==1:
|
||||
|
@ -4866,7 +5030,7 @@ def apiarea(req):
|
|||
else:
|
||||
return JsonResponse({"code":0})
|
||||
elif a == 'detail':
|
||||
obj = Area.objects.filter(deletemark=1,id=req.GET.get('id')).values('id','name','polygon','order')[0]
|
||||
obj = Area.objects.filter(deletemark=1,id=req.GET.get('id')).values('id','name','polygon','order','qrcode')[0]
|
||||
return JsonResponse(obj)
|
||||
elif a == 'edit':
|
||||
data = json.loads(req.body.decode('utf-8'))
|
||||
|
@ -5078,6 +5242,13 @@ def apiriskact(req):
|
|||
startnum,endnum=fenye(req)
|
||||
a = a.order_by('area')[startnum:endnum].values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a=='listall2':
|
||||
a = RiskAct.objects
|
||||
if req.GET.get('area'):
|
||||
a = a.filter(area__id = req.GET.get('area'))
|
||||
total = a.count()
|
||||
a = a.values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj')
|
||||
return HttpResponse(transjson(total,a),content_type="application/json")
|
||||
elif a=='listself':
|
||||
groups = Group.objects.filter(users=User.objects.get(userid=userid))
|
||||
objs = RiskAct.objects.filter(group__in=groups)
|
||||
|
@ -5102,7 +5273,7 @@ def apiriskact(req):
|
|||
obj.zrr = User.objects.get(userid=data['zrr'])
|
||||
obj.group = Group.objects.get(groupid=data['group'])
|
||||
obj.save()
|
||||
obj.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
||||
obj.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
||||
obj.save()
|
||||
return JsonResponse({'code':1})
|
||||
elif a == 'edit':
|
||||
|
@ -5441,8 +5612,8 @@ def apiriskacttask(req):
|
|||
startnum,endnum=fenye(req)
|
||||
objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable')
|
||||
return HttpResponse(transjson(total,objs),content_type="application/json")
|
||||
elif a == 'listself':
|
||||
a = RiskActTask.objects.filter(user__userid=userid,istask=1)
|
||||
elif a == 'listself':#排查记录
|
||||
a = RiskActTask.objects.filter(user__userid=userid)
|
||||
total = a.count()
|
||||
startnum,endnum=fenye(req)
|
||||
a = a.order_by('-id')[startnum:endnum].values('id','riskact__level','riskact__name','riskact__area__name','riskact__place','taskdo','state','usable','riskact__group__groupname','taskadd','taskexpire','user__userid','riskact__id')
|
||||
|
|
Loading…
Reference in New Issue