ui-logic-route-view-session-param.ts 2.7 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 79 80 81 82 83 84 85 86 87 88
import { UILogicParamType } from "@/logic/const/ui-logic-param-type";
import { UILogicParamBase } from "./ui-logic-param-base";
import store from '@/store';

/**
 * 界面顶级视图会话共享参数绑定参数
 *
 * @export
 * @class UILogicRouteViewSessionParam
 */
export class UILogicRouteViewSessionParam extends UILogicParamBase {

    /**
     * Creates an instance of UILogicRouteViewSessionParam.
     * @param {*} opts
     * @memberof UILogicRouteViewSessionParam
     */
    public constructor(opts: any) {
        super(opts);
    }

    /**
     * 初始化
     *
     * @protected
     * @memberof UILogicRouteViewSessionParam
     */
    protected init(params: any) {
        this.logicParamType = UILogicParamType.routeViewSessionParam;
        this.setReal(this.getRouteViewSessionParam(params));
    }

    /**
     * 设置实际参数值
     *
     * @param {*} opts
     * @memberof UILogicRouteViewSessionParam
     */
    public setReal(opts: any) {
        this.realValue = opts;
        const actionContainer = this.actionSession.actionContainer;
        store.commit('addRouteViewGlobal', { tag: actionContainer.context.srfsessionid, param: { [this.logicParamModel.paramFieldName]: opts } });
    }

    /**
     * 获取界面顶级视图会话共享参数绑定参数
     *
     * @private
     * @param {any} params
     * @memberof UILogicRouteViewSessionParam
     */
    private getRouteViewSessionParam(params: any) {
        const { actioncontext } = params;
        const { viewCtx, context } = actioncontext;
        if (viewCtx && viewCtx['routeViewGlobal']) {
            let result = actioncontext.viewCtx['routeViewGlobal'][this.logicParamModel.paramFieldName];
            if (!result) {
                result = {};
            }
            return result;
        }
    }

    /**
     * 设置指定属性值
     *
     * @param {string} strName
     * @param {*} value
     * @memberof UILogicRouteViewSessionParam
     */
    public set(strName: string, value: any) {
        this.realValue[strName] = value;
        const actionContainer = this.actionSession.actionContainer;
        store.commit('addRouteViewGlobal', { tag: actionContainer.context.srfsessionid, param: { [this.logicParamModel.paramFieldName]: this.realValue } });
    }

    /**
     * 重置指定属性
     *
     * @param {string} strName
     * @memberof UILogicRouteViewSessionParam
     */
    public reset(strName: string) {
        this.realValue[strName] = null;
        const actionContainer = this.actionSession.actionContainer;
        store.commit('addRouteViewGlobal', { tag: actionContainer.context.srfsessionid, param: { [this.logicParamModel.paramFieldName]: this.realValue } });
    }
}