/** * 校验数据权限 * @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); });