UNPKG

tav-ui

Version:
110 lines (105 loc) 4.16 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var namespace = require('../../../utils/namespace2.js'); var uuid = require('../../../utils/uuid2.js'); var useGlobalConfig = require('../../../hooks/global/useGlobalConfig2.js'); var types = require('./PermissionQuery/types2.js'); function createNS(name) { return namespace.useNamespace(name); } function createId(className) { return `${className}-${uuid.nanoid()}`; } function normalizedPermissionCodes(codes) { return codes.reduce((result, code) => { if (!result[code]) result[code] = code; return result; }, {}); } function normalizedPermissionQueryContent(content) { let permissionQueryContent; Object.keys(content).forEach((key) => { if (!permissionQueryContent) permissionQueryContent = {}; if (types.DEFAULT_PERMISSIONQUERY_KEYS.includes(key)) { if (key === types.DEFAULT_PERMISSIONQUERY_KEYS[1]) { ; permissionQueryContent[key] = normalizedPermissionCodes(content[key]); } else { ; permissionQueryContent[key] = content[key]; } } }); return permissionQueryContent; } function usePermissionMatchedByParent(options) { const { code, ref: vnode, row, useEffect = true } = options; const PermissionParentNames = ["TaPermissionQuery", "TaPermissionDataQuery"]; function filterVNodeProps(_vnode) { const filterVNode = vue.unref(_vnode); const tableProVNode = (filterVNode.instance ? filterVNode.instance._ || filterVNode.instance.$ : {}).parent; return tableProVNode ?? filterVNode.parent ?? filterVNode.__vueParentComponent ?? filterVNode.$?.parent ?? null; } function findPermissionParent(__vnode) { const _vnode = vue.unref(__vnode); if (!vue.unref(_vnode)) return false; if (_vnode.type && _vnode.type.name && PermissionParentNames.includes(_vnode.type.name) && _vnode.exposed && _vnode.exposed.permissionContext && _vnode.exposed.permissionContext.permission) { if (Array.isArray(_vnode.exposed.permissionContext.permission)) { return findPermissionParent(filterVNodeProps(_vnode)); } else { const permissionCodes = _vnode.exposed.permissionContext.permission.permissionCodes || _vnode.exposed.permissionContext.permission.RECORD_PREMISSION.permissionCodes; if (permissionCodes) { if (Array.isArray(permissionCodes)) { if (permissionCodes.includes(code)) { return !!permissionCodes.includes(code); } else { return findPermissionParent(filterVNodeProps(_vnode)); } } else if (Reflect.has(permissionCodes, code)) { return !!permissionCodes[code]; } else { return findPermissionParent(filterVNodeProps(_vnode)); } } else { return findPermissionParent(filterVNodeProps(_vnode)); } } } else { return findPermissionParent(filterVNodeProps(_vnode)); } } function findRowPermission(row2) { if (row2 && row2.RECORD_PREMISSION && row2.RECORD_PREMISSION.permissionCodes) { return row2.RECORD_PREMISSION.permissionCodes.includes(code); } return false; } function handler() { if (!(code && vue.unref(vnode))) { return false; } const findRowPermissionResult = !!row && findRowPermission(row); if (findRowPermissionResult) { return true; } else { const findPermissionParentResult = findPermissionParent(filterVNodeProps(vnode)); if (findPermissionParentResult) { return true; } else { const resourceMapPermissions = useGlobalConfig.useGlobalConfig("permissions"); return resourceMapPermissions.value?.[code]?.ifShow ?? false; } } } return useEffect ? vue.computed(() => handler()) : handler(); } exports.createId = createId; exports.createNS = createNS; exports.normalizedPermissionCodes = normalizedPermissionCodes; exports.normalizedPermissionQueryContent = normalizedPermissionQueryContent; exports.usePermissionMatchedByParent = usePermissionMatchedByParent; //# sourceMappingURL=utils2.js.map