"use strict";
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
/**
 * 多项数据视图控制器
 *
 * @class IBizMDViewController
 * @extends {IBizMainViewController}
 */
var IBizMDViewController = /** @class */ (function (_super) {
    __extends(IBizMDViewController, _super);
    /**
     * Creates an instance of IBizMDViewController.
     * 创建 IBizMDViewController 实例
     *
     * @param {*} [opts={}]
     * @memberof IBizMDViewController
     */
    function IBizMDViewController(opts) {
        if (opts === void 0) { opts = {}; }
        var _this = _super.call(this, opts) || this;
        /**
         * 当前数据主键
         *
         * @type {string}
         * @memberof IBizMDViewController
         */
        _this.currentDataKey = '';
        /**
         * 是否支持多选
         *
         * @type {boolean}
         * @memberof IBizMDViewController
         */
        _this.multiSelect = false;
        /**
         * 快速搜索值
         *
         * @type {string}
         * @memberof IBizMDViewController
         */
        _this.searchValue = '';
        /**
         * 父数据改变
         *
         * @type {boolean}
         * @memberof IBizMDViewController
         */
        _this.parentDataChanged = false;
        /**
         * 表格是否支持行编辑
         *
         * @type {boolean}
         * @memberof IBizMDViewController
         */
        _this.isInGridRowEdit = false;
        /**
         * 是否打开行编辑
         *
         * @type {boolean}
         * @memberof IBizMDViewController
         */
        _this.isOpenRowEdit = false;
        /**
         * 默认进入行编辑是否完成
         *
         * @type {boolean}
         * @memberof IBizMDViewController
         */
        _this.isRowEditDefaulted = false;
        /**
         * 实体支持快速搜索属性
         *
         * @type {Array<any>}
         * @memberof IBizMDViewController
         */
        _this.quickSearchEntityDEFields = [];
        /**
         * 快速搜索提示信息
         *
         * @type {string}
         * @memberof IBizMDViewController
         */
        _this.quickSearchTipInfo = '';
        /**
         * 数据部件数据加载完成 <Output>
         *
         * @type {string}
         * @memberof IBizMDViewController
         */
        _this.onMDItemsLoad = 'onMDItemsLoad';
        _this.regQuickSearchDEFileds();
        var iBizApp = IBizApp.getInstance();
        if (iBizApp) {
            iBizApp.onRefreshView().subscribe(function (data) {
                if (data === void 0) { data = {}; }
                if (!Object.is(_this.getId(), data.openerid)) {
                    return;
                }
                var controller = iBizApp.getSRFController(data.openerid, data.viewUsage);
                if (controller) {
                    _this.onRefresh();
                }
            });
            iBizApp.onPostMessage().subscribe(function (data) {
                if (data === void 0) { data = {}; }
                if (!Object.is(_this.getId(), data.openerid) && !Object.is(data.type, 'REFERVIEW')) {
                    return;
                }
                var controller = iBizApp.getSRFController(data.openerid, data.viewUsage);
                if (controller) {
                    _this.onRefresh();
                }
            });
        }
        return _this;
    }
    /**
     * 初始化部件对象
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onInitComponents = function () {
        var _this = this;
        _super.prototype.onInitComponents.call(this);
        this.parentDataChanged = false;
        var mdctrl = this.getMDCtrl();
        if (mdctrl) {
            // 多数据部件选中
            mdctrl.on(IBizMDControl.SELECTIONCHANGE).subscribe(function (args) {
                _this.onSelectionChange(args);
            });
            // 多数据部件加载之前
            mdctrl.on(IBizMDControl.BEFORELOAD).subscribe(function (args) {
                _this.onStoreBeforeLoad(args);
            });
            // 多数据部件加载完成
            mdctrl.on(IBizMDControl.LOADED).subscribe(function (args) {
                _this.onStoreLoad(args);
            });
            // 多数据部件状态改变
            mdctrl.on(IBizDataGrid.CHANGEEDITSTATE).subscribe(function (args) {
                _this.onGridRowEditChange(undefined, args, undefined);
            });
            // 多数据界面行为
            mdctrl.on(IBizMDControl.UIACTION).subscribe(function (args) {
                if (args.tag) {
                    _this.doUIAction(args.tag, args.data);
                }
            });
            if (this.isEnableQuickSearch()) {
                var columns = mdctrl.getColumns();
                var _quickFields_1 = [];
                columns.forEach(function (column) {
                    var index = _this.quickSearchEntityDEFields.findIndex(function (item) { return Object.is(item.name, column.name); });
                    if (index !== -1) {
                        _quickFields_1.push(column.caption);
                    }
                });
                this.quickSearchTipInfo = _quickFields_1.join('/');
            }
        }
        var searchform = this.getSearchForm();
        if (searchform) {
            // 搜索表单加载完成
            searchform.on(IBizForm.FORMLOADED).subscribe(function (args) {
                if (_this.isLoadDefault()) {
                    _this.onSearchFormSearched();
                }
            });
            // 搜索表单搜索触发,手动触发
            searchform.on(IBizSearchForm.FORMSEARCHED).subscribe(function (args) {
                _this.onSearchFormSearched();
            });
            // 搜索表单重置
            searchform.on(IBizSearchForm.FORMRESETED).subscribe(function (args) {
                _this.onSearchFormReseted();
            });
            // 搜索表单值变化
            searchform.on(IBizForm.FORMFIELDCHANGED).subscribe(function (args) {
                if (args == null) {
                    _this.onSearchFormFieldChanged('', null, null);
                }
                else {
                    _this.onSearchFormFieldChanged(args.name, args.field, args.value);
                    _this.onSearchFormFieldValueCheck(args.name, args.field.getValue());
                }
            });
            searchform.setOpen(!this.isEnableQuickSearch());
        }
    };
    /**
     * 多数据视图加载,加载部件
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onLoad = function () {
        _super.prototype.onLoad.call(this);
        if (this.getSearchForm()) {
            var viewparams = {};
            Object.assign(viewparams, this.getViewParam());
            this.getSearchForm().autoLoad(viewparams);
        }
        else if (this.isLoadDefault()) {
            this.load();
        }
    };
    /**
     * 加载多视图部件
     *
     * @param {*} [opt={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.load = function (opt) {
        if (opt === void 0) { opt = {}; }
        if (!this.isFreeLayout()) {
            if (this.getMDCtrl()) {
                this.getMDCtrl().load(opt);
            }
        }
        else {
            this.otherLoad(opt);
        }
    };
    /**
     * 执行快速搜索
     *
     * @param {*} event
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onQuickSearch = function (event) {
        if (!Object.is(this.searchValue, event)) {
            this.searchValue = event;
        }
        if (this.isEnableQuickSearch()) {
            this.onSearchFormSearched();
        }
    };
    /**
     * 清空快速搜索值
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.clearQuickSearchValue = function () {
        this.searchValue = undefined;
        this.onRefresh();
    };
    /**
     * 搜索表单打开
     *
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.openSearchForm = function () {
        if (!this.isEnableQuickSearch()) {
            return;
        }
        var searchForm = this.getSearchForm();
        if (searchForm) {
            searchForm.setOpen(!searchForm.opened);
        }
    };
    /**
     * 获取搜索表单对象
     *
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getSearchForm = function () {
        return undefined;
    };
    /**
     * 获取所有多项数据
     *
     * @returns {Array<any>}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getAllData = function () {
        if (this.getMDCtrl()) {
            return this.getMDCtrl().getAllData();
        }
        return [];
    };
    /**
     * 搜索表单属性值发生变化
     *
     * @param {string} fieldname
     * @param {*} field
     * @param {*} value
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSearchFormFieldChanged = function (fieldname, field, value) {
    };
    /**
     * 搜索表单属性值检测
     *
     * @param {string} fieldname
     * @param {string} value
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSearchFormFieldValueCheck = function (fieldname, value) {
    };
    /**
     * 数据加载之前
     *
     * @param {*} [args={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onStoreBeforeLoad = function (args) {
        if (args === void 0) { args = {}; }
        var fetchParam = {};
        // 获取视图参数
        if (this.getViewParam() && Object.keys(this.getViewParam()).length > 0) {
            Object.assign(fetchParam, this.getViewParam());
        }
        // 获取父模型
        if (this.getParentMode() && Object.keys(this.getParentMode()).length > 0) {
            Object.assign(fetchParam, this.getParentMode());
        }
        // 获取父数据
        if (this.getParentData() && Object.keys(this.getParentData()).length > 0) {
            Object.assign(fetchParam, this.getParentData());
        }
        // 获取搜索表单值参数,与快速搜索互斥
        if ((this.getSearchForm() && this.getSearchCond() && this.getSearchForm().isOpen()) || !this.isEnableQuickSearch()) {
            Object.assign(fetchParam, this.getSearchCond());
        }
        // //是否有自定义查询
        // if (this.searchform && this.searchform.isCustomSearch()) {
        // 	Object.assign(fetchParam, this.searchform.getCustomSearchVal());
        // }
        // 获取关系数据
        if (this.getReferData()) {
            Object.assign(fetchParam, this.getReferData());
        }
        // 获取快速搜索里的搜索参数,与搜索表单互斥
        if (this.isEnableQuickSearch() && this.searchValue !== undefined && (this.getSearchForm() && !this.getSearchForm().isOpen())) {
            Object.assign(fetchParam, { query: this.searchValue });
        }
        Object.assign(args, fetchParam);
    };
    /**
     * 数据加载完成
     *
     * @param {any} sender
     * @param {any} args
     * @param {any} e
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onStoreLoad = function (args) {
        var _this = this;
        this.$vue.$emit(this.onMDItemsLoad, args);
        var lastActive = null;
        if (this.currentDataKey != null && !Object.is(this.currentDataKey, '') && args && args.items) {
            args.items.forEach(function (element) {
                if (Object.is(element.srfkey, _this.currentDataKey)) {
                    lastActive = element;
                    return false;
                }
            });
        }
        if (lastActive) {
            this.getMDCtrl().setSelection(lastActive);
            this.calcToolbarItemState(true, lastActive.srfdataaccaction);
        }
        else {
            this.currentDataKey = null;
            // this.fireEvent(MDViewControllerBase.SELECTIONCHANGE, this, []);
            this.fire(IBizMDViewController.SELECTIONCHANGE, []);
            this.calcToolbarItemState(false);
        }
        this.parentDataChanged = false;
        this.reloadUICounters();
        if (this.isRowEditDefault() && !this.isRowEditDefaulted) {
            this.doOpenRowEdit({});
            this.isRowEditDefaulted = true;
        }
    };
    /**
     * 数据被激活<最典型的情况就是行双击>
     *
     * @param {*} [record={}] 行记录
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onDataActivated = function (record) {
        if (record === void 0) { record = {}; }
        if (!record || !record.srfkey) {
            return;
        }
        this.fire(IBizMDViewController.DATAACTIVATED, [record]);
        this.currentDataKey = record.srfkey;
        this.calcToolbarItemState(true, record.srfdataaccaction);
        this.onEditData({ data: record });
    };
    /**
     * 行选择变化
     *
     * @param {Array<any>} selected
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSelectionChange = function (selected) {
        if (selected == null || selected.length == 0) {
            this.currentDataKey = null;
        }
        else {
            this.currentDataKey = selected[0].srfkey;
        }
        this.fire(IBizMDViewController.SELECTIONCHANGE, selected[0]);
        this.calcToolbarItemState(this.currentDataKey != null, (this.currentDataKey != null) ? selected[0].srfdataaccaction : null);
    };
    /**
     * 改变工具栏启用编辑按钮信息
     *
     * @param {any} sender
     * @param {any} args
     * @param {any} e
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onGridRowEditChange = function (sender, args, e) {
        // var editButton = null;
        // var submitButton = null;
        // if (this.toolbar && this.toolbar.items) {
        //     .each(this.toolbar.items, function (index, ele) {
        //         if (ele.attr('data-ibiz-tag') == 'NewRow')
        //             submitButton = ele;
        //         if (ele.attr('data-ibiz-tag') == 'ToggleRowEdit')
        //             editButton = ele;
        //     });
        // }
        // this.isInGridRowEdit = args.state;
        // if (editButton) {
        //     if (!args.state) {
        //         editButton.find('span').html(IGM('MDVIEWCONTROLLER.ONGRIDROWEDITCHANGE.ENABLE', '启用编辑'));
        //     } else {
        //         editButton.find('span').html(IGM('MDVIEWCONTROLLER.ONGRIDROWEDITCHANGE.ENABLE2', '关闭编辑'));
        //     }
        // }
        // if (submitButton)
        //     submitButton[0].disabled = !args.state;
    };
    /**
     * 计算工具栏项状态-<例如 根据是否有选中数据,设置 工具栏按钮是否可点击>
     *
     * @param {boolean} hasdata 是否有数据
     * @param {*} [dataaccaction]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.calcToolbarItemState = function (hasdata, dataaccaction) {
        _super.prototype.calcToolbarItemState.call(this, hasdata, dataaccaction);
    };
    /**
     * 实体数据发生变化
     *
     * @param {*} [dataaccaction={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onDataAccActionChange = function (dataaccaction) {
        if (dataaccaction === void 0) { dataaccaction = {}; }
        var toolBar = this.getToolBar();
        if (toolbar) {
            toolBar.updateAccAction(toolBar.getItems(), Object.assign({}, this.dataaccaction, dataaccaction));
        }
        var toolBar2 = this.getToolBar2();
        if (toolBar2) {
            toolBar2.updateAccAction(toolBar2.getItems(), Object.assign({}, this.dataaccaction, dataaccaction));
        }
        // if (this.getToolbar())
        //     this.getToolbar().updateAccAction(dataaccaction);
        // if (this.mintoolbar)
        //     this.mintoolbar.updateAccAction(dataaccaction);
        // if (this.floattoolbar)
        //     this.floattoolbar.updateAccAction(dataaccaction);
    };
    /**
     * 新建数据
     *
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onNewData = function () {
        var loadParam = {};
        if (this.getViewParam()) {
            Object.assign(loadParam, this.getViewParam());
        }
        if (this.getParentMode()) {
            Object.assign(loadParam, this.getParentMode());
        }
        if (this.getParentData()) {
            Object.assign(loadParam, this.getParentData());
        }
        if (this.isEnableRowEdit() && (this.getMDCtrl() && this.getMDCtrl().getOpenEdit())) {
            this.doNewRow(loadParam);
            return;
        }
        if (this.isEnableBatchAdd()) {
            this.doNewDataBatch(loadParam);
            return;
        }
        if (this.doNewDataWizard(loadParam)) {
            return;
        }
        Object.assign(loadParam, { openerid: this.getId(), pviewusage: this.getViewUsage() });
        this.doNewDataNormal(loadParam);
    };
    /**
     * 批量新建
     *
     * @param {*} [arg={}]
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doNewDataBatch = function (arg) {
        var _this = this;
        if (arg === void 0) { arg = {}; }
        var mpickupview = this.getMPickupView(arg);
        if (mpickupview) {
            this.openModal(mpickupview).subscribe(function (data) {
                if (data && Object.is(data.ret, 'OK')) {
                    _this.onMPickupWindowClose(data.selections);
                }
            });
            return true;
        }
        return false;
    };
    /**
     * 批量新建关闭
     *
     * @param {Array<any>} selection
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onMPickupWindowClose = function (selection) {
        if (selection) {
            this.addDataBatch(selection);
        }
        return;
    };
    /**
     * 批量添加数据
     *
     * @param {Array<any>} selectedDatas
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.addDataBatch = function (selectedDatas) {
        // IBiz.alert(IGM('IBIZAPP.CONFIRM.TITLE.WARN', '警告'), IGM('MDVIEWCONTROLLER.ADDDATABATCH.INFO', '[addDataBatch]方法必须重写!'), 2);
        this.iBizNotification.warning('警告', '[addDataBatch]方法必须重写!');
    };
    /**
     * 向导新建数据
     *
     * @param {any} arg
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doNewDataWizard = function (arg) {
        var _this = this;
        var hasWizardView = false;
        var wizardView = this.getNewDataWizardView(arg);
        if (wizardView) {
            // 打开模态框
            this.openModal(wizardView).subscribe(function (result) {
                if (result && Object.is(result.ret, 'OK')) {
                    var data = result.selections[0];
                    var _arg = { srfnewmode: data.srfkey, openerid: _this.getId(), pviewusage: _this.getViewUsage() };
                    Object.assign(_arg, arg);
                    _this.doNewDataNormal(_arg);
                }
            });
            hasWizardView = true;
        }
        return hasWizardView;
    };
    /**
     * 向导新建数据窗口关闭
     *
     * @param {any} win
     * @param {any} eOpts
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onNewDataWizardWindowClose = function (win, eOpts) {
        // var this = win.scope;
        // var loadParam = {};//win.userData;
        // var dialogResult = win.dialogResult;
        // if (!dialogResult) return;
        // if (dialogResult == 'ok') {
        //     var selectedData = win.selectedData;
        //     if (selectedData) {
        //         var newMode = selectedData.srfkey;
        //         loadParam.srfnewmode = newMode;
        //         var view = this.getNewDataView(loadParam);
        //         if (view == null) {
        //             return;
        //         }
        //         this.openDataView(view);
        //     }
        // }
        // return;
    };
    /**
     * 常规新建数据
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doNewDataNormal = function (arg) {
        var view = this.getNewDataView(arg);
        if (view == null) {
            return false;
        }
        var openMode = view.openMode;
        if (!openMode || Object.is(openMode, '')) {
            view.openMode = 'INDEXVIEWTAB';
        }
        if (!view.state) {
            view.state = 'new';
            var viewParam = {};
            Object.assign(viewParam, view.viewParam);
            if (viewParam && viewParam.srfnewmode && !Object.is(viewParam.srfnewmode, '')) {
                var srfnewmode = viewParam.srfnewmode.split('@').join('__');
                view.state = view.state + '_' + srfnewmode.toLowerCase();
            }
        }
        return this.openDataView(view);
    };
    /**
     * 编辑数据
     *
     * @param {any} arg
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onEditData = function (arg) {
        var loadParam = {};
        if (this.getViewParam()) {
            Object.assign(loadParam, this.getViewParam());
        }
        if (this.getParentMode()) {
            Object.assign(loadParam, this.getParentMode());
        }
        if (this.getParentData()) {
            Object.assign(loadParam, this.getParentData());
        }
        if (arg.srfcopymode) {
            Object.assign(loadParam, {
                srfsourcekey: arg.data.srfkey
            });
        }
        else {
            Object.assign(loadParam, { srfkey: arg.data.srfkey, srfdeid: arg.data.srfdeid });
        }
        var editMode = this.getEditMode(arg.data);
        if (editMode) {
            loadParam.srfeditmode = editMode;
            loadParam.srfviewmode = editMode;
        }
        if (arg.data.srfmstag) {
            loadParam.srfeditmode2 = arg.data.srfmstag;
        }
        Object.assign(loadParam, { openerid: this.getId(), pviewusage: this.getViewUsage() });
        this.doEditDataNormal(loadParam);
    };
    /**
     * 执行常规编辑数据
     *
     * @param {*} [arg={}]
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doEditDataNormal = function (arg) {
        if (arg === void 0) { arg = {}; }
        var view = this.getEditDataView(arg);
        if (view == null) {
            return false;
        }
        if (view.redirectview) {
            this.redirectOpenView({ redirectUrl: view.backendurl, viewParam: view.viewparam });
            return false;
        }
        var openMode = view.openMode;
        if (!openMode || Object.is(openMode, '')) {
            view.openMode = 'INDEXVIEWTAB';
        }
        if (!view.state) {
            view.state = 'edit';
            var viewParam = {};
            Object.assign(viewParam, view.viewParam);
            if (Object.keys(viewParam).length > 0) {
                var srfeditmode = '';
                if (viewParam.srfeditmode && !Object.is(viewParam.srfeditmode, '')) {
                    srfeditmode = viewParam.srfeditmode.split('@').join('__');
                }
                // 实体主状态
                if (viewParam.srfeditmode2 && !Object.is(viewParam.srfeditmode2, '') && !Object.is(viewParam.srfeditmode2, 'MSTAG:null')) {
                    srfeditmode = viewParam.srfeditmode2.split(':').join('__');
                }
                if (!Object.is(srfeditmode, '')) {
                    view.state = view.state + "_" + srfeditmode.toLowerCase();
                }
            }
        }
        return this.openDataView(view);
    };
    /**
     * 打开数据视图
     *
     * @param {*} [view={}]
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.openDataView = function (view) {
        var _this = this;
        if (view === void 0) { view = {}; }
        var openMode = view.openMode;
        if (view.redirect) {
            this.redirectOpenView(view);
            return false;
        }
        if (openMode != undefined) {
            if (openMode == 'POPUPMODAL') {
                view.modal = true;
            }
            else if (openMode == 'POPUP') {
                view.modal = true;
            }
            else if (openMode == '' || openMode == 'INDEXVIEWTAB') {
                view.modal = false;
            }
        }
        if (view.modal) {
            var modalview = this.openModal(view);
            modalview.subscribe(function (result) {
                if (result && Object.is(result.ret, 'OK')) {
                    _this.onRefresh();
                }
            });
        }
        else {
            this.openWindow(view.viewurl || view.url, view.viewparam);
        }
        return true;
    };
    /**
     * 获取编辑模式
     *
     * @param {any} data
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getEditMode = function (data) {
        return data.srfdatatype;
    };
    /**
     * 获取编辑视图
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getEditDataView = function (arg) {
        return undefined;
    };
    /**
     * 获取新建视图
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getNewDataView = function (arg) {
        if (arg === void 0) { arg = {}; }
        var viewModal = this.getViewModal();
        if (viewModal && Array.isArray(viewModal.refviews)) {
            var refview_1 = {};
            viewModal.refviews.some(function (_refview) {
                if (Object.is(_refview.mode, 'NEWDATA') && Object.keys(_refview.view).length > 0) {
                    Object.assign(refview_1, JSON.parse(JSON.stringify(_refview.view)));
                    return true;
                }
            });
            if (Object.keys(refview_1).length > 0) {
                return refview_1;
            }
        }
        return undefined;
    };
    /**
     * 获取新建向导视图
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getNewDataWizardView = function (arg) {
        return undefined;
    };
    /**
     * 获取多选视图
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getMPickupView = function (arg) {
        return undefined;
    };
    /**
     * 获取多数据对象
     *
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getMDCtrl = function () {
        // IBiz.alert(IGM('IBIZAPP.CONFIRM.TITLE.WARN', '警告'), IGM('MDVIEWCONTROLLER.GETMDCTRL.INFO', '[getMDCtrl]方法必须重写!'), 2);
        this.iBizNotification.warning('警告', '[getMDCtrl]方法必须重写!');
    };
    /**
     * 视图刷新
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onRefresh = function () {
        _super.prototype.onRefresh.call(this);
        if (!this.isFreeLayout()) {
            if (this.getMDCtrl()) {
                this.getMDCtrl().load();
            }
        }
        else {
            this.otherLoad();
        }
    };
    /**
     *
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSetParentData = function () {
        _super.prototype.onSetParentData.call(this);
        this.parentDataChanged = true;
    };
    /**
     * 获取搜索条件
     *
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getSearchCond = function () {
        if (this.getSearchForm()) {
            return this.getSearchForm().getValues();
        }
        return undefined;
    };
    /**
     * 搜索表单搜索执行
     *
     * @param {boolean} isload 是否加载数据
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSearchFormSearched = function () {
        if (!this.isFreeLayout()) {
            if (this.getMDCtrl()) {
                this.getMDCtrl().setCurPage(1);
                this.getMDCtrl().load();
            }
        }
        else {
            this.otherLoad();
        }
    };
    /**
     * 搜索表单重置完成
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onSearchFormReseted = function () {
        if (!this.isFreeLayout()) {
            if (this.getMDCtrl()) {
                this.getMDCtrl().load();
            }
        }
        else {
            this.otherLoad();
        }
    };
    /**
     * 处理实体界面行为
     *
     * @param {*} [uiaction={}]
     * @param {*} [params={}]
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doDEUIAction = function (uiaction, params) {
        if (uiaction === void 0) { uiaction = {}; }
        if (params === void 0) { params = {}; }
        if (Object.is(uiaction.tag, 'Help')) {
            this.doHelp(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Edit')) {
            this.doEdit(params);
            return;
        }
        if (Object.is(uiaction.tag, 'View')) {
            this.doView(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Print')) {
            this.doPrint(params);
            return;
        }
        if (Object.is(uiaction.tag, 'ExportExcel')) {
            this.doExportExcel(params);
            return;
        }
        if (Object.is(uiaction.tag, 'ExportModel')) {
            this.doExportModel(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Copy')) {
            this.doCopy(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Remove')) {
            this.doRemove(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Import')) {
            this.doImport(params);
            return;
        }
        if (Object.is(uiaction.tag, 'Refresh')) {
            this.doRefresh(params);
            return;
        }
        if (Object.is(uiaction.tag, 'NewRow')) {
            this.doCheck(params);
            return;
        }
        if (Object.is(uiaction.tag, 'SaveAllEditRow')) {
            this.doSaveAllEditRow(params);
            return;
        }
        if (Object.is(uiaction.tag, 'New')) {
            this.doNew(params);
            return;
        }
        if (Object.is(uiaction.tag, 'OpenRowEdit')) {
            this.doOpenRowEdit(params);
            return;
        }
        if (Object.is(uiaction.tag, 'CloseRowEdit')) {
            this.doCloseRowEdit(params);
            return;
        }
        if (Object.is(uiaction.tag, 'ToggleRowEdit')) {
            this.doToggleRowEdit(params);
            return;
        }
        if (Object.is(uiaction.tag, 'ToggleFilter')) {
            this.doToggleFilter(params);
            return;
        }
        _super.prototype.doDEUIAction.call(this, uiaction, params);
    };
    /**
     * 多数据项界面_切换过滤面板
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doToggleFilter = function (params) {
        if (params === void 0) { params = {}; }
        this.openSearchForm();
        var searchForm = this.getSearchForm();
        if (searchForm && searchForm.isOpen()) {
            this.load();
        }
    };
    /**
     * 多数据项界面_行编辑操作
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doToggleRowEdit = function (params) {
        if (params === void 0) { params = {}; }
    };
    /**
     * 打开行编辑
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doOpenRowEdit = function (params) {
        if (params === void 0) { params = {}; }
        this.isOpenRowEdit = true;
        if (this.getMDCtrl() && typeof (this.getMDCtrl().openEdit) === 'function') {
            this.getMDCtrl().openEdit(params);
        }
    };
    /**
     * 关闭行编辑
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doCloseRowEdit = function (params) {
        if (params === void 0) { params = {}; }
        this.isOpenRowEdit = false;
        if (this.getMDCtrl() && typeof (this.getMDCtrl().closeEdit) === 'function') {
            this.getMDCtrl().closeEdit(params);
        }
    };
    /**
     * 多数据项界面_新建行操作
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doNewRow = function (params) {
        if (params === void 0) { params = {}; }
        if (this.getMDCtrl() && typeof (this.getMDCtrl().newRowAjax) === 'function') {
            this.getMDCtrl().newRowAjax(params);
        }
    };
    /**
     * 多数据项界面_检测行操作
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doCheck = function (params) {
        if (params === void 0) { params = {}; }
    };
    /**
     * 保存所有行
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doSaveAllEditRow = function (params) {
        if (params === void 0) { params = {}; }
        if (this.getMDCtrl() && typeof (this.getMDCtrl().saveAllEditRow) === 'function') {
            var loadParam = {};
            if (this.getViewParam()) {
                Object.assign(loadParam, this.getViewParam());
            }
            if (this.getParentMode()) {
                Object.assign(loadParam, this.getParentMode());
            }
            if (this.getParentData()) {
                Object.assign(loadParam, this.getParentData());
            }
            this.getMDCtrl().saveAllEditRow(loadParam);
        }
    };
    /**
     * 多数据项界面_帮助操作
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doHelp = function (params) {
        if (params === void 0) { params = {}; }
        // IBiz.alert(IGM('IBIZAPP.CONFIRM.TITLE.WARN', '警告'), IGM('MDVIEWCONTROLLER.DOHELP.INFO', '帮助操作'), 0);
        this.iBizNotification.warning('警告', '帮助操作');
    };
    /**
     * 多数据项界面_编辑操作
     *
     * @param {*} [params={}]
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doEdit = function (params) {
        if (params === void 0) { params = {}; }
        // 获取要编辑的数据集合
        if (params && params.srfkey) {
            // if (.isFunction(this.getMDCtrl().findItem)) {
            //     params = this.getMDCtrl().findItem('srfkey', params.srfkey);
            // }
            var arg = { data: params };
            this.onEditData(arg);
            return;
        }
        var selectedData = this.getMDCtrl().getSelection();
        if (selectedData == null || selectedData.length === 0) {
            return;
        }
        this.onEditData({ data: selectedData[0] });
    };
    /**
     * 多数据项界面_行编辑操作
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doView = function (params) {
        this.doEdit(params);
    };
    /**
     * 多数据项界面_打印操作
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doPrint = function (params) {
        if (params === void 0) { params = {}; }
        var arg = {};
        var selectedData = this.getMDCtrl().getSelection();
        if (!selectedData || selectedData.length === 0) {
            return;
        }
        Object.assign(arg, { srfkeys: selectedData[0].srfkey });
        this.onPrintData(arg);
    };
    /**
     * 多数据项界面_导出操作(Excel)
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doExportExcel = function (params) {
        // if (params.itemtag == '') {
        // }
        // IBiz.alert(IGM('IBIZAPP.CONFIRM.TITLE.WARN', '警告'), IGM('MDVIEWCONTROLLER.DOEXPORTEXCEL.INFO', '导出操作(Excel)'), 0);
        this.iBizNotification.warning('警告', '导出操作(Excel)');
    };
    /**
     * 多数据项界面_导出数据模型
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doExportModel = function (params) {
        this.iBizNotification.warning('警告', '导出数据模型');
    };
    /**
     * 多数据项界面_拷贝操作
     *
     * @param {any} params
     * @returns {void}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doCopy = function (params) {
        // 获取要拷贝的数据集合
        if (!this.getMDCtrl()) {
            return;
        }
        var selectedData = this.getMDCtrl().getSelection();
        if (selectedData == null || selectedData.length == 0) {
            return;
        }
        var arg = { data: selectedData[0], srfcopymode: true };
        this.onEditData(arg);
    };
    /**
     * 多数据项界面_删除操作
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doRemove = function (params) {
        // IBiz.alert(IGM('IBIZAPP.CONFIRM.TITLE.WARN', '警告'), IGM('MDVIEWCONTROLLER.DOREMOVE.INFO', '删除操作'), 0);
        this.iBizNotification.warning('警告', '删除操作');
    };
    /**
     * 多数据项界面_数据导入栏
     *
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doImport = function (params) {
        var _this = this;
        if (params === void 0) { params = {}; }
        if (this.getMDCtrl() && !Object.is(this.getDEName(), '')) {
            var view = { modalviewname: 'ibiz-importdata-view', title: "导入数据", width: 500, viewparam: { dename: this.getDEName() } };
            var subject = this.openModal(view);
            subject.subscribe(function (result) {
                if (result && Object.is(result.ret, 'OK')) {
                    _this.onRefresh();
                }
            });
        }
    };
    /**
     * 多数据项界面_刷新操作
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doRefresh = function (params) {
        this.onRefresh();
    };
    /**
     * 多数据项界面_新建操作
     *
     * @param {any} params
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doNew = function (params) {
        this.onNewData();
    };
    /**
     *
     *
     * @param {*} [uiaction={}]
     * @param {*} [params={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doWFUIAction = function (uiaction, params) {
        if (uiaction === void 0) { uiaction = {}; }
        if (params === void 0) { params = {}; }
        if (Object.is(uiaction.actionmode, 'WFBACKEND')) {
            var selectedData = this.getMDCtrl().getSelection();
            if (selectedData == null || selectedData.length === 0) {
                return;
            }
            var keys_1 = '';
            selectedData.forEach(function (element, index) {
                var key = element.srfkey;
                if (!Object.is(keys_1, '')) {
                    keys_1 += ';';
                }
                keys_1 += key;
            });
            if (this.getMDCtrl()) {
                this.getMDCtrl().wfsubmit({ srfwfiatag: uiaction.tag, srfkeys: keys_1 });
                return;
            }
        }
        _super.prototype.doWFUIAction.call(this, uiaction, params);
    };
    /**
     *
     *
     * @param {any} win
     * @param {any} data
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onWFUIFrontWindowClosed = function (win, data) {
        // this.load();
        this.onRefresh();
    };
    /**
     * 获取UI操作参数
     *
     * @param {*} [uiaction={}]
     * @param {*} [params={}]
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getFrontUIActionParam = function (uiaction, params) {
        if (uiaction === void 0) { uiaction = {}; }
        if (params === void 0) { params = {}; }
        var arg = {};
        var front_arg = _super.prototype.getFrontUIActionParam.call(this, uiaction, params);
        if (front_arg) {
            Object.assign(arg, front_arg);
        }
        if (this.getParentMode()) {
            Object.assign(arg, this.getParentMode());
        }
        if (this.getParentData()) {
            Object.assign(arg, this.getParentData());
        }
        var target = 'NONE';
        if (uiaction.actiontarget) {
            target = uiaction.actiontarget;
        }
        if (!Object.is(target, 'NONE')) {
            var selectedData_1 = this.getMDCtrl().getSelection();
            if (!(selectedData_1 == null || selectedData_1.length === 0)) {
                var valueitem_1 = 'srfkey';
                var paramkey = 'srfkeys';
                var paramjo_1 = null;
                if (uiaction.actionparams) {
                    var actionparams = uiaction.actionparams;
                    valueitem_1 = (actionparams.valueitem && !Object.is(actionparams.valueitem, '')) ? actionparams.valueitem.toLowerCase() : valueitem_1;
                    paramkey = (actionparams.paramitem && !Object.is(actionparams.paramitem, '')) ? actionparams.paramitem.toLowerCase() : paramkey;
                    paramjo_1 = actionparams.paramjo ? actionparams.paramjo : {};
                }
                if (Object.is(target, 'SINGLEKEY')) {
                    arg[paramkey] = selectedData_1[0][valueitem_1];
                }
                else if (Object.is(target, 'SINGLEDATA')) {
                    Object.assign(arg, selectedData_1[0]);
                }
                else if (Object.is(target, 'MULTIKEY')) {
                    var keys_2 = '';
                    selectedData_1.forEach(function (item) {
                        var key = item[valueitem_1];
                        if (!Object.is(keys_2, '')) {
                            keys_2 += ';';
                        }
                        keys_2 += key;
                    });
                    arg[paramkey] = keys_2;
                }
                if (paramjo_1) {
                    var data_1 = {};
                    var keys = Object.keys(paramjo_1);
                    keys.forEach(function (key) {
                        var value = paramjo_1[key];
                        if (/^%\w+%$/g.test(value)) {
                            var name_1 = value.replace(new RegExp('%', 'g'), '');
                            if (selectedData_1[0].hasOwnProperty(name_1)) {
                                data_1[key] = selectedData_1[0][name_1];
                            }
                        }
                    });
                    Object.assign(arg, data_1);
                }
            }
        }
        return arg;
    };
    /**
     * 获取后天界面行为参数
     *
     * @param {*} [uiaction={}]
     * @param {*} [params={}]
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getBackendUIActionParam = function (uiaction, params) {
        if (uiaction === void 0) { uiaction = {}; }
        if (params === void 0) { params = {}; }
        var arg = {};
        if (this.getParentMode()) {
            Object.assign(arg, this.getParentMode());
        }
        if (this.getParentData()) {
            Object.assign(arg, this.getParentData());
        }
        var bSingle = false;
        if (Object.is(uiaction.actiontarget, 'SINGLEKEY')) {
            bSingle = true;
        }
        var selectedData = this.getMDCtrl().getSelection();
        if (!(selectedData == null || selectedData.length === 0)) {
            var valueitem_2 = 'srfkey';
            var paramkey = 'srfkeys';
            var paramitems_1 = '';
            var paramjo_2 = null;
            var infoitem = 'srfmajortext';
            if (uiaction.actionparams) {
                var actionparams = uiaction.actionparams;
                valueitem_2 = (actionparams.valueitem && !Object.is(actionparams.valueitem, '')) ? actionparams.valueitem.toLowerCase() : valueitem_2;
                paramkey = (actionparams.paramitem && !Object.is(actionparams.paramitem, '')) ? actionparams.paramitem.toLowerCase() : paramkey;
                infoitem = (actionparams.textitem && !Object.is(actionparams.textitem, '')) ? actionparams.textitem.toLowerCase() : infoitem;
                paramjo_2 = actionparams.paramjo ? actionparams.paramjo : {};
            }
            if (bSingle) {
                paramitems_1 = selectedData[0][valueitem_2];
            }
            else {
                selectedData.forEach(function (item) {
                    var key = item[valueitem_2];
                    if (!Object.is(paramitems_1, '')) {
                        paramitems_1 += ';';
                    }
                    paramitems_1 += key;
                });
            }
            arg[paramkey] = paramitems_1;
            if (paramjo_2) {
                var data_2 = {};
                var keys = Object.keys(paramjo_2);
                keys.forEach(function (key) {
                    var value = paramjo_2[key];
                    if (/^%\w+%$/g.test(value)) {
                        var name_2 = value.replace(new RegExp('%', 'g'), '');
                        if (selectedData[0].hasOwnProperty(name_2)) {
                            data_2[key] = selectedData[0][name_2];
                        }
                    }
                });
                Object.assign(arg, data_2);
            }
        }
        return arg;
    };
    /**
     * 移动记录
     *
     * @param {any} target
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.moveRecord = function (target) {
    };
    /**
     *
     *
     * @param {any} arg
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doBackendUIAction = function (arg) {
        if (this.getMDCtrl()) {
            this.getMDCtrl().doUIAction(arg);
        }
    };
    /**
     * 隐藏关系列
     *
     * @param {any} parentMode
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doHideParentColumns = function (parentMode) {
    };
    /**
     * 执行数据打印
     *
     * @param {*} [arg={}]
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.onPrintData = function (arg) {
        if (arg === void 0) { arg = {}; }
        this.doPrintDataNormal(arg);
    };
    /**
     * 常规数据打印
     *
     * @param {*} [arg={}]
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.doPrintDataNormal = function (arg) {
        if (arg === void 0) { arg = {}; }
        var view = this.getPrintDataView(arg);
        if (!view) {
            return false;
        }
        var viewurl = view.viewurl;
        if (!viewurl || Object.is(viewurl, '')) {
            viewurl = "/" + IBizEnvironment.BaseUrl + IBizEnvironment.PDFPrint;
        }
        var viewparams_keys = Object.keys(view.viewparam);
        var _viewparam = [];
        viewparams_keys.forEach(function (key) {
            if (view.viewparam[key]) {
                _viewparam.push(key + "=" + view.viewparam[key]);
            }
        });
        viewurl = viewurl + (viewurl.indexOf('?') == -1 ? "?" + _viewparam.join('&') : _viewparam.join('&'));
        window.open(viewurl, '_blank');
        return true;
    };
    /**
     * 获取大厅数据视图
     *
     * @param {any} arg
     * @returns {*}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.getPrintDataView = function (arg) {
        if (arg === void 0) { arg = {}; }
        return undefined;
    };
    /**
     * 是否默认加载
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isLoadDefault = function () {
        return true;
    };
    /**
     * 是否默认开启行编辑
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isRowEditDefault = function () {
        return false;
    };
    /**
     * 支持批量添加
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isEnableBatchAdd = function () {
        return false;
    };
    /**
     * 是否支持快速搜索
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isEnableQuickSearch = function () {
        return true;
    };
    /**
     * 只支持批量添加
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isBatchAddOnly = function () {
        return false;
    };
    /**
     * 是否支持行编辑
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isEnableRowEdit = function () {
        return false;
    };
    /**
     * 是否支持多选
     *
     * @returns {boolean}
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.isEnableMultiSelect = function () {
        return this.multiSelect;
    };
    /**
     * 设置支持多选
     *
     * @param {boolean} multiSelect
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.setEnableMultiSelect = function (multiSelect) {
        this.multiSelect = multiSelect;
    };
    /**
     * 注册快速搜索实体属性
     *
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.regQuickSearchDEFileds = function () {
    };
    /**
     * 附加部件加载
     *
     * @param {*} opt
     * @memberof IBizMDViewController
     */
    IBizMDViewController.prototype.otherLoad = function (opt) {
        if (opt === void 0) { opt = {}; }
        if (this.controls) {
            this.controls.forEach(function (obj, key) {
                if (obj instanceof IBizSearchForm || obj instanceof IBizToolbar) {
                    return;
                }
                if (obj.load) {
                    obj.load(opt);
                }
            });
        }
    };
    /*****************事件声明************************/
    /**
     * 数据激活<例如:表格行双击>
     *
     * @static
     * @memberof IBizMDViewController
     */
    IBizMDViewController.DATAACTIVATED = 'DATAACTIVATED';
    /**
     * 数据选择变化
     *
     * @static
     * @memberof IBizMDViewController
     */
    IBizMDViewController.SELECTIONCHANGE = 'SELECTIONCHANGE';
    return IBizMDViewController;
}(IBizMainViewController));