button control
This commit is contained in:
parent
9cd9836656
commit
3453a33f0c
|
@ -6,3 +6,12 @@ admin.site.register(models.Trouble)
|
||||||
admin.site.register(models.Dicclass)
|
admin.site.register(models.Dicclass)
|
||||||
admin.site.register(models.Dickey)
|
admin.site.register(models.Dickey)
|
||||||
admin.site.register(models.Partment)
|
admin.site.register(models.Partment)
|
||||||
|
|
||||||
|
@admin.register(models.Menu)
|
||||||
|
class Menuadmin(admin.ModelAdmin):
|
||||||
|
list_display = ('menuname','menucode','type','url')
|
||||||
|
list_display_links = ('menuname',)
|
||||||
|
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
||||||
|
if db_field.name == "parentid":
|
||||||
|
kwargs["queryset"] = models.Menu.objects.filter(type=1)
|
||||||
|
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
|
@ -372,17 +372,26 @@ class Groupuser2(models.Model): # 比较好的方式
|
||||||
|
|
||||||
|
|
||||||
class Menu(models.Model): # 菜单
|
class Menu(models.Model): # 菜单
|
||||||
menuid = models.AutoField(primary_key=True)
|
type_choices = (
|
||||||
menuname = models.CharField(max_length=30, blank=True, null=True)
|
(1, '菜单'),
|
||||||
menucode = models.CharField(max_length=30, blank=True, null=True)
|
(2, '按钮'),
|
||||||
url = models.CharField(max_length=30, blank=True, null=True)
|
)
|
||||||
detail = models.CharField(max_length=100, blank=True, null=True)
|
menuid = models.AutoField(primary_key=True,verbose_name='ID')
|
||||||
|
menuname = models.CharField(max_length=30, blank=True, null=True,verbose_name='名称')
|
||||||
|
menucode = models.CharField(max_length=30, blank=True, null=True,verbose_name='菜单标识')
|
||||||
|
url = models.CharField(max_length=30, blank=True, null=True,verbose_name='操作地址')
|
||||||
|
detail = models.CharField(max_length=100, blank=True, null=True,verbose_name='描述')
|
||||||
parentid = models.ForeignKey(
|
parentid = models.ForeignKey(
|
||||||
'self', blank=True, null=True, on_delete=models.CASCADE)
|
'self', blank=True, null=True, on_delete=models.CASCADE,verbose_name='上级')
|
||||||
icon = models.CharField(max_length=100, blank=True, null=True)
|
icon = models.CharField(max_length=100, blank=True, null=True,verbose_name='图标')
|
||||||
sortnum = models.IntegerField(default=1)
|
sortnum = models.IntegerField(default=1,verbose_name='排序号')
|
||||||
deletemark = models.IntegerField(default=1)
|
deletemark = models.IntegerField(default=1,verbose_name='删除标记')
|
||||||
type = models.IntegerField(default=1)#1是菜单,2是按钮
|
type = models.IntegerField(default=1,choices=type_choices,verbose_name='类型')#1是菜单,2是按钮
|
||||||
|
class Meta:
|
||||||
|
verbose_name = '菜单&按钮'
|
||||||
|
verbose_name_plural = "菜单&按钮"
|
||||||
|
def __str__(self):
|
||||||
|
return self.menuname+self.menucode
|
||||||
|
|
||||||
|
|
||||||
class Yjyc(models.Model): # 预警预测表
|
class Yjyc(models.Model): # 预警预测表
|
||||||
|
|
|
@ -164,6 +164,9 @@ function convertmenu(rows) {
|
||||||
var row = rows[i];
|
var row = rows[i];
|
||||||
if (row.parentid == node.id) {
|
if (row.parentid == node.id) {
|
||||||
var child = { id: row.menuid, text: row.menuname, attributes: row.url, iconCls: row.icon, checked: row.checked };
|
var child = { id: row.menuid, text: row.menuname, attributes: row.url, iconCls: row.icon, checked: row.checked };
|
||||||
|
if (row.type!=1){
|
||||||
|
node.state = 'closed'
|
||||||
|
}
|
||||||
if (node.children) {
|
if (node.children) {
|
||||||
node.children.push(child);
|
node.children.push(child);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -125,7 +125,7 @@
|
||||||
var row = $('#kstable').datagrid('getSelected');
|
var row = $('#kstable').datagrid('getSelected');
|
||||||
if (row) {
|
if (row) {
|
||||||
var url = 'html/examtest/detail/' + row.id
|
var url = 'html/examtest/detail/' + row.id
|
||||||
opendg('查看详情',url)
|
opendg('查看详情',url,1000)
|
||||||
}
|
}
|
||||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,9 @@
|
||||||
<th style="width:10%">
|
<th style="width:10%">
|
||||||
得分
|
得分
|
||||||
</th>
|
</th>
|
||||||
|
<th style="width:15%">
|
||||||
|
参考时间
|
||||||
|
</th>
|
||||||
<th style="width:10%">
|
<th style="width:10%">
|
||||||
用时
|
用时
|
||||||
</th>
|
</th>
|
||||||
|
@ -98,6 +101,7 @@
|
||||||
<td><font color="green">已参加</font></td>
|
<td><font color="green">已参加</font></td>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<td>{{$value.score}}</td>
|
<td>{{$value.score}}</td>
|
||||||
|
<td>{{$value.starttime}}</td>
|
||||||
<td>{{$value.took}}</td>
|
<td>{{$value.took}}</td>
|
||||||
|
|
||||||
<td><a target="_blank" href="/html/examhistory/{{$value.id}}">点击查看</a></td>
|
<td><a target="_blank" href="/html/examhistory/{{$value.id}}">点击查看</a></td>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
animate: true,
|
animate: true,
|
||||||
checkbox: true,
|
checkbox: true,
|
||||||
lines: true,
|
lines: true,
|
||||||
cascadeCheck :false,
|
cascadeCheck :true,
|
||||||
loadFilter: function (rows) {
|
loadFilter: function (rows) {
|
||||||
var rows = convertmenu(rows)
|
var rows = convertmenu(rows)
|
||||||
return rows;
|
return rows;
|
||||||
|
|
|
@ -10,17 +10,27 @@
|
||||||
<a onclick="javascript:$('#sdg_yh').dialog('open')" class="easyui-linkbutton" data-options="iconCls: 'fa-search',plain:true">详细筛选</a>
|
<a onclick="javascript:$('#sdg_yh').dialog('open')" class="easyui-linkbutton" data-options="iconCls: 'fa-search',plain:true">详细筛选</a>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
|
{% load myfilter %}
|
||||||
|
{% if request|has_permission:'b_trouble_add' %}
|
||||||
<a id="addyh" onclick="javascript:opendg('新增隐患','addtrouble?a=addyh')">新增</a>
|
<a id="addyh" onclick="javascript:opendg('新增隐患','addtrouble?a=addyh')">新增</a>
|
||||||
|
{% endif %}
|
||||||
<a id="doyh" onclick="doyh()">处理</a>
|
<a id="doyh" onclick="doyh()">处理</a>
|
||||||
<a id="delyh" onclick="delyh()">删除</a>
|
<a id="delyh" onclick="delyh()">删除</a>
|
||||||
<a id="duibiao" class='easyui-linkbutton' onclick="duibiao()" data-options="iconCls: 'fa-thumb-tack',plain:true">对标</a>
|
<a id="duibiao" class='easyui-linkbutton' onclick="duibiao()" data-options="iconCls: 'fa-thumb-tack',plain:true">对标</a>
|
||||||
|
|
||||||
<a id="detailyh2" onclick="detailyh()">查看详情</a>
|
<a id="detailyh2" onclick="detailyh()">查看详情</a>
|
||||||
|
|
||||||
|
{% if request|has_permission:'b_trouble_import' %}
|
||||||
<a onclick="javascript:$('#drtroubledg').dialog('open').window('center');" class="easyui-linkbutton"
|
<a onclick="javascript:$('#drtroubledg').dialog('open').window('center');" class="easyui-linkbutton"
|
||||||
data-options="iconCls:'fa-upload',plain:true">导入待整改隐患</a>
|
data-options="iconCls:'fa-upload',plain:true">导入待整改隐患</a>
|
||||||
|
{% endif %}
|
||||||
|
{% if request|has_permission:'b_trouble_exportdoc' %}
|
||||||
<a id="exportword" onclick="exportyhword()">导出Word</a>
|
<a id="exportword" onclick="exportyhword()">导出Word</a>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if request|has_permission:'b_trouble_exportxls' %}
|
||||||
<a id="exportexcel" onclick="exportyhexcel()">导出Excel</a>
|
<a id="exportexcel" onclick="exportyhexcel()">导出Excel</a>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div id="sdg_yh" class="easyui-dialog" title="筛选条件" style="width:400px;height:420px;"
|
<div id="sdg_yh" class="easyui-dialog" title="筛选条件" style="width:400px;height:420px;"
|
||||||
data-options="iconCls:'fa-search',resizable:true,modal:true,closed:true,border:false">
|
data-options="iconCls:'fa-search',resizable:true,modal:true,closed:true,border:false">
|
||||||
|
@ -58,7 +68,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table id="yhtable" style="width:100%;height:100%;"></table>
|
<table id="yhtable" style="width:100%;height:100%;"></table>
|
||||||
<div id="drtroubledg" class="easyui-dialog" title="导入风险" style="width:400px;height:200px;"
|
<div id="drtroubledg" class="easyui-dialog" title="导入隐患" style="width:400px;height:200px;"
|
||||||
data-options="iconCls:'fa-upload',resizable:true,modal:true,closed:true,border:false">
|
data-options="iconCls:'fa-upload',resizable:true,modal:true,closed:true,border:false">
|
||||||
<p style="color:red;margin-left: 10px">请按模板录入后导入</p>
|
<p style="color:red;margin-left: 10px">请按模板录入后导入</p>
|
||||||
<p style="margin-left: 10px"><a href="/static/safesite/muban/trouble.xlsx" target="_blank">点击下载模板</a></p>
|
<p style="margin-left: 10px"><a href="/static/safesite/muban/trouble.xlsx" target="_blank">点击下载模板</a></p>
|
||||||
|
@ -229,31 +239,26 @@ data-options="iconCls:'fa-upload',resizable:true,modal:true,closed:true,border:f
|
||||||
url: 'getdickey?dicclass=19&a=combobox',
|
url: 'getdickey?dicclass=19&a=combobox',
|
||||||
editable: false,
|
editable: false,
|
||||||
});
|
});
|
||||||
$.get('parthandle?a=tree',function(res){
|
// $.get('parthandle?a=tree',function(res){
|
||||||
var data = convert(res);
|
// var data = convert(res);
|
||||||
$("#sfxbm,#szgbm").combotree().combotree('loadData',data);
|
// $('#sfxbm,#szgbm').combotree();
|
||||||
})
|
// $("#sfxbm").combotree('loadData',data);
|
||||||
// $("#sfxbm,#szgbm").combotree({
|
// $("#szgbm").combotree('loadData',data);
|
||||||
// url: 'parthandle?a=tree',
|
// })
|
||||||
// editable: false,
|
$("#sfxbm").combotree({
|
||||||
// loadFilter: function (rows) {
|
url: 'parthandle?a=tree',
|
||||||
// return convert(rows);
|
editable: false,
|
||||||
// },
|
loadFilter: function (rows) {
|
||||||
// // formatter: function (node) {
|
return convert(rows);
|
||||||
// // var s = node.text;
|
},
|
||||||
// // if (node.children) {
|
});
|
||||||
// // s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
|
$("#szgbm").combotree({
|
||||||
// // }
|
url: 'parthandle?a=tree',
|
||||||
// // return s;
|
editable: false,
|
||||||
// // },
|
loadFilter: function (rows) {
|
||||||
// // onSelect: function (node) {
|
return convert(rows);
|
||||||
// // $('#sfxr').combobox({
|
},
|
||||||
// // url: 'getuser?partid=' + node.id + '&a=combobox',
|
});
|
||||||
// // editable: false,
|
|
||||||
// // });
|
|
||||||
// // }
|
|
||||||
// });
|
|
||||||
|
|
||||||
function detailyh() {
|
function detailyh() {
|
||||||
var row = $('#yhtable').datagrid('getSelected');
|
var row = $('#yhtable').datagrid('getSelected');
|
||||||
if (row) {
|
if (row) {
|
||||||
|
|
|
@ -831,7 +831,7 @@ def apirights(req):
|
||||||
allrights = Group.objects.get(
|
allrights = Group.objects.get(
|
||||||
usecomp__partid=companyid, grouptype=0).menulist
|
usecomp__partid=companyid, grouptype=0).menulist
|
||||||
menus = Menu.objects.exclude(menuid__in=[11, 9]).filter(menuid__in=allrights, deletemark=1).order_by(
|
menus = Menu.objects.exclude(menuid__in=[11, 9]).filter(menuid__in=allrights, deletemark=1).order_by(
|
||||||
'menuid').values('menuid', 'menucode', 'parentid', 'url', 'menuname', 'icon').distinct()
|
'menuid').values('menuid', 'menucode', 'parentid', 'url', 'menuname', 'icon','type').distinct()
|
||||||
for i in menus:
|
for i in menus:
|
||||||
if i['menuid'] in haverights:
|
if i['menuid'] in haverights:
|
||||||
i['checked'] = True
|
i['checked'] = True
|
||||||
|
@ -4718,7 +4718,16 @@ def apitool(req):
|
||||||
i.menulist = list(set(list(filter(None, i.menulink.split(',')))))
|
i.menulist = list(set(list(filter(None, i.menulink.split(',')))))
|
||||||
i.save()
|
i.save()
|
||||||
return JsonResponse({"code": 1})
|
return JsonResponse({"code": 1})
|
||||||
|
elif a == 'correct_menuhas':
|
||||||
|
buttons = Menu.objects.filter(type=2)
|
||||||
|
for group in Group.objects.filter(grouptype=0):
|
||||||
|
menulist = group.menulist
|
||||||
|
for button in buttons:
|
||||||
|
if button.parentid.menuid in menulist: #如果菜单在所拥有权限内
|
||||||
|
menulist.append(button.menuid)
|
||||||
|
group.menulist = list(set(menulist))
|
||||||
|
group.save()
|
||||||
|
return JsonResponse({"code": 1})
|
||||||
|
|
||||||
|
|
||||||
def apinotice(req):
|
def apinotice(req):
|
||||||
|
@ -5875,7 +5884,7 @@ def apiexamtest(req):
|
||||||
a = ExamTest.objects.filter(id=id).values('id', 'num', 'name', 'starttime', 'endtime', 'duration', 'totalscore',
|
a = ExamTest.objects.filter(id=id).values('id', 'num', 'name', 'starttime', 'endtime', 'duration', 'totalscore',
|
||||||
'passscore', 'exampaper__total', 'createtime', 'state', 'exampaper__name', 'createuser__name', 'type', 'qrcode')[0]
|
'passscore', 'exampaper__total', 'createtime', 'state', 'exampaper__name', 'createuser__name', 'type', 'qrcode')[0]
|
||||||
objs = ExamTestDetail.objects.filter(examtest__id=id).order_by('-score').values(
|
objs = ExamTestDetail.objects.filter(examtest__id=id).order_by('-score').values(
|
||||||
'id', 'user__name', 'user__ubelongpart__partname', 'took', 'score', 'ison', 'passcode')
|
'id', 'user__name', 'user__ubelongpart__partname', 'took', 'score', 'ison', 'passcode','starttime')
|
||||||
a['cjrydetail'] = list(objs)
|
a['cjrydetail'] = list(objs)
|
||||||
a['ison'] = 1
|
a['ison'] = 1
|
||||||
tests = ExamTestDetail.objects.filter(examtest__id=id,user__userid=userid)#考试记录
|
tests = ExamTestDetail.objects.filter(examtest__id=id,user__userid=userid)#考试记录
|
||||||
|
|
Loading…
Reference in New Issue