/**
|
* 校验数据权限
|
* @author weidy
|
*/
|
layui.define(['layer','util','table'],function(exports){
|
var DataRightCheck = function(){
|
this.moduleKey='vciWebDataRightCheck';
|
this.basePath=path;
|
this.url={
|
checkSwitch:'/webDataRightController/getDataRightSwitch',
|
checkBoDataRight:'/webDataRightController/checkDataRightForBO',
|
checkLoDataRight:'/webDataRightController/checkDataRightForLO'
|
};
|
this.checkType = {
|
BO:'checkBoDataRight',
|
LO:'checkLoDataRight'
|
};
|
this.checkLOType = {
|
TOBO:'TB' ,
|
FROMBO:'FB',
|
BOTH:'both'
|
};
|
this.getContent = function(){
|
return "";
|
};
|
this.init = function(){
|
var that = this;//初始化
|
$webUtil.copyConfig(that,that.moduleKey);
|
};
|
};
|
/**
|
* 使用表格的主键来进行校验数据权限
|
* @param sourceData 来源数据
|
* @param tableId 表格主键
|
* @param methodKey 按钮的唯一标识
|
* @param 校验通过
|
* @param failCallback 校验失败
|
* @param checkLoType 校验链接类型的方式,只有数据是在链接类型的时候生效,只能是TB,FB,both这三个值
|
* @returns {boolean}
|
*/
|
DataRightCheck.prototype.checkDataRightForTable = function(sourceData,tableId,methodKey,callback,failCallback,checkLoType){
|
var that = this;
|
var table= layui.table;
|
var selectData = null;
|
if(typeof tableId == 'string'){
|
selectData = table.checkStatus(tableId);
|
}else{
|
selectData = {
|
data:[tableId]
|
};
|
}
|
var functionId = '';
|
if(sourceData == null || !'functionId' in sourceData ){
|
if(failCallback){
|
failCallback("没有获取菜单编号");
|
}
|
return false;
|
}
|
functionId = sourceData['functionId'];
|
if(!selectData && selectData.data && selectData.data.length == 0){
|
if(failCallback){
|
failCallback("没有选择数据,无法判断数据权限");
|
}
|
return false;
|
}
|
if($webUtil.isNull(methodKey)){
|
if(failCallback){
|
failCallback("没有按钮的标识符");
|
}
|
return false;
|
}
|
var dataType =that.checkType.BO;//看是业务数据,还是链接数据
|
var checkDatas = {};
|
var boDataAttr = ['oid','btmname','nameoid','revisionoid'];
|
var loDataAttr = ['t_oid','t_nameoid','t_revisionoid','t_btwname','f_oid','f_nameoid','f_revisionoid','f_btwname','oid'];
|
for(var i = 0 ; i < selectData.data.length; i ++){
|
var data = selectData.data[i];
|
for( var key in data){
|
data[key.toLowerCase()] = data[key];
|
}
|
if(i == 0) {
|
if (('t_oid' in data && 't_nameoid' in data && 't_revisionoid' in data && 't_btwname' in data)
|
|| ('f_oid' in data && 'f_nameoid' in data && 'f_revisionoid' in data && 'f_btwname' in data)) {
|
dataType = that.checkType.LO;
|
}
|
}
|
if(dataType == that.checkType.BO){
|
for(var j =0; j < boDataAttr.length;j ++){
|
var attr = 'sourceData[' + i + '].' + boDataAttr[j];
|
checkDatas[attr ] = data[boDataAttr[j]];
|
}
|
var attr = 'sourceData[' + i + '].secretgrade';
|
if('secretgrade' in data || 'secretGrade' in data){
|
//说明有密级
|
checkDatas[attr ] = data['secretgrade']*1 || data['secretGrade']*1 ;
|
}else{
|
checkDatas[attr ] = -1 ;
|
}
|
}else{
|
for(var j =0; j < loDataAttr.length;j ++){
|
var attr = 'sourceData[' + i + '].' + loDataAttr[j];
|
checkDatas[attr ] = data[loDataAttr[j]];
|
}
|
if('f_oid.secretgrade' in data || 'f_oid.secretGrade' in data){
|
//说明有密级
|
var attr = 'sourceData[' + i + '].fromsecret';
|
checkDatas[attr ] = data['f_oid.secretgrade']*1 ;
|
}else{
|
var attr = 'sourceData[' + i + '].fromsecret';
|
checkDatas[attr ] = -1 ;
|
}
|
if('t_oid.secretgrade' in data || 't_oid.secretGrade' in data){
|
//说明有密级
|
var attr = 'sourceData[' + i + '].tosecret';
|
checkDatas[attr ] = data['t_oid.secretgrade']*1 ;
|
}else{
|
var attr = 'sourceData[' + i + '].tosecret';
|
checkDatas[attr ] = -1 ;
|
}
|
}
|
}
|
that.checkDataRight(checkDatas,functionId,methodKey,dataType,callback,failCallback,checkLoType);
|
};
|
DataRightCheck.prototype.checkDataRight = function(checkDatas,modelKey,methodKey,dataType,callback,failCallback,checkLoType){
|
var that = this;
|
checkDatas['methodKey'] = modelKey.toLowerCase() + methodKey.toLowerCase();
|
if(dataType == that.checkType.BO){
|
$webUtil.post(that.url.checkBoDataRight,checkDatas,function(result){
|
if(result.success){
|
if(callback){
|
callback();
|
}
|
}else{
|
if(failCallback){
|
failCallback(result.msg);
|
}
|
}
|
},function(xhr,err){
|
if(failCallback){
|
failCallback(err);
|
}
|
},that.basePath);
|
}else{
|
checkDatas['checkType'] = checkLoType;
|
$webUtil.post(that.url.checkLoDataRight,checkDatas,function(result){
|
if(result.success){
|
if(callback){
|
callback();
|
}
|
}else{
|
if(failCallback){
|
failCallback(result.msg);
|
}
|
}
|
},function(xhr,err){
|
if(failCallback){
|
failCallback(err);
|
}
|
},that.basePath);
|
}
|
};
|
var dataRightCheck = new DataRightCheck();
|
exports("vciWebDataRightCheck",dataRightCheck);
|
});
|