代码:本次示例,示例打开一个单据列表,场景如下:在一个表单上点击按钮打开一个单据列表,如果该单据列表已经通过页签打开了则直接激活就可以了。
此处打开的是单据列表,如果针对表单需要做一写参数修改
在按钮点击事件调用此openForm方法即可
openForm
/**打开页签或激活
* @param formId 页面标识
* @param iFormView this.getView() 界面视图模型
* @param APPID 应用标识 xml元数据里面可以查看
*/
public static void openForm(String formId,IFormView iFormView,String bizAppId){
List<AppMenuInfo> appMenuInfos = AppMetadataCache.getAppMenusInfoByAppId(bizAppId);
Optional<AppMenuInfo> menuOptional = appMenuInfos
.stream()
.filter(appMenuInfo -> formId.equals(appMenuInfo.getFormId()) && "ListShowParameter".equals(appMenuInfo.getParamType()))
.findFirst();
String menuId = null;
if (menuOptional.isPresent()) {
menuId = menuOptional.get()
.getId();
}
//获取指定appid对应的app内码(即根据t_meta_bizapp表的fnumber获取fid)
String appId = AppMetadataCache.getAppInfo(bizAppId).getAppId();
//获取最外层的根页面(主页面)
IFormView mainView = iFormView.getMainView();
//获取主页面的pageId
String mainViewPageId = mainView.getPageId();
//主页面pageId
String mainPageId = appId+mainViewPageId;
//拼接单据的pageId,格式为menuId+主页面的pageId
String billPageId = menuId + mainViewPageId;
//如果已经被打开则激活该页面,否则就打开该页面
if (null != mainView.getViewNoPlugin(billPageId)) {
Map<String, Object> hashMap = new HashMap<>(4);
hashMap.put("view", iFormView);
hashMap.put("appname", "业务巡检");
hashMap.put("formnumber", formId);
hashMap.put("parametertype", "ListShowParameter");
activatePage(billPageId, iFormView, hashMap);
} else {
ListShowParameter listShowParameter = new ListShowParameter();
listShowParameter.setFormId("bos_list");
listShowParameter.setBillFormId(formId);
listShowParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
listShowParameter.setHasRight(true);
//打开的应用appId
listShowParameter.setAppId(appId);
listShowParameter.setCustomParam("billFormId",formId);
//设置customParam中的appid属性值(必须设置该属性才能出现菜单栏)
listShowParameter.setCustomParam("appid",appId);
listShowParameter.setParentPageId(mainPageId);
listShowParameter.setCustomParam("type","list");
//设置页签容器的key,这里为应用中的页签容器的标识
listShowParameter.getOpenStyle().setTargetKey("_submaintab_");
//设置pageId(默认写法为appid+mainViewPageId)
listShowParameter.setPageId(billPageId);
IFormView view = iFormView.getView(mainPageId);
view.showForm(listShowParameter);
iFormView.sendFormAction(view);
}
}
/**
* 激活指定页面
*
* @param pageId 需要打开的页面 pageId = menuId + mainViewPageId
* @param view IFormView
* @param map 展示的参数
*/
@SuppressWarnings("unchecked")
public static void activatePage(String pageId, IFormView view, Map<String, Object> map) {
IFormView childView = view.getViewNoPlugin(pageId);
if ("bos".equals(childView.getFormShowParameter().getServiceAppId())) {
childView = view.getView(pageId);
}
if (childView != null) {
if (!view.getPageId().equalsIgnoreCase(childView.getPageId())) {
Map<String, Object> customParameters = (Map<String, Object>) map.get("customparameters");
childView.getFormShowParameter().getCustomParams().remove("messageId");
childView.getFormShowParameter().getCustomParams().remove("tabType");
childView.getFormShowParameter().getCustomParams().remove("openPage");
if (customParameters != null) {
if (customParameters.get("messageId") != null) {
childView.getFormShowParameter().setCustomParam("messageId", customParameters.get("messageId"));
}
if (customParameters.get("tabType") != null) {
childView.getFormShowParameter().setCustomParam("tabType", customParameters.get("tabType"));
}
if (customParameters.get("openPage") != null) {
childView.getFormShowParameter().setCustomParam("openPage", customParameters.get("openPage"));
}
}
childView.getFormShowParameter().setHasRight(true);
childView.activate();
if ("bos".equals(childView.getFormShowParameter().getServiceAppId())) {
childView.updateView();
}
view.sendFormAction(childView);
}
} else {
view.showTipNotification("系统已超时,请重新刷新登录!");
}
}
打开页面.zip(2.76KB)
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *