grid-view-load-ui-logic-base.ts 5.0 KB
Newer Older
1 2
import { UIActionContext } from "@/logic/uiaction-context";
import { BeginNode, EndNode, AppendParamNode } from "@/logic/logic-node";
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

/**
 * 自定义表格数据加载
 *
 * @export
 * @class GridViewLoadUILogicBase
 */
export default class GridViewLoadUILogicBase {

    /**
     * Creates an instance of  GridViewLoadBase.
     * 
     * @param {*} [opts={}]
     * @memberof  GridViewLoadUILogicBase
     */
    constructor(opts: any = {}) { }

20
    protected readonly startLogicNode: string = 'Begin';
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
    protected logicParams: any[] = [
        {
            name: '当前视图参数',
            codeName: 'viewParam',
            default: false,
            navContextParam: false,
            navViewParamParam: false,
            activeContainerParam: false,
            activeCtrlParam: false,
            activeViewParam: false,
            lastReturnParam: false
        },
        {
            name: '当前视图对象',
            codeName: 'view',
            default: false,
            navContextParam: false,
            navViewParamParam: false,
            activeContainerParam: false,
            activeCtrlParam: false,
            activeViewParam: true,
            lastReturnParam: false
        },
        {
            name: '传入变量',
            codeName: 'Default',
            default: true,
            navContextParam: false,
            navViewParamParam: false,
            activeContainerParam: false,
            activeCtrlParam: false,
            activeViewParam: false,
            lastReturnParam: false
        },
        {
            name: '当前表格',
            codeName: 'grid',
            default: false,
            navContextParam: false,
            navViewParamParam: false,
            activeContainerParam: false,
            activeCtrlParam: false,
            activeViewParam: false,
            lastReturnParam: false
        },
        {
            name: '当前搜索表单',
            codeName: 'searchForm',
            default: false,
            navContextParam: false,
            navViewParamParam: false,
            activeContainerParam: false,
            activeCtrlParam: false,
            activeViewParam: false,
            lastReturnParam: false
        },
    ];


    protected logicNodes: ILogicNode[] = [
82 83 84 85 86
        { codeName: 'Begin', name: '开始', logicNodeType: 'BEGIN', logicLinks: [ { name: '连接名称', dstLogicNode: 'BINDPARAM1', } ] },
        { codeName: 'BINDPARAM1', name: '绑定当前搜索表单', logicNodeType: 'BINDPARAM', dstParam: 'searchForm', srcParam: 'view', srcFieldName: 'searchForm', logicLinks: [ { name: '连接名称', dstLogicNode: 'VIEWCTRLINVOKE1', } ] },
        { codeName: 'VIEWCTRLINVOKE1', name: '视图部件调用', logicNodeType: 'VIEWCTRLINVOKE', dstParam: 'viewParam', srcParam: 'searchForm', logicLinks: [ { name: '连接名称', dstLogicNode: 'VIEWCTRLINVOKE2', } ] },
        { codeName: 'END1', name: '结束', logicNodeType: 'END', returnType: 'NONEVALUE', returnRawValue: '', },
        { codeName: 'VIEWCTRLINVOKE2', name: '视图部件调用', logicNodeType: 'VIEWCTRLINVOKE', dstParam: 'viewParam', srcParam: 'grid', logicLinks: [ { name: '连接名称', dstLogicNode: 'END1', } ] },
87 88 89 90 91
    ];

    public beforeExecute(args: any, context: any = {}, params: any = {},
        $event?: any, xData?: any, actioncontext?: any, srfParentDeName?: string) {
        return new UIActionContext(this.logicParams, args, context, params, $event, xData, actioncontext, srfParentDeName)
92 93 94 95 96 97 98 99 100 101 102 103 104 105
    }

    /**
     * 执行
     *
     * @param {any[]} args
     * @param {*} [context={}]
     * @param {*} [params={}]
     * @param {*} [$event]
     * @param {*} [xData]
     * @param {*} [actionContext]
     * @param {string} [srfParentDeName]
     * @memberof GridViewLoadUILogicBase
     */
106 107 108 109 110 111 112 113 114 115
    async execute(args: any[], context:any = {} ,params: any = {}, $event?: any, xData?: any, actioncontext?: any, srfParentDeName?: string) {
        try {
            const actionContext = this.beforeExecute(args, context, params, $event, xData, actioncontext, srfParentDeName);
            const startNode = this.logicNodes.find((logicNode: ILogicNode) => logicNode.codeName === this.startLogicNode);
            if (!startNode) {
                throw new Error('没有开始节点');
            }
            await this.executeNode(startNode, actionContext);
            return actionContext.getResult();
        } catch (error: any) {
116
            throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
        }
    }

    executeNode(logicNode: ILogicNode, actionContext: UIActionContext) {
        try {
            switch (logicNode.logicNodeType) {
                case 'BEGIN':
                    console.log(111, '执行开始节点');
                    break;
                case 'END':
                    console.log(111, '执行结束节点');
                    break;
            }
        } catch (error: any) {

        }
133 134 135 136
    }


}