代码打开一个新页签或激活未关闭的页签原创
金蝶云社区-洛尘
洛尘
9人赞赏了该文章 3,031次浏览 未经作者许可,禁止转载编辑于2021年11月23日 20:17:04

代码:本次示例,示例打开一个单据列表,场景如下:在一个表单上点击按钮打开一个单据列表,如果该单据列表已经通过页签打开了则直接激活就可以了。

此处打开的是单据列表,如果针对表单需要做一写参数修改


在按钮点击事件调用此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("系统已超时,请重新刷新登录!");

        }

    }


图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0