Tab

1. 基本功能 1. 基本功能

1.1. tab延时加载配置 1.1. tab延时加载配置

tab延时加载配置。

1.2. 单据打开tab要支持多个 1.2. 单据打开tab要支持多个

单据打开tab要支持多个。

1.3. tab页只读控制 1.3. tab页只读控制

tab页中控件控制只读。

1.4. Tab页关闭时回到创建它的标签页 1.4. 首页面Tab页签关闭时回到创建它的标签页

从某个标签中的按钮点开创建了一个新的标签页,当关闭创建的新标签页能记录到上一个创建它的父标签页能打开(作为当前窗口)。
QQ截图20191106172921

1.5. 关闭全部tab页配置 1.5. 关闭全部tab页配置

在首页的多个TAB页的最右端后,增加“X”,来关闭全部TAB页。

1.6. tab页签添加一层遮罩 1.6. tab页签添加一层遮罩

点击按钮(比如查询)在等待事件结束时,当前tab页签添加一层遮罩。

2. 配置方法 2. 配置方法

2.1. tab延时加载配置 2.1. tab延时加载配置

配置

  1. 对象建模–业务对象–业务对象管理:编辑业务对象,点击【可视化布局】按钮,进入到可视化界面,选中相应的TAB控件,在右侧属性列表【页签生成方式】处选择页签使用懒加载
    tab1

2.2. 单据打开tab要支持多个 2.2. 单据打开tab要支持多个

配置

1.如果需要实现该功能,需要项目组在config.properties.js中设置multipleTabsControltrue

define({
    dict_config:{
        method:"get",data:"",params:"",url: $bas_ctx  + "/dictionary/queryDictRows"
    },
    stopRepeatUrlPatterns: [
        '/'
    ],
    controls:{
        multipleTabsControl :true,
        dataGrid:{
            disableCopyEditing:true,
            validation: {
                requireDisabled: true
            },
            keydownNewRow: true,
            beforeSelectedHintFlag:true  //表格选中之前是否提示标志
        },
        uniqueSync:true
});

2.如果项目组希望新增页面也支持同时打开多个tab,请在IndexModule.js中调整$scope.addTab方法。

   var pageCount = 0;

  $scope.addTab = function (resource) {
     if(resource.url.inexOf("pageType=add")){
        resource.sysResourceId=resource.sysResourceId+(pageCount++)
     }
      .......
   }

2.3. tab页只读控制 2.3. tab页只读控制

配置

  1. 对象建模–业务对象–业务对象管理:编辑业务对象,点击【可视化布局】按钮,进入到可视化界面,选中相应的TAB控件,在右侧事件列表tab页的【布局元素只读事件】处配置:执行类型:【Angular公式】;执行内容:【testExam202Zyp.totalPlanQty == 1】。
    123

2.4. Tab页关闭时回到创建它的标签页 2.4. 首页面Tab页签关闭时回到创建它的标签页

请参考常用扩展3.1. 首页面Tab页签关闭时回到创建它的标签页

2.5. 关闭全部tab页配置 2.5. 关闭全部tab页配置

请参考常用扩展3.2. 关闭全部tab页配置

2.6. tab页签添加一层遮罩 2.6. tab页签添加一层遮罩

配置

  1. BaseController.js需更新至5.7.41以上版本,config.properties.js 添加一个配置项 $config.shadeConfigBaseController.jstipController 方法里读取此配置项,用于设置 shade 的数值。未配置按默认false 处理。
    可接受类型:
    1)false – 无遮罩
    2)数字(0 – 1) – 遮罩的透明度
    3)数组 – 第一个值为遮罩的透明度(0-1),第二个值为遮罩颜色(CSS颜色值)
    tab遮罩1
  shadeConfig: {shade: [0.5, '#333333']}, // 配置加载中遮罩样式

3.常用扩展 3. 常用扩展

3.4. Tab页关闭时回到创建它的标签页 3.4. 首页面Tab页签关闭时回到创建它的标签页

因是首页面,每个项目组可能会有些差异特给文档项目组自己修改相关的代码。
在indexModule.JS找到addTabByMenu方法,往方法中加入相关代码,可参考如下:

