tav-ui
Version:
110 lines (105 loc) • 4.16 kB
JavaScript
;
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