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.Dickey)
|
||||
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): # 菜单
|
||||
menuid = models.AutoField(primary_key=True)
|
||||
menuname = models.CharField(max_length=30, blank=True, null=True)
|
||||
menucode = models.CharField(max_length=30, blank=True, null=True)
|
||||
url = models.CharField(max_length=30, blank=True, null=True)
|
||||
detail = models.CharField(max_length=100, blank=True, null=True)
|
||||
type_choices = (
|
||||
(1, '菜单'),
|
||||
(2, '按钮'),
|
||||
)
|
||||
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(
|
||||
'self', blank=True, null=True, on_delete=models.CASCADE)
|
||||
icon = models.CharField(max_length=100, blank=True, null=True)
|
||||
sortnum = models.IntegerField(default=1)
|
||||
deletemark = models.IntegerField(default=1)
|
||||
type = models.IntegerField(default=1)#1是菜单,2是按钮
|
||||
'self', blank=True, null=True, on_delete=models.CASCADE,verbose_name='上级')
|
||||
icon = models.CharField(max_length=100, blank=True, null=True,verbose_name='图标')
|
||||
sortnum = models.IntegerField(default=1,verbose_name='排序号')
|
||||
deletemark = models.IntegerField(default=1,verbose_name='删除标记')
|
||||
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): # 预警预测表
|
||||
|
|
|
@ -164,6 +164,9 @@ function convertmenu(rows) {
|
|||
var row = rows[i];
|
||||
if (row.parentid == node.id) {
|
||||
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) {
|
||||
node.children.push(child);
|
||||
} else {
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
var row = $('#kstable').datagrid('getSelected');
|
||||
if (row) {
|
||||
var url = 'html/examtest/detail/' + row.id
|
||||
opendg('查看详情',url)
|
||||
opendg('查看详情',url,1000)
|
||||
}
|
||||
else { $.messager.alert('提示', '请选择一行数据!'); }
|
||||
}
|
||||
|
|
|
@ -75,6 +75,9 @@
|
|||
<th style="width:10%">
|
||||
得分
|
||||
</th>
|
||||
<th style="width:15%">
|
||||
参考时间
|
||||
</th>
|
||||
<th style="width:10%">
|
||||
用时
|
||||
</th>
|
||||
|
@ -98,6 +101,7 @@
|
|||
<td><font color="green">已参加</font></td>
|
||||
{{/if}}
|
||||
<td>{{$value.score}}</td>
|
||||
<td>{{$value.starttime}}</td>
|
||||
<td>{{$value.took}}</td>
|
||||
|
||||
<td><a target="_blank" href="/html/examhistory/{{$value.id}}">点击查看</a></td>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
animate: true,
|
||||
checkbox: true,
|
||||
lines: true,
|
||||
cascadeCheck :false,
|
||||
cascadeCheck :true,
|
||||
loadFilter: function (rows) {
|
||||
var rows = convertmenu(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>
|
||||
</div>
|
||||
<div>
|
||||
|
||||
{% load myfilter %}
|
||||
{% if request|has_permission:'b_trouble_add' %}
|
||||
<a id="addyh" onclick="javascript:opendg('新增隐患','addtrouble?a=addyh')">新增</a>
|
||||
{% endif %}
|
||||
<a id="doyh" onclick="doyh()">处理</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="detailyh2" onclick="detailyh()">查看详情</a>
|
||||
|
||||
{% if request|has_permission:'b_trouble_import' %}
|
||||
<a onclick="javascript:$('#drtroubledg').dialog('open').window('center');" class="easyui-linkbutton"
|
||||
data-options="iconCls:'fa-upload',plain:true">导入待整改隐患</a>
|
||||
{% endif %}
|
||||
{% if request|has_permission:'b_trouble_exportdoc' %}
|
||||
<a id="exportword" onclick="exportyhword()">导出Word</a>
|
||||
{% endif %}
|
||||
|
||||
{% if request|has_permission:'b_trouble_exportxls' %}
|
||||
<a id="exportexcel" onclick="exportyhexcel()">导出Excel</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
<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">
|
||||
|
@ -58,7 +68,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<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">
|
||||
<p style="color:red;margin-left: 10px">请按模板录入后导入</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',
|
||||
editable: false,
|
||||
});
|
||||
$.get('parthandle?a=tree',function(res){
|
||||
var data = convert(res);
|
||||
$("#sfxbm,#szgbm").combotree().combotree('loadData',data);
|
||||
})
|
||||
// $("#sfxbm,#szgbm").combotree({
|
||||
// url: 'parthandle?a=tree',
|
||||
// editable: false,
|
||||
// loadFilter: function (rows) {
|
||||
// return convert(rows);
|
||||
// },
|
||||
// // formatter: function (node) {
|
||||
// // var s = node.text;
|
||||
// // if (node.children) {
|
||||
// // s += ' <span style=\'color:blue\'>(' + node.children.length + ')</span>';
|
||||
// // }
|
||||
// // return s;
|
||||
// // },
|
||||
// // onSelect: function (node) {
|
||||
// // $('#sfxr').combobox({
|
||||
// // url: 'getuser?partid=' + node.id + '&a=combobox',
|
||||
// // editable: false,
|
||||
// // });
|
||||
// // }
|
||||
// });
|
||||
|
||||
// $.get('parthandle?a=tree',function(res){
|
||||
// var data = convert(res);
|
||||
// $('#sfxbm,#szgbm').combotree();
|
||||
// $("#sfxbm").combotree('loadData',data);
|
||||
// $("#szgbm").combotree('loadData',data);
|
||||
// })
|
||||
$("#sfxbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
editable: false,
|
||||
loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},
|
||||
});
|
||||
$("#szgbm").combotree({
|
||||
url: 'parthandle?a=tree',
|
||||
editable: false,
|
||||
loadFilter: function (rows) {
|
||||
return convert(rows);
|
||||
},
|
||||
});
|
||||
function detailyh() {
|
||||
var row = $('#yhtable').datagrid('getSelected');
|
||||
if (row) {
|
||||
|
|
|
@ -831,7 +831,7 @@ def apirights(req):
|
|||
allrights = Group.objects.get(
|
||||
usecomp__partid=companyid, grouptype=0).menulist
|
||||
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:
|
||||
if i['menuid'] in haverights:
|
||||
i['checked'] = True
|
||||
|
@ -4718,7 +4718,16 @@ def apitool(req):
|
|||
i.menulist = list(set(list(filter(None, i.menulink.split(',')))))
|
||||
i.save()
|
||||
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):
|
||||
|
@ -5875,7 +5884,7 @@ def apiexamtest(req):
|
|||
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]
|
||||
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['ison'] = 1
|
||||
tests = ExamTestDetail.objects.filter(examtest__id=id,user__userid=userid)#考试记录
|
||||
|
|
Loading…
Reference in New Issue