if (!containsTab(id)) { //create tab
            resource.activeTabTopIndex = $scope.activeTopIndex;
            resource.parentTabId = $scope.activeTabId;
            $scope.activeTabId = id;
            resource.tabSeq = $scope.tabSeq++;
            $scope.tabArray.push(resource);
    } else {
            $scope.activeTabId = id;
            //加入刷新事件
            $scope.refreshTabIframe(resource.url);
    }

在addTab方法中,加入相关代码,可参考如下:

 if (!containsTab(id)) { //create tab
            resource.parentTabId = $scope.activeTabId;
            $scope.activeTabId = id;
            resource.tabSeq = $scope.tabSeq++;
            $scope.tabArray.push(resource);
    } else {
            $scope.activeTabId = id;
            $scope.refreshTabIframe(resource.url);
                }

在closeAllTab方法中,加入相关代码,可参考如下:

$scope.closeAllTab = function () {
        if ($scope.tabArray.length == 1) {
                return;
        }
        for (var i = $scope.tabArray.length - 1; i > 0; i--) {
                var resource = $scope.tabArray[i];
                if (resource.parentTabId != undefined) {
                        resource.parentTabId = undefined;
                }
                $scope.tabArray.splice(i, 1);
                $scope.closeTab($scope.tabArray[i]);
        }
        $scope.activeTabId = 'todoListId';
        $scope.showQuestionPath($scope.activeTabId);
};

在closeTab方法中,加入相关代码,可参考如下:

$scope.closeTab = function (resource) {
    var childWindow;
    var doCloseTab = function () {
            childWindow && childWindow.close();
            var id = resource.sysResourceId;
            for (var i = 0; i < $scope.tabArray.length; i++) {
                    if ($scope.tabArray[i].sysResourceId == id) {
                            if ($scope.activeTabId == id) {
                                    if (i == 0) {
                                            $scope.activeTabId = 'todoListId';
                                            $scope.activeTabTopIndex = -1;
                                    } else {
                                            if (containsTab(resource.parentTabId)) { //create tab
                                                    $scope.activeTabId = resource.parentTabId;
                                            } else {
                                                    $scope.activeTabId = $scope.tabArray[i - 1].sysResourceId;
                                            }
                                            $scope.activeTabTopIndex = $scope.tabArray[i - 1].activeTabTopIndex;
                                    }
                                    $scope.showQuestionPath($scope.activeTabId);
                            }
                            $scope.tabArray.splice(i, 1);
                    }
            }
    };

3.5. 关闭全部tab页配置 3.5. 关闭全部tab页配置

在index.html页面加入 <a href="javascript:void(0)" ng-click="closeTab(resource)">

<div class="tab">
        <ul>
                <li ng-class="{'on':'todoListId'==activeTabId}" ng-dblclick="toggle()">
                        <a href="javascript:void(0)" ng-click="showTab('todoListId');">
                                <span class='show-pan'>我的工作台</span>
                        </a>
                </li>
        <li ng-class="{'on':resource.sysResourceId==activeTabId, 'closed-hide': resource.closed}" ng-dblclick="toggle()" ng-repeat="resource in tabArray | orderBy:'tabSeq' | filter : resFilter">
                    <a href="javascript:void(0)" ng-click="showTab(resource.sysResourceId)">
                            <span class='show-pan'>{{resource.urlTitle}}</span>
                    </a>
                    <a href="javascript:void(0)" ng-click="closeTab(resource)">
                            <div class="tab-close close_on"></div>
                    </a>
            </li>
    </ul>
    <a href="" ng-click="closeAllTab()" class="close-all">×</a>
</div>

在indexModule.JS界面加入closeAllTab方法。

//关闭所有标签
$scope.closeAllTab = function () {
        if ($scope.tabArray.length == 1) {
                return;
        }
        GillionMsg.confirm(null, '确认关闭所有标签页吗?', function (btn) {
                $scope.$apply(function () {
                        if (btn) {
                                for (var i = $scope.tabArray.length - 1; i > 0; i--) {
                                        $scope.tabArray.splice(i, 1);
                                }
                                $scope.activeTabId = 'todoListId';
                        }
                });
        });
}

4. 版本更新 4. 版本更新

5.7.41,2019.12.06

新特性

  • 点击按钮(比如查询)在等待事件结束时,当前tab页签添加一层遮罩
  • 5.4.F,2019.04.30

    新特性

  • 单据打开tab要支持多个