1.基本功能 1.基本功能
1.1.复制新增(旧表格) 1.1.复制新增(旧表格)
此功能的场景是在编辑页面自定义一个拷贝新增按钮,点击这个拷贝新增按钮后会复制当前页面的主表、子表、孙子表数据到新增页面,同时关闭编辑页面。
例如:点击一个复制新增按钮,然后可以把主表、子表、孙子表数据一起拷贝下来,然后在新增页面显示。
1.2.复制功能配置文档1.2.复制功能配置
1.3.弹窗复制1.3.弹窗复制
复制方法支持以弹窗方式复制并可以修改数据。
2.配置方法 2.配置方法
2.1.复制新增(旧表格)2.1.复制新增(旧表格)
- 对象建模–业务对象–业务对象管理:编辑业务对象,点击【方法定义】tab页,新增一个方法。
- 在BsCtrl.js扩展文件中添加自定义代码,具体代码可参考【3.1复制新增(旧表格)】。
- 在【方法定义】tab页新增一个提供给用户使用的初使化方法,
- 在初始化方法自定义JS添加自定义代码,具体代码可参考【3.1复制新增(旧表格)】。
2.2.复制功能配置文档2.2.复制功能配置
- 对象建模–业务对象–业务对象管理:点击【方法定义】tab页,业务对象-方法定义:编辑业务对象,点击新增按钮新增方法,选择方法的类型为【复制】类型。
- 点击【复制】页签,配置复制规则。
其中:
1). 左侧树结构展示业务对象结构:可点击切换对象属性列表
2). 左侧表格表示默认复制,值与原对象不变。且此处不会显示主键,公共字段属性。
3). 右侧表格表示自定义复制规则
默认值类型:
不处理:不赋值
变量:字符串或数字
表达式:方法或运算
固定值:平台默认值,如当前角色、当前用户等
4). 通过左右按钮,批量编辑方法属性 -
配置完后,点击方法定义上的保存按钮保存数据。
-
业务对象-方法定义:点击【可视化布局】按钮进入可视化编辑,配置复制按钮
-
提交对象,生成代码后在业务系统启动后执行复制方法。
代码
单表,表格内编辑复制案例代码示例
/**
* GLPaaS生成
* 复制 常用案例NewHot101
*/
$scope.testCopyTestCaseNewHot101 = function(options){
var checkedRows = $scope.testCaseNewHot101Grid.getCheckedRows();
if (Arrays.isNotEmptyArray(checkedRows)) {
var options = {
addCallback: function () {
$scope._finishEditGridWrap($scope.testCaseNewHot101Grid, $scope.testCaseNewHot101s, $scope);
var copyRows = angular.copy(checkedRows);
angular.forEach(copyRows, function (testCaseNewHot101) {
angular.extend(testCaseNewHot101, {
mdBankAccountId: $scope.testCaseNewHot101GridId++,
rowStatus : 4,
bankCode:null,bankNameCn:'农业银行',
bankAddress:$scope.$sessionAttrs.loginUser.userNameCn});
});
var newSource, rowIndex;
if ($config.gridAddRowPos === 'bottom') {
newSource = _.union($scope.testCaseNewHot101s, copyRows);
rowIndex = newSource.length;
} else {
newSource = _.union(copyRows, $scope.testCaseNewHot101s);
rowIndex = 0;
}
$scope.testCaseNewHot101Grid.loadData(newSource);
if ($scope._pageState && $scope._pageState.setDataStateModify) {
$scope._pageState.setDataStateModify();
}
$scope.testCaseNewHot101 = newSource[rowIndex];
$scope.addTestCaseNewHot101ClickSign = false;
}
};
$scope.addTestCaseNewHot101(options);
} else {
$scope.baseAlert($config.i18nInfo.alertTitle, $config.i18nInfo.alertPlsSelectRows || "请选中行数据!");
}
};
单表,新页面编辑-管理页
/**
* GLPaaS生成
* 复制 常用案例NewHot103
*/
$scope.testCopyTestCaseNewHot103 = function(options){
var checkedRows = $scope.testCaseNewHot103Grid.getCheckedRows();
if (angular.isArray(checkedRows) && checkedRows.length==1) {
var id = checkedRows[0].wmsInbReceiptOneId;
var urlParams = {
wmsInbReceiptOneId: id,
methodType: 'COPY',
openType: '1'
};
var url = "html/sample/test/testCaseNewHot103Add.html";
url = $scope.urlParamsSerializer(url, urlParams);
var resource = {
sysResourceId : 'testCaseNewHot103_add_',
urlTitle : '新增常用案例NewHot103',
url : url
};
var indexScope = top.angular.element("body").scope();
indexScope.addTab(resource);
indexScope.$apply();
} else {
$scope.baseAlert($config.i18nInfo.alertTitle, $config.i18nInfo.alertPlsSelectRow || "请选中一条行数据!");
}
};
单表,新页面编辑-编辑页
/**
* GLPaaS生成
* 复制 常用案例NewHot103
*/
$scope.testCopy = function(options){
var id = Params.wmsInbReceiptOneId
var urlParams = {
wmsInbReceiptOneId: id,
methodType: 'COPY',
openType: '1'
};
var url = "html/sample/test/testCaseNewHot103Add.html";
url = $scope.urlParamsSerializer(url, urlParams);
var resource = {
sysResourceId : 'testCaseNewHot103_add_',
urlTitle : '新增常用案例NewHot103',
url : url
};
var indexScope = top.angular.element("body").scope();
indexScope.addTab(resource);
indexScope.$apply();
};
单表,表单内编辑
/**
* GLPaaS生成
* 复制 常用案例NewHot102
*/
$scope.testCopyTestCaseNewHot102 = function(options){
var checkedRows = $scope.testCaseNewHot102Grid.getCheckedRows();
if (Arrays.isNotEmptyArray(checkedRows) && checkedRows.length==1) {
var copyRow = angular.copy(checkedRows[0]);
angular.extend(copyRow, {
wmsInbReceiptOneId: $scope.testCaseNewHot102GridId++,
rowStatus : 4,
receivePersonName:$scope.$sessionAttrs.loginUser.userNameCn,remark:'AT001' });
var options = {
newRow: copyRow
};
$scope.addTestCaseNewHot102(options);
} else {
$scope.baseAlert($config.i18nInfo.alertTitle, $config.i18nInfo.alertPlsSelectRow || "请选中一条行数据!");
}
};
2.3.弹窗复制2.3.弹窗复制
目前只支持弹窗后交互方式为表单
配置
1.对象建模–业务对象–业务对象管理:编辑业务对象,在【方法定义】tab页找到复制对应的方法并编辑,在【基本信息】tab页填写跳转地址。
代码
/**
* GLPaaS生成
* 复制 常用案例NewHot101
*/
$scope.testCopyTestCaseNewHot101 = function(options) {
var isDataModified = $scope._pageState.isDataModified($scope.boStatusOptions);
if (isDataModified) {
$scope.baseAlert("提示", "请先保存页面数据!");
return;
}
var url = $scope.urlParamsSerializer('/html/sample/test/testCaseNewHot101batchUpdate.html', {
openType: '2',
boName: 'TestCaseNewHot101',
methodType: 'COPY',
methodName: 'testCopy',
copyUrl: '/testCaseNewHot101/testCoopy'
});
var checkedRows = $scope.testCaseNewHot101Grid.getCheckedRows();
if (checkedRows.length == 0) {
$scope.baseAlert("提示", "暂无选中的记录");
return;
}
var options = {
title: '复制',
closable: true,
modal: true,
url: url,
width: 900,
height: 700,
data: checkedRows
};
$scope.showUrl(options);
};
3.常用扩展3.常用扩展
3.1复制新增(旧表格)3.1复制新增(旧表格)
自定义JS代码参考如下:
$scope.copyAndAdd = function() {
var data = angular.copy($scope.traCoaHeader); // 主对象
data.traCoaTermss = angular.copy($scope.traCoaTermss); // 子对象
data.traCoaTermss.traCoaRatev = angular.copy($scope.traCoaRatev); // 孙子对象
var url = "/html/vcm/coaHeader/traCoaHeaderAdd.html";
var openType = "1";
if (url.indexOf("?")>=0){
url = url + "&openType=" + openType;
} else {
url = url + "?openType=" + openType;
}
var resource = {
sysResourceId : 'traCoaHeader_add',
urlTitle : '新增合同',
url : url
};
top.angular.element("body").scope().traCoaHeader =data;
var indexScope = top.angular.element("body").scope();
indexScope.addTab(resource);
indexScope.$apply();
}
初始化方法自定义JS代码参考如下;
$scope.customTraCoaHeaderInit=function(){
if($scope._pageState.pageType=="add"){
$scope.traCoaHeader.versionNo=0;
}
$scope.data=angular.copy(top.angular.element("body").scope().traCoaHeader);
delete top.angular.element("body").scope().traCoaHeader;
if($scope.data){
debugger;
var tabArray=top.angular.element("body").scope().tabArray;
for(var i =0;i<tabArray.length;i++){
if(tabArray[i].sysResourceId =="traCoaHeader_view"){
top.angular.element("body").scope().tabArray.splice(i,1);
}
}
$scope.traCoaHeader=$scope.data; //主表赋值
$scope.traCoaTermss=$scope.data.traCoaTermss;//子表赋值
$scope.traCoaTermss.traCoaRatev=$scope.data.traCoaTermss.traCoaRatev;//孙子表赋值
}
};