mob-tab-view-panel-control-base.tsx 2.0 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
import { MainControlBase } from "./main-control-base";
import { IPSAppDEView, IPSDETabViewPanel } from "@ibiz/dynamic-model-api";
import { MobTabViewPanelControlInterface } from "ibiz-core";

/**
 * 分页视图面板基类
 *
 * @export
 * @class AppControlBase
 * @extends {TabViewPanelControlBase}
 */
export class MobTabViewPanelControlBase extends MainControlBase implements MobTabViewPanelControlInterface {

    /**
     * 部件模型
     *
     * @type {AppTabViewPanelBase}
     * @memberof MobTabViewPanelControlBase
     */
    public declare controlInstance: IPSDETabViewPanel;

    /**
     * 是否激活
     *
     * @memberof MobTabViewPanelControlBase
     */
    public isActive = false;

    /**
     * 部件模型数据初始化实例
     *
     * @memberof MobTabViewPanelControlBase
     */
    public async ctrlModelInit(args?: any) {
        await super.ctrlModelInit();
        const embedView: IPSAppDEView = this.controlInstance.getEmbeddedPSAppDEView() as IPSAppDEView;
        if (embedView && !embedView.name) {
            await embedView.fill();
        }
    }

    /**
     * 部件初始化
     *
     * @param {*} [args]
     * @memberof MobTabViewPanelControlBase
     */
    public ctrlInit(args?: any) {
        super.ctrlInit(args);
        const _this = this;
        if (this.viewState) {
            this.viewStateEvent = this.viewState.subscribe(({ tag, action, data }: any) => {
                if (data.activeItem === _this.controlInstance.name) {
                    this.$nextTick(() => {
                        this.actived();
                    });
                } else {
                    this.isActive = false;
                }
            });
        }
    }

    /**
     * 激活
     *
     * @param {*} [args]
     * @memberof MobTabViewPanelControlBase
     */
    public async actived() {
        const embedView: IPSAppDEView = this.controlInstance.getEmbeddedPSAppDEView() as IPSAppDEView;
        if (embedView && !embedView.name) {
            await embedView.fill();
        }
        this.isActive = true;
    }

}