import { isInputEmpty } from '@cip/utils/util' const getNeedPrivilege = (config) => { let codes = [] if (typeof config === 'object') { // 判断是否为对象 codes = codes.concat(config.code) } else { codes = codes.concat(config) } return codes } const getMultiRelation = (config) => { if (typeof config === 'object' && config.type === 'and') { return 'and' } return 'or' } export const judgePrivilege = (config, ownPrivileges) => { const needPrivileges = getNeedPrivilege(config) const relation = getMultiRelation(config) if (relation === 'or') { // 或模式 存在 '' | undefined | null if (needPrivileges.findIndex(v => isInputEmpty(v)) > -1) return true } // 过滤掉 '' | undefined | null const effectiveCodes = needPrivileges.filter(code => !isInputEmpty(code)) if (effectiveCodes.length === 0) return true if (relation === 'and') { return !effectiveCodes.some(v => !ownPrivileges.includes(v)) } else { return effectiveCodes.some(v => ownPrivileges.includes(v)) } }