Pārlūkot izejas kodu

报表模板JS方式导入导出

TonyKang 7 gadi atpakaļ
vecāks
revīzija
eaccec3eab

+ 39 - 17
web/maintain/report/js/rpt_tpl_helper.js

@@ -34,9 +34,40 @@ let tplHelper = {
         return rst;
     },
 
-    confirmAndCreateTpl: function(treeNode) {
-        if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.nodeType == RT.NodeType.TEMPLATE) {
-            //
+    getJsTxt: function(destDom) {
+        let me = this;
+        if (destDom && me.reCombineRptTpl()) {
+            let rptTpl = zTreeOprObj.currentNode.rptTpl;
+            destDom.value = JSON.stringify(rptTpl, null, 4);
+        }
+    },
+
+    setFromJsTxt: function (srcDom) {
+        if (srcDom && zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId > 0 &&
+            confirm("导入将覆盖原模板所有信息,请确认!")) {
+            try {
+                let rptTpl = JSON.parse(srcDom.value);
+                // JSON.format()
+                delete rptTpl["__v"];
+                delete rptTpl["_id"];
+                rptTpl["ID"] = zTreeOprObj.currentNode.rptTpl["ID"];
+                //以下从zTreeOprObj.chkAndRreshRefTpl中参考
+                zTreeOprObj.currentNode.rptTpl = rptTpl;
+                zTreeOprObj.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = zTreeOprObj.currentNode.name;
+                if (zTreeOprObj.currentNode.rptTpl["GROUP_KEY"]) {
+                    let grp_keys = zTreeOprObj.currentNode.rptTpl["GROUP_KEY"].split('_');
+                    if (grp_keys.length > 0) {
+                        grp_keys[1] = zTreeOprObj.currentNode.name;
+                    }
+                    zTreeOprObj.currentNode.rptTpl["GROUP_KEY"] = grp_keys.join("_");
+                }
+                tplHelper.refreshTplView(zTreeOprObj.currentNode.rptTpl);
+                displayMessage("导入成功!", "green", 1000, "id_after_js_load_lbl");
+            } catch (ex) {
+                console.log(ex);
+                // alert("导入失败!请仔细检查JS对象的正确性");
+                displayMessage("导入失败!请仔细检查JS对象的正确性!", "red", 3000, "id_after_js_load_lbl");
+            }
         }
     },
 
@@ -73,6 +104,8 @@ let tplHelper = {
             preHandleObj.hide_all_dom();
             //6. 计算式
             calculationTreeOprObj.iniTree(rptTpl);
+            //7. 刷白js对象text区域
+            document.getElementById('tplScriptTextContent').value = "";
             //9. 刷白预览区域
             let canvas = $('#tplCanvas')[0];
             JpcCanvasOutput.cleanCanvas(canvas);
@@ -84,26 +117,15 @@ let tplHelper = {
     saveRptTpl: function () {
         let me = this, params = null;
         if (me.reCombineRptTpl()) {
-            $("#id_after_saved_lbl")[0].style.color = "yellow";
-            $("#id_after_saved_lbl")[0].innerHTML = "正在保存...";
+            displayMessage("正在保存...", "yellow", 1000);
             let rptTpl = zTreeOprObj.currentNode.rptTpl;
             params = {};
             params.rptTpl = JSON.stringify(rptTpl);
             CommonAjax.postEx("report_tpl_api/updateRptTpl", params, 20000, true, function(result){
                     if (result) {
-                        //alert('update succeeded!')
-                        $("#id_after_saved_lbl")[0].style.color = "green";
-                        $("#id_after_saved_lbl")[0].innerHTML = "保存成功!";
-                        setTimeout(function(){
-                            $("#id_after_saved_lbl")[0].innerHTML = "";
-                        }, 1000);
+                        displayMessage("保存成功!", "green", 1000);
                     } else {
-                        // alert('update failed!');
-                        $("#id_after_saved_lbl")[0].style.color = "red";
-                        $("#id_after_saved_lbl")[0].innerHTML = "保存失败!";
-                        setTimeout(function(){
-                            $("#id_after_saved_lbl")[0].innerHTML = "";
-                        }, 2000);
+                        displayMessage("保存失败!", "red", 1000);
                     }
                 }, null, null
             );

+ 6 - 4
web/maintain/report/js/rpt_tpl_main.js

@@ -865,10 +865,12 @@ let userListObj = {
     }
 };
 
-function displayMessage(message, color, disappearTime) {
-    $("#id_after_saved_lbl")[0].style.color = color;
-    $("#id_after_saved_lbl")[0].innerHTML = message;
+function displayMessage(message, color, disappearTime, id) {
+    let domId = id;
+    if (!domId) domId = "id_after_saved_lbl";
+    $("#" + domId)[0].style.color = color;
+    $("#" + domId)[0].innerHTML = message;
     setTimeout(function(){
-        $("#id_after_saved_lbl")[0].innerHTML = "";
+        $("#" + domId)[0].innerHTML = "";
     }, disappearTime);
 }

+ 6 - 0
web/maintain/report/rpt_tpl_detail.html

@@ -19,6 +19,10 @@
             <li class="nav-item">
                 <a class="nav-link p-1" data-toggle="tab" href="#rpttplformula" role="tab">计算式</a>
             </li>
+            <li class="nav-item">
+                <a class="nav-link p-1" data-toggle="tab" href="#rpttplscripttxt" role="tab">模板JS对象</a>
+            </li>
+
         </ul>
         <div class="tab-content">
             <!--模板信息-->
@@ -33,6 +37,8 @@
             <%include ./rpt_tpl_detail_pre_handle.html %>
             <!--计算式-->
             <%include ./rpt_tpl_detail_calculation.html %>
+            <!--java script 对象-->
+            <%include ./rpt_tpl_script_text.html %>
         </div>
     </div>
 </div>

+ 14 - 0
web/maintain/report/rpt_tpl_script_text.html

@@ -0,0 +1,14 @@
+<div class="tab-pane" id="rpttplscripttxt" role="tabpanel">
+    <div class="sub-button p-2">
+        <button class="btn btn-primary" onclick="tplHelper.getJsTxt(document.getElementById('tplScriptTextContent'))">生成JS文本</button>
+        <button class="btn btn-primary" onclick="tplHelper.setFromJsTxt(document.getElementById('tplScriptTextContent'))">导入JS文本</button>
+        <label id="id_after_js_load_lbl" style="color:yellowgreen;font-weight:bold">...</label>
+    </div>
+    <div class="main-data">
+        <div class="p-2" id="exprDetail">
+            <div class="form-group">
+                <textarea rows="35" cols="106" id="tplScriptTextContent"></textarea>
+            </div>
+        </div>
+    </div>
+</div>