版本一:排除管理端#
(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');
})();版本二:仅流程前端启用#
(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');
})();作用#
- 只处理
type为1或17的浏览按钮。 - 从
tabs中过滤名称为组织结构的 Tab。 - 同步处理
selectLinkageDatas里的联动浏览按钮参数。 - 版本一通过 URL 判断排除管理端、Ecode 开发端和各类引擎配置页。
- 版本二只在路径以
/spa/workflow/开头的流程前端页面生效。 - PC 端覆盖
WeaBrowser、WeaSelectGroup;移动端覆盖BrowserHrm、Browser。
配置调整#
- 修改
ORG_TAB_NAME可以改要隐藏的 Tab 名称。 - 修改
needHandleType可以调整生效的浏览按钮类型。 - 版本一修改
isManagePage可以调整不生效的页面范围。 - 版本二修改
shouldOverwrite里的路径判断可以调整生效页面范围。 - 修改
order可以控制与其他 Ecode 覆盖逻辑的执行顺序。 - 只需要 PC 或移动端时,删除对应的注册代码即可。
