button control

This commit is contained in:
caoqianming 2019-12-25 13:39:18 +08:00
parent 9cd9836656
commit 3453a33f0c
8 changed files with 81 additions and 42 deletions

View File

@ -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)

View File

@ -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): # 预警预测表

View File

@ -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 {

View File

@ -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('提示', '请选择一行数据!'); }
}

View File

@ -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>

View File

@ -14,7 +14,7 @@
animate: true,
checkbox: true,
lines: true,
cascadeCheck :false,
cascadeCheck :true,
loadFilter: function (rows) {
var rows = convertmenu(rows)
return rows;

View File

@ -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 += '&nbsp;<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) {

View File

@ -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)#考试记录