TonyKang пре 7 година
родитељ
комит
4dad897e9e

+ 25 - 0
modules/reports/controllers/rpt_tpl_controller.js

@@ -345,6 +345,31 @@ let mExport = {
                 callback(req, res, false, 'The report template was updated successfully!', true);
             }
         });
+    },
+    copyRptTpl: function (req, res) {
+        let params = JSON.parse(req.body.params),
+            orgRptTplId = params.orgRptTplId,
+            newID = params.newRptTplId;
+        let filter = {"ID": orgRptTplId};
+        RptTplModel.findOne(filter, '-_id').exec().then(function(baseTplRst) {
+            if (baseTplRst) {
+                let _doc = baseTplRst["_doc"];
+                _doc["ID"] = newID;
+                if (_doc["GROUP_KEY"].indexOf("(Copy)") < 0) {
+                    _doc["GROUP_KEY"] = _doc["GROUP_KEY"] + "(Copy)";
+                }
+                let rptTpl = new RptTplModel(_doc);
+                rptTpl.save(function (err, actTplRst) {
+                    if (err) {
+                        callback(req,res, "报表模板创建错误", "", null);
+                    } else {
+                        callback(req,res, false, "", newID);
+                    }
+                });
+            } else {
+                callback(req, res, 'Create report template failed!', null);
+            }
+        });
     }
 };
 

+ 1 - 0
modules/reports/routes/rpt_tpl_router.js

@@ -27,6 +27,7 @@ module.exports = function (app) {
     rptTplRouter.post('/createDftRptTpl', reportTplController.createDftRptTpl);
     rptTplRouter.post('/getRefRptTpl', reportTplController.getRefRptTpl);
     rptTplRouter.post('/updateRptTpl', reportTplController.updateRptTpl);
+    rptTplRouter.post('/copyRptTpl', reportTplController.copyRptTpl);
     rptTplRouter.post('/getCompilationList', reportTplController.getCompilationList);
     rptTplRouter.post('/getCustomizeCfg', reportTplController.getCustomerCfg);
     rptTplRouter.post('/saveCustomerCfg', reportTplController.saveCustomerCfg);

+ 47 - 23
web/maintain/report/js/rpt_tpl_main.js

@@ -62,6 +62,12 @@ let zTreeOprObj = {
         params.isPhysically = true;
         CommonAjax.postEx("report_tpl_api/removeTreeRootNode", params, 5000, isAsync, callback, failCallback, null);
     },
+    copyReportTemplate: function(rawNode, newID, isAsync, callback, failCallback) {
+        let params = {};
+        params.orgRptTplId = rawNode.ID;
+        params.newRptTplId = newID;
+        CommonAjax.postEx("report_tpl_api/copyRptTpl", params, 5000, isAsync, callback, failCallback, null);
+    },
     updateTreeRootNode: function(rawNode, isAsync, callback, failCallback) {
         let params = {};
         params.doc = rawNode;
@@ -303,33 +309,43 @@ let zTreeOprObj = {
     onDrop: function (event, treeId, treeNodes, targetNode, moveType, isCopy) {
         let me = zTreeOprObj;
         let targetTopNode = me.getTopNodeByCurrentNode(targetNode);
-        let newTopNode = me.buildRootNodeDoc(targetTopNode);
+        let newTopNode = null;
         let canContinue = false;
-        me.updateTreeRootNode(newTopNode, false, function(rst){
-            if (!(rst)) {
-                $("#id_after_saved_lbl")[0].style.color = "red";
-                $("#id_after_saved_lbl")[0].innerHTML = "移动请求失败!";
-                setTimeout(function(){
-                    $("#id_after_saved_lbl")[0].innerHTML = "";
-                }, 1000);
-            } else {
-                canContinue = true;
-            }
-        });
-        if (canContinue && !isCopy && me.moveSrcTopNode) {
-            let newSrcTopNode = me.buildRootNodeDoc(me.moveSrcTopNode);
-            me.updateTreeRootNode(newSrcTopNode, true, function(rst){
+        if (isCopy) {
+            me.getNewNodeID(1, function (newNodeID) {
+                treeNodes[0].refId = newNodeID;
+                newTopNode = me.buildRootNodeDoc(targetTopNode);
+                me.copyReportTemplate(treeNodes[0], newNodeID, true, function(goodResult){
+                    me.updateTreeRootNode(newTopNode, false, function(rst){
+                        if (!(rst)) {
+                            displayMessage("移动请求失败!", "red", 1000);
+                        } else {
+                            canContinue = true;
+                        }
+                    });
+                }, function(badResult){
+                    displayMessage("Copy请求失败!", "red", 1000);
+                });
+            });
+        } else {
+            newTopNode = me.buildRootNodeDoc(targetTopNode);
+            me.updateTreeRootNode(newTopNode, false, function(rst){
                 if (!(rst)) {
-                    $("#id_after_saved_lbl")[0].style.color = "red";
-                    $("#id_after_saved_lbl")[0].innerHTML = "移动请求失败!";
-                    setTimeout(function(){
-                        $("#id_after_saved_lbl")[0].innerHTML = "";
-                    }, 1000);
+                    displayMessage("移动请求失败!", "red", 1000);
+                } else {
+                    canContinue = true;
                 }
             });
-            //
+            if (canContinue && !isCopy && me.moveSrcTopNode) {
+                let newSrcTopNode = me.buildRootNodeDoc(me.moveSrcTopNode);
+                me.updateTreeRootNode(newSrcTopNode, true, function(rst){
+                    if (!(rst)) {
+                        displayMessage("移动请求失败!", "red", 1000);
+                    }
+                });
+            }
+            me.moveSrcTopNode = null;
         }
-        me.moveSrcTopNode = null;
     },
     changeUser: function (dom) {
         if (dom.id === "custRptOpt") {
@@ -657,4 +673,12 @@ let zTreeOprObj = {
         }
         return resultPNode;
     }
-};
+};
+
+function displayMessage(message, color, disappearTime) {
+    $("#id_after_saved_lbl")[0].style.color = color;
+    $("#id_after_saved_lbl")[0].innerHTML = message;
+    setTimeout(function(){
+        $("#id_after_saved_lbl")[0].innerHTML = "";
+    }, disappearTime);
+}