美文网首页
金蝶云苍穹应用层弹出新页签案例

金蝶云苍穹应用层弹出新页签案例

作者: 涎涎 | 来源:发表于2020-08-08 18:26 被阅读0次

前置条件

  1. 新建请假天数初始表基础资料
  1. 新建请假类型 基础资料
  1. 新建请假类型2 基础资料
  1. 新建请假申请单单据

编码

请假申请单单据插件

package kd.bos.plugin.leave.message;

import java.util.EventObject;

import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.form.CloseCallBack;
import kd.bos.form.IFormView;
import kd.bos.form.ShowType;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.list.ListShowParameter;
import kd.bos.mvc.SessionManager;
import kd.bos.servicehelper.BusinessDataServiceHelper;

/**
 * <p>Title: </p>
 * <p>
 *    Description:
 *    试验成功
 * </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * @author xx
 * @date 2020年3月21日
 * @version 1.0
 */
public class PopBillListParentPlugin4 extends AbstractBillPlugIn {
    //父页面请假类型--弹出列表控件标识
    private static final String KEY_POP_LEAVE_TYPE = "popleavetype";
    //子页面请假类型单据标识
    private static final String KEY_POP_LEAVE_TYPE_PAGE = "op_qjlx2_test";
    //子页面请假类型名称标识
    private static final String KEY_TYPE_NAME = "name";

    /**
     * <p>Title: </p>
     * <p>
     *    Description:
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param e
     * @see kd.bos.bill.AbstractBillPlugIn#registerListener(java.util.EventObject)
     * @version 1.0
     */
    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        this.addClickListeners(KEY_POP_LEAVE_TYPE);
    }

    /**
     * <p>Title: </p>
     * <p>
     *    Description:
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param evt
     * @see kd.bos.form.plugin.AbstractFormPlugin#click(java.util.EventObject)
     * @version 1.0
     */
    @Override
    public void click(EventObject evt) {
//        super.click(evt);
      //如果是“请假类型--弹出列表”控件被点击,则创建列表弹窗页面对象
        ListShowParameter listShowParameter = new ListShowParameter();
        //设置FormId,列表的FormId固定为"bos_list"
        listShowParameter.setFormId("bos_list");
        //设置BillFormId,为列表所对应单据的标识
        listShowParameter.setBillFormId(KEY_POP_LEAVE_TYPE_PAGE);
        //设置弹出页面标题
        listShowParameter.setCaption("选择请假类型:");
//      StyleCss styleCss = new StyleCss();
//      styleCss.setWidth("800");
//      styleCss.setHeight("600");
        //设置弹出页面的样式
//      listShowParameter.getOpenStyle().setInlineStyleCss(styleCss);
        //设置为不能多选,如果为true则表示可以多选
        listShowParameter.setMultiSelect(false);
        //设置页面回调事件方法
        listShowParameter.setCloseCallBack(new CloseCallBack(this, KEY_POP_LEAVE_TYPE));
        //设置弹出页面的打开方式
        listShowParameter.getOpenStyle().setShowType(ShowType.NewTabPage);
        //设置打开界面的目标容器
        listShowParameter.getOpenStyle().setTargetKey("tabap");
        //获取最外层根页面的View对象
        IFormView mainView = SessionManager.getCurrent().getMainView(this.getView().getFormShowParameter().getRootPageId());
        //绑定弹出列表到根页面
        mainView.showForm(listShowParameter);
        this.getView().sendFormAction(mainView);
    }

    /**
     * <p>Title: </p>
     * <p>
     *    Description:
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param e
     * @see kd.bos.form.plugin.AbstractFormPlugin#closedCallBack(kd.bos.form.events.ClosedCallBackEvent)
     * @version 1.0
     */
    @Override
    public void closedCallBack(ClosedCallBackEvent e) {
        super.closedCallBack(e);
        if (e.getReturnData() != null && StringUtils.equals(KEY_POP_LEAVE_TYPE, e.getActionId())) {
            //如果返回值不为空且标识一致,则获取返回值,此处返回值为所选数据的主键id
            String returnData = (String) e.getReturnData();
            if (StringUtils.isNotBlank(returnData)) {
                //根据主键id去请假类型单据中获取单条数据
                DynamicObject leaveType = BusinessDataServiceHelper.loadSingle(returnData, KEY_POP_LEAVE_TYPE_PAGE, KEY_TYPE_NAME);
                //获取到请假类型名称的属性值
//                String typename = (String) leaveType.get(KEY_TYPE_NAME);
                String typename = leaveType.get(KEY_TYPE_NAME).toString();
                //给页面“请假类型--弹出列表”赋值类型名称的值
                this.getModel().setValue(KEY_POP_LEAVE_TYPE, typename);
            }
        }
    }
}

请假类型2基础资料插件

package kd.bos.plugin.leave.message;

import java.util.EventObject;

import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.list.BillList;
import kd.bos.list.plugin.AbstractListPlugin;

/**
 * <p>Title: </p>
 * <p>
 *    Description:
 *    试验成功
 * </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * @author xx
 * @date 2020年3月21日
 * @version 1.0
 */
public class PopBillListPlugin extends AbstractListPlugin {
    //子列表页面确认按钮标识
    private static final String KEY_CONFIRM = "ss";    

    /**
     * <p>Title: </p>
     * <p>
     *    Description:
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param e
     * @see kd.bos.form.plugin.AbstractFormPlugin#registerListener(java.util.EventObject)
     * @version 1.0
     */
    @Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        //注册工具栏确认选项的监听
        this.addItemClickListeners(KEY_CONFIRM);
       
    }

    /**
     * <p>Title: </p>
     * <p>
     *    Description:
     * </p>
     * <p>Copyright: Copyright (c) 2020</p>
     * @author xx
     * @date 2020年3月21日
     * @param param the bare_field_name
     * @param evt
     * @see kd.bos.form.plugin.AbstractFormPlugin#itemClick(kd.bos.form.control.events.ItemClickEvent)
     * @version 1.0
     */
    @Override
    public void itemClick(ItemClickEvent evt) {
        super.itemClick(evt);
        if (StringUtils.equals(KEY_CONFIRM, evt.getItemKey())) {
            //当工具栏确认按钮被点击,获取当前列表对象
            //这里获取当前列表对象的写法是固定写法
            BillList billList = this.getControl("billlistap");
            //获取当前列表的选中行
            ListSelectedRowCollection selectedRows = billList.getSelectedRows();
            if (null != selectedRows) {
                
                //获取选中行的主键id
                //这里设置了只能单选,所以直接获取第一个元素,如果是多选需要遍历集合
                //这里获取的有具体值的参数不是很多,一般就使用主键id,之后有需要其他信息再去根据主键查询
                String primaryKeyValue = String.valueOf(selectedRows.get(0).getPrimaryKeyValue());
                //返回主键id到父页面并关闭子页面
                this.getView().returnDataToParent(primaryKeyValue);
                this.getView().close();
               
            }
        }
    }
}

注册插件

配置应用

  1. 启用应用
  1. 配置菜单
  1. 用户授权,管理员登录,授权。
  1. 应用添加卡片

测试

如下图所示,测试成功

以上就是我关于 金蝶云苍穹应用内弹出新面签案例 知识点整理与总结的全部内容,希望对你有帮助。。。。。。。


分割线

相关文章

网友评论

      本文标题:金蝶云苍穹应用层弹出新页签案例

      本文链接:https://www.haomeiwen.com/subject/vfghdktx.html