复制

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

1.1.复制新增(旧表格) 1.1.复制新增(旧表格)

此功能的场景是在编辑页面自定义一个拷贝新增按钮,点击这个拷贝新增按钮后会复制当前页面的主表、子表、孙子表数据到新增页面,同时关闭编辑页面。
例如:点击一个复制新增按钮,然后可以把主表、子表、孙子表数据一起拷贝下来,然后在新增页面显示。

1.2.复制功能配置文档1.2.复制功能配置

  • 目前复制功能都时前端的复制,需要用户点击保存后数据才能存储到数据库中
  • 表格内编辑的复制是针对多条数据的,表单内和新页面的复制是单条数据的复制但是可以复制主子对象
  • 界面仅仅是个按钮效果
  • 复制功能-效果1

    1.3.弹窗复制1.3.弹窗复制

    复制方法支持以弹窗方式复制并可以修改数据。

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

    2.1.复制新增(旧表格)2.1.复制新增(旧表格)

    1. 对象建模–业务对象–业务对象管理:编辑业务对象,点击【方法定义】tab页,新增一个方法。
      新增方法定义2
    2. 在BsCtrl.js扩展文件中添加自定义代码,具体代码可参考【3.1复制新增(旧表格)】。
    3. 在【方法定义】tab页新增一个提供给用户使用的初使化方法,
      初始化方法
    4. 在初始化方法自定义JS添加自定义代码,具体代码可参考【3.1复制新增(旧表格)】。

    2.2.复制功能配置文档2.2.复制功能配置

    1. 对象建模–业务对象–业务对象管理:点击【方法定义】tab页,业务对象-方法定义:编辑业务对象,点击新增按钮新增方法,选择方法的类型为【复制】类型。
      复制功能-配置1
    2. 点击【复制】页签,配置复制规则。
      复制功能-配置2
      其中:
      1). 左侧树结构展示业务对象结构:可点击切换对象属性列表
      2). 左侧表格表示默认复制,值与原对象不变。且此处不会显示主键,公共字段属性。
      3). 右侧表格表示自定义复制规则
      默认值类型:
      不处理:不赋值
      变量:字符串或数字
      表达式:方法或运算
      固定值:平台默认值,如当前角色、当前用户等
      4). 通过左右按钮,批量编辑方法属性

    3. 配置完后,点击方法定义上的保存按钮保存数据。

    4. 业务对象-方法定义:点击【可视化布局】按钮进入可视化编辑,配置复制按钮
      复制功能-配置3

    5. 提交对象,生成代码后在业务系统启动后执行复制方法。

    代码

    单表,表格内编辑复制案例代码示例

    /**
        * 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页填写跳转地址。
    弹窗复制1

    代码

    /**
     * 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;//孙子表赋值        
        }   
    };  
    

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

    5.5.0,2019.06.05

    新特性

  • 复制功能配置
  • 5.7.K,2019.09.05

    新特性

  • 弹窗复制