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页签关闭时回到创建它的标签页
从某个标签中的按钮点开创建了一个新的标签页,当关闭创建的新标签页能记录到上一个创建它的父标签页能打开(作为当前窗口)。
1.5. 关闭全部tab页配置 1.5. 关闭全部tab页配置
在首页的多个TAB页的最右端后,增加“X”,来关闭全部TAB页。
1.6. tab页签添加一层遮罩 1.6. tab页签添加一层遮罩
点击按钮(比如查询)在等待事件结束时,当前tab页签添加一层遮罩。
2. 配置方法 2. 配置方法
2.1. tab延时加载配置 2.1. tab延时加载配置
配置
- 对象建模–业务对象–业务对象管理:编辑业务对象,点击【可视化布局】按钮,进入到可视化界面,选中相应的TAB控件,在右侧属性列表【页签生成方式】处选择页签使用懒加载。
2.2. 单据打开tab要支持多个 2.2. 单据打开tab要支持多个
配置
1.如果需要实现该功能,需要项目组在config.properties.js
中设置multipleTabsControl
为true
。
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页只读控制
配置
- 对象建模–业务对象–业务对象管理:编辑业务对象,点击【可视化布局】按钮,进入到可视化界面,选中相应的TAB控件,在右侧事件列表tab页的【布局元素只读事件】处配置:执行类型:【Angular公式】;执行内容:【testExam202Zyp.totalPlanQty == 1】。
2.4. Tab页关闭时回到创建它的标签页 2.4. 首页面Tab页签关闭时回到创建它的标签页
请参考常用扩展3.1. 首页面Tab页签关闭时回到创建它的标签页。
2.5. 关闭全部tab页配置 2.5. 关闭全部tab页配置
请参考常用扩展3.2. 关闭全部tab页配置。
2.6. tab页签添加一层遮罩 2.6. tab页签添加一层遮罩
配置
BaseController.js
需更新至5.7.41以上版本,config.properties.js
添加一个配置项$config.shadeConfig
,BaseController.js
的tipController
方法里读取此配置项,用于设置 shade 的数值。未配置按默认false
处理。
可接受类型:
1)false – 无遮罩
2)数字(0 – 1) – 遮罩的透明度
3)数组 – 第一个值为遮罩的透明度(0-1),第二个值为遮罩颜色(CSS颜色值)
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';
}
});
});
}