Version 1: Exclude Admin Pages#
(function () {
var ORG_TAB_NAME = '组织结构';
var needHandleType = function (type) {
return String(type) === '1' || String(type) === '17';
};
var removeOrgTab = function (tabs) {
if (!Array.isArray(tabs)) return tabs || [];
return tabs.filter(function (tab) {
return tab && tab.name !== ORG_TAB_NAME;
});
};
var isManagePage = function () {
var url = (window.location.pathname + window.location.search + window.location.hash).toLowerCase();
return (
url.indexOf('/ecode') > -1 ||
url.indexOf('/spa/hrm/engine') > -1 ||
url.indexOf('/spa/workflow/engine') > -1 ||
url.indexOf('/spa/portal') > -1 ||
url.indexOf('#/main/system') > -1 ||
url.indexOf('#/main/hrmengine') > -1 ||
url.indexOf('#/main/workflowengine') > -1 ||
url.indexOf('#/main/portalengine') > -1 ||
url.indexOf('#/main/formmode') > -1
);
};
var shouldOverwrite = function () {
// 管理端、ecode开发端不生效
if (isManagePage()) return false;
return true;
};
var handleBrowserProps = function (props) {
var nextProps = Object.assign({}, props || {});
if (!shouldOverwrite()) {
return nextProps;
}
if (needHandleType(nextProps.type)) {
nextProps.tabs = removeOrgTab(nextProps.tabs);
nextProps.noTooltip = true;
}
if (nextProps.selectLinkageDatas && typeof nextProps.selectLinkageDatas === 'object') {
var nextSelectLinkageDatas = {};
Object.keys(nextProps.selectLinkageDatas).forEach(function (key) {
var item = nextProps.selectLinkageDatas[key] || {};
var browserConditionParam = Object.assign({}, item.browserConditionParam || {});
if (needHandleType(browserConditionParam.type)) {
browserConditionParam.tabs = removeOrgTab(browserConditionParam.tabs);
browserConditionParam.noTooltip = true;
}
nextSelectLinkageDatas[key] = Object.assign({}, item, {
browserConditionParam: browserConditionParam
});
});
nextProps.selectLinkageDatas = nextSelectLinkageDatas;
}
return nextProps;
};
ecodeSDK.overwritePropsFnQueueMapSet('WeaBrowser', {
fn: function (newProps, name) {
return handleBrowserProps(newProps);
},
order: 1,
desc: 'PC端人力浏览按钮去掉组织结构tab,管理端不生效'
});
ecodeSDK.overwritePropsFnQueueMapSet('WeaSelectGroup', {
fn: function (newProps, name) {
return handleBrowserProps(newProps);
},
order: 1,
desc: 'PC端联动浏览按钮去掉组织结构tab,管理端不生效'
});
var overwriteMobileBrowser = function (comName) {
if (ecodeSDK.overwriteMobilePropsFnQueueMapSet) {
ecodeSDK.overwriteMobilePropsFnQueueMapSet(comName, {
fn: function (newProps) {
return handleBrowserProps(newProps);
},
order: 1,
desc: '移动端浏览按钮去掉组织结构tab,管理端不生效'
});
return;
}
if (ecodeSDK.overwriteMobileClassFnQueueMapSet) {
ecodeSDK.overwriteMobileClassFnQueueMapSet(comName, {
fn: function (Com, newProps) {
return {
com: Com,
props: handleBrowserProps(newProps)
};
},
order: 1,
desc: '移动端浏览按钮去掉组织结构tab,管理端不生效'
});
}
};
overwriteMobileBrowser('BrowserHrm');
overwriteMobileBrowser('Browser');
})();Version 2: Workflow Frontend Only#
(function () {
var ORG_TAB_NAME = '组织结构';
var needHandleType = function (type) {
return String(type) === '1' || String(type) === '17';
};
var removeOrgTab = function (tabs) {
if (!Array.isArray(tabs)) return tabs || [];
return tabs.filter(function (tab) {
return tab && tab.name !== ORG_TAB_NAME;
});
};
var shouldOverwrite = function () {
var pathname = window.location.pathname.toLowerCase();
// 仅在 /spa/workflow/ 开头的页面启用,其他页面全部关闭
return pathname.indexOf('/spa/workflow/') === 0;
};
var handleBrowserProps = function (props) {
var nextProps = Object.assign({}, props || {});
if (!shouldOverwrite()) {
return nextProps;
}
if (needHandleType(nextProps.type)) {
nextProps.tabs = removeOrgTab(nextProps.tabs);
nextProps.noTooltip = true;
}
if (nextProps.selectLinkageDatas && typeof nextProps.selectLinkageDatas === 'object') {
var nextSelectLinkageDatas = {};
Object.keys(nextProps.selectLinkageDatas).forEach(function (key) {
var item = nextProps.selectLinkageDatas[key] || {};
var browserConditionParam = Object.assign({}, item.browserConditionParam || {});
if (needHandleType(browserConditionParam.type)) {
browserConditionParam.tabs = removeOrgTab(browserConditionParam.tabs);
browserConditionParam.noTooltip = true;
}
nextSelectLinkageDatas[key] = Object.assign({}, item, {
browserConditionParam: browserConditionParam
});
});
nextProps.selectLinkageDatas = nextSelectLinkageDatas;
}
return nextProps;
};
ecodeSDK.overwritePropsFnQueueMapSet('WeaBrowser', {
fn: function (newProps, name) {
return handleBrowserProps(newProps);
},
order: 1,
desc: 'PC端人力浏览按钮去掉组织结构tab,仅流程前端启用'
});
ecodeSDK.overwritePropsFnQueueMapSet('WeaSelectGroup', {
fn: function (newProps, name) {
return handleBrowserProps(newProps);
},
order: 1,
desc: 'PC端联动浏览按钮去掉组织结构tab,仅流程前端启用'
});
var overwriteMobileBrowser = function (comName) {
if (ecodeSDK.overwriteMobilePropsFnQueueMapSet) {
ecodeSDK.overwriteMobilePropsFnQueueMapSet(comName, {
fn: function (newProps) {
return handleBrowserProps(newProps);
},
order: 1,
desc: '移动端浏览按钮去掉组织结构tab,仅流程前端启用'
});
return;
}
if (ecodeSDK.overwriteMobileClassFnQueueMapSet) {
ecodeSDK.overwriteMobileClassFnQueueMapSet(comName, {
fn: function (Com, newProps) {
return {
com: Com,
props: handleBrowserProps(newProps)
};
},
order: 1,
desc: '移动端浏览按钮去掉组织结构tab,仅流程前端启用'
});
}
};
overwriteMobileBrowser('BrowserHrm');
overwriteMobileBrowser('Browser');
})();What It Does#
- Handles only browser components whose
typeis1or17. - Removes the tab whose name is
组织结构fromtabs. - Applies the same handling to linked browser parameters inside
selectLinkageDatas. - Version 1 skips admin pages, Ecode development pages, and engine configuration pages by checking the URL.
- Version 2 runs only when the path starts with
/spa/workflow/. - Overrides
WeaBrowserandWeaSelectGroupon PC, andBrowserHrmandBrowseron mobile.
Configuration#
- Change
ORG_TAB_NAMEto hide a different tab name. - Change
needHandleTypeto adjust the browser types affected. - In version 1, change
isManagePageto adjust the pages where the override should not run. - In version 2, change the path check inside
shouldOverwriteto adjust where the override should run. - Change
orderto control execution order against other Ecode overrides. - If only PC or mobile behavior is needed, remove the corresponding registration code.
