Files
erp-site/application/views/settings/authority-setting.php
2026-04-19 01:39:41 +08:00

228 lines
7.4 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php $this->load->view('header');?>
<script type="text/javascript">
var DOMAIN = document.domain;
var WDURL = "";
var SCHEME= "<?php echo sys_skin()?>";
try{
document.domain = '<?php echo base_url()?>';
}catch(e){
}
</script>
</head>
<body>
<div class="wrapper">
<div class="mod-toolbar-top cf">
<div class="fl"><h3 class="f14">详细权限设置<span class="fwn">(请勾选为 <b id="userName"></b> 分配的权限)</span></h3></div>
<div class="fr"><a class="ui-btn ui-btn-sp mrb" id="save">确定</a><a class="ui-btn" href="<?php echo site_url('settings/authority')?>">返回</a></div>
</div>
<div class="grid-wrap">
<table id="grid">
</table>
<div id="page"></div>
</div>
</div>
<script>
var urlParam = Public.urlParam(), userName = urlParam.userName, curGroup;
var height = Public.setGrid().h;
var relation = {
"购货单":[{name:'商品',rights:['查询']},{name:'仓库',rights:['查询']},{name:'供应商',rights:['查询']}],
"销货单":[{name:'商品',rights:['查询']},{name:'仓库',rights:['查询']},{name:'客户',rights:['查询']}],
"调拨单":[{name:'商品',rights:['查询']},{name:'仓库',rights:['查询']}]
},
$grid = $('#grid'),
RelationalMapping = {};//Rowid与名字的映射
$('#userName').text(userName);
$("#grid").jqGrid({
url:'../right/queryalluserright?userName=' + userName,
datatype: "json",
//caption: "科目余额表",
autowidth: true,//如果为ture时则当表格在首次被创建时会根据父元素比例重新调整表格宽度。如果父元素宽度改变为了使表格宽度能够自动调整则需要实现函数setGridWidth
//width: width,
height: height,
altRows: true, //设置隔行显示
//rownumbers: true,//如果为ture则会在表格左边新增一列显示行顺序号从1开始递增。此列名为'rn'
//gridview: true,
colNames:['<input type="checkbox" id="all" class="vm">', '功能列表', '操作', '<label for="all">授权</label>'],
colModel:[
{name:'fobjectid', width:40, align:"center", formatter:groupFmatter},
{name:'fobject', width:200, formatter:moduleFmatter},
{name:'faction', width:150, align:"center"},
{name:'fright', width:100, align:"center", formatter:rightFmatter}
],
cmTemplate: {sortable: false, title: false},
//idPrefix: 'ys',
//loadui: 'block',
//multiselect: true,
//multiboxonly: true,
page: 1,
sortname: 'number',
sortorder: "desc",
pager: "#page",
rowNum: 2000,
rowList:[300,500,1000],
scroll: 1, //创建一个动态滚动的表格当为true时翻页栏被禁用使用垂直滚动条加载数据且在首次访问服务器端时将加载所有数据到客户端。当此参数为数字时表格只控制可见的几行所有数据都在这几行中加载
loadonce: true,
viewrecords: true,
shrinkToFit: false,
forceFit: false,
jsonReader: {
root: "data.items",
records: "data.totalsize",
repeatitems : false,
id: -1
},
afterInsertRow: function(rowid, rowdata, rowelem) {
},
loadComplete: function(data) {
$('.group').each(function(index, element) {
var groupId = $(this).attr('id');
var $_ckbox = $('.ckbox[data-for=' + groupId + ']');
if($_ckbox.length === $_ckbox.filter(':checked').length) {
this.checked = true;
};
});
initRelation();
},
loadError: function(xhr,st,err) {
}
});
function groupFmatter(val, opt, row){
if(curGroup !== val){
return '<input class="group" type="checkbox" id="' + val + '">';
} else {
return '';
};
};
function moduleFmatter(val, opt, row){
fillMap(val, opt ,row);//缓存映射关系
if(curGroup !== row.fobjectid){
curGroup = row.fobjectid;
return val;
} else {
return '';
};
};
function rightFmatter(val, opt, row){
var html_str = '<input type="checkbox" class="ckbox" data-for="' + row.fobjectid + '" data-id="' + row.frightid + '"';
if(row.faction === '查询') {
html_str = html_str + 'data-view="true"';
};
if(val > 0){
return html_str + ' checked="checked">';
} else {
return html_str + '>';
};
};
$('#all').click(function(e){
e.stopPropagation();
if(this.checked) {
$('.ckbox').each(function(){
this.checked = true;
});
$('.group').each(function(){
this.checked = true;
});
} else {
$('.ckbox').removeAttr('checked');
$('.group').removeAttr('checked');
}
});
$('#save').click(function(e){
var items = [];
$('.ckbox').each(function(i){
if(this.checked) {
items.push($(this).data('id'));
}
});
//Public.ajaxPost('../right/addRights2OutUser?userName=' + userName + '&rightid={rightids:['+ items.join(',') + ']}', {}, function(data){
Public.ajaxPost('../right/addRights2OutUser?userName=' + userName + '&rightid='+ items.join(','), {}, function(data){
if(data.status === 200) {
parent.Public.tips({content : '保存成功!'});
} else {
parent.Public.tips({type: 1, content : data.msg});
}
});
});
$('.grid-wrap').on('click', '.group', function(){
var groupId = $(this).attr('id');
if(this.checked) {
$('.ckbox[data-for=' + groupId + ']').each(function(){
this.checked = true;
});
} else {
$('.ckbox[data-for=' + groupId + ']').removeAttr('checked');
};
$(this).closest('tr').find('input').filter('[data-view=true]').trigger('checkChange');
});
$('.grid-wrap').on('click', '.ckbox', function(){
var groupId = $(this).data('for');
var $_group = $('.ckbox[data-for=' + groupId + ']'), $_view = $_group.filter('[data-view=true]'), $_others = $_group.not('[data-view=true]');
if(!$(this).data('view')) {
if(this.checked && $_view.length > 0) {
$_view[0].checked = true;
};
} else {
if($_others.length > 0 && $_others.filter(':checked').length > 0) {
this.checked = true;
};
};
$_view.trigger('checkChange');
if($_group.length === $_group.filter(':checked').length) {
$('#' + groupId)[0].checked = true;
} else {
$('#' + groupId).removeAttr('checked');
};
});
/**
* 关联权限处理
*/
function fillMap(val, opt ,row){
RelationalMapping[val+"-"+row.faction] = opt.rowId;
}
function initRelation(){
$grid.find('input').filter('[data-view=true]').each(function(){
setRelativeRight($(this));
});
};
function setRelativeRight(view){
var _modelName = view.closest('tr').find('td:eq(1)').html();
if(relation[_modelName]){
view.on('checkChange',function(){
var _arr = relation[_modelName];
var _isChecked = this.checked;
for(var i = 0,len = _arr.length; i < len; i++){
var _name = _arr[i].name;
var _rights = _arr[i].rights;
for(var j=0,l = _rights.length; j<l; j++){
var _proName = _arr[i].name+"-"+_rights[j];
var _rid = RelationalMapping[_proName];
if(!_arr[i].ckbox){
_arr[i].ckbox = {};
}
if(!_arr[i].ckbox[_proName]){
_arr[i].ckbox[_proName] = $('#'+_rid).find('.ckbox')[0];//缓存当前对象
}
if(_isChecked){
//如果主权限获得,则做以下处理
_arr[i].ckbox[_proName].checked = true;
}
else{
//如果主权限取消,则做以下处理
}
}
}
this.checked = _isChecked;
});
}
}
</script>
</body>
</html>