Przeglądaj źródła

报表新增工程类型属性

lishihao 1 rok temu
rodzic
commit
a096cef9ea

+ 15 - 0
web/maintain/report/html/rpt_tpl_dtl_info.html

@@ -80,6 +80,21 @@
                     <div class="input-group-addon">报表模板级别</div>
                     <select class="form-control input-sm" id="element_Flags_tplType" onchange="zTreeOprObj.onChangeFlag('rptTplType', this)"><option value ="NA">N/A</option><option value ="construct">建设项目级别</option><option value ="single">单项工程级别</option><option value ="unit">单位工程级别</option></select>
                 </div>
+                <div class="input-group col-2">
+                    <div class="input-group-addon">工程类型</div>
+                    <select class="form-control input-sm" id="element_prjFlags_select"
+                        onchange="zTreeOprObj.onChangeFlag('valuationType', this)">
+                        <option value="NA">N/A</option>
+                        <option value="suggestion">建议估算</option>
+                        <option value="feasibility">可行性估算</option>
+                        <option value="rough">概算</option>
+                        <option value="bill">预算</option>
+                        <option value="three_bill_budget">三级清单预算</option>
+                        <option value="ration">清单预算</option>
+                        <option value="changeBudget">变更预算</option>
+                        <option value="settlement">结算</option>
+                    </select>
+                </div>
             </div>
             <!--
             -->

+ 188 - 179
web/maintain/report/js/rpt_tpl_main.js

@@ -16,7 +16,7 @@ const
     NODE_LEVEL_USER = 0;
 
 let rptTplObj = {
-    iniPage: function() {
+    iniPage: function () {
         zTreeOprObj.getCompilationList();
         rpt_tpl_cfg_helper.getReportTplCfg();
         selectableFiledTreeOprObj.iniTree();
@@ -33,23 +33,23 @@ let zTreeOprObj = {
     moveSrcTopNode: null,
     dupTplIds: null,
     hasRefreshedDupRefIds: false,
-    getCompilationList: function(){
+    getCompilationList: function () {
         let me = zTreeOprObj, params = {};
-        CommonAjax.postEx("report_tpl_api/getCompilationList", params, 20000, true, function(result){
-                //console.log(result);
-                for (let item of result) {
-                    // if (item.is_release) {
-                        $("#compilations").append("<option value='" + item._id + "'>" + item.name + "</option>");
-                    // }
-                }
-                // me.getReportTemplateTree($("#compilations").get(0));
-                me.getReportTemplateTreeEx($("#compilations").get(0));
-            }, null, null
+        CommonAjax.postEx("report_tpl_api/getCompilationList", params, 20000, true, function (result) {
+            //console.log(result);
+            for (let item of result) {
+                // if (item.is_release) {
+                $("#compilations").append("<option value='" + item._id + "'>" + item.name + "</option>");
+                // }
+            }
+            // me.getReportTemplateTree($("#compilations").get(0));
+            me.getReportTemplateTreeEx($("#compilations").get(0));
+        }, null, null
         );
     },
-    refreshNodes: function() {
+    refreshNodes: function () {
         let me = this;
-        let private_setupIsParent = function(node){
+        let private_setupIsParent = function (node) {
             // if (node.nodeType === RT.NodeType.NODE || node.level === 0) {
             if (node.nodeType === RT.NodeType.NODE || node.level <= NODE_LEVEL_COMPILATION_NEW) {
                 node.isParent = true;
@@ -68,7 +68,7 @@ let zTreeOprObj = {
         }
         me.treeObj.refresh();
     },
-    removeTreeRootNode: function(rawNode, isAsync, callback, failCallback) {
+    removeTreeRootNode: function (rawNode, isAsync, callback, failCallback) {
         let params = {};
         params.compilationId = rawNode.compilationId;
         params.engineerId = rawNode.engineerId;
@@ -76,13 +76,13 @@ let zTreeOprObj = {
         params.isPhysically = true;
         CommonAjax.postEx("report_tpl_api/removeTreeRootNode", params, 5000, isAsync, callback, failCallback, null);
     },
-    copyReportTemplate: function(orgID, newID, isAsync, callback, failCallback) {
+    copyReportTemplate: function (orgID, newID, isAsync, callback, failCallback) {
         let params = {};
         params.orgRptTplId = orgID;
         params.newRptTplId = newID;
         CommonAjax.postEx("report_tpl_api/copyRptTpl", params, 5000, isAsync, callback, failCallback, null);
     },
-    updateTreeRootNode: function(rawNode, isAsync, callback, failCallback) {
+    updateTreeRootNode: function (rawNode, isAsync, callback, failCallback) {
         let params = {};
         params.doc = rawNode;
         CommonAjax.postEx("report_tpl_api/updateTreeRootNode", params, 5000, isAsync, callback, failCallback, null);
@@ -119,7 +119,7 @@ let zTreeOprObj = {
         params.subNode = subNode;
         CommonAjax.postEx("report_tpl_api/updateSubLevelOneNode", params, 5000, isAsync, callback, failCallback, null);
     },
-    createIniNode: function() {
+    createIniNode: function () {
         return {
             nodeType: RT.NodeType.TEMPLATE,
             refId: -1,
@@ -128,7 +128,7 @@ let zTreeOprObj = {
             items: null
         };
     },
-    buildRootNodeDoc: function(topNode, excludeNode) {
+    buildRootNodeDoc: function (topNode, excludeNode) {
         let me = this, rst = null;
         if (topNode) {
             rst = {
@@ -144,7 +144,7 @@ let zTreeOprObj = {
         }
         return rst;
     },
-    getNodePath: function(node, includeCurrentNode) {
+    getNodePath: function (node, includeCurrentNode) {
         const rst = [];
         if (includeCurrentNode && node.level > 1) {
             // 备注:因结构有所变化,这里level判断要>1 (多了一层)
@@ -155,12 +155,12 @@ let zTreeOprObj = {
             rst.unshift(parentNode.name);
             parentNode = parentNode.getParentNode();
             if (parentNode === null || parentNode === undefined || parentNode.level === 0) {
-                rst.splice(0,1); // 删除头节点(后台不需要)
+                rst.splice(0, 1); // 删除头节点(后台不需要)
             }
         }
         return rst;
     },
-    buildSubRootNodeDoc: function(subNode) {
+    buildSubRootNodeDoc: function (subNode) {
         let me = this, rst = null;
         if (subNode) {
             let isReleased = false;
@@ -209,18 +209,18 @@ let zTreeOprObj = {
         return itemRst;
     },
 
-    addHoverDom: function(treeId, treeNode) {
+    addHoverDom: function (treeId, treeNode) {
         let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
-        if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType === RT.NodeType.TEMPLATE) return;
+        if (treeNode.editNameFlag || $("#addBtn_" + treeNode.tId).length > 0 || treeNode.nodeType === RT.NodeType.TEMPLATE) return;
         if (treeNode.level === 0) {
             let addStr = "<span class='button star' id='addBtn_" + treeNode.tId + "' title='新增编办类型' onfocus='this.blur();'></span>";
             sObj.after(addStr);
-            let btn = $("#addBtn_"+treeNode.tId);
-            if (btn) btn.bind("click", function(){
+            let btn = $("#addBtn_" + treeNode.tId);
+            if (btn) btn.bind("click", function () {
                 let rawNode = me.createIniComilationNode();
                 if (!me.chkIfDupCompilationNode(rawNode, treeNode)) {
                     rawNode.userId = treeNode.userId;
-                    me.addNewNodeEx(rawNode, function(rst){
+                    me.addNewNodeEx(rawNode, function (rst) {
                         if (rst) {
                             let newNodes = [], isSilent = false;
                             rawNode.isParent = true;
@@ -250,8 +250,8 @@ let zTreeOprObj = {
         } else {
             let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子目录' onfocus='this.blur();'></span>";
             sObj.after(addStr);
-            let btn = $("#addBtn_"+treeNode.tId);
-            if (btn) btn.bind("click", function(){
+            let btn = $("#addBtn_" + treeNode.tId);
+            if (btn) btn.bind("click", function () {
                 me.getNewNodeID(1, function (newNodeID) {
                     let rawNode = me.createIniNode();
                     rawNode.nodeType = RT.NodeType.NODE;
@@ -280,11 +280,11 @@ let zTreeOprObj = {
                         //*
                         let pathArr = [];
                         let nodeArr = [];
-                        let path = {operation_type: 'add', node_path: []};
+                        let path = { operation_type: 'add', node_path: [] };
                         path.node_path = me.getNodePath(treeNode, true);
                         pathArr.push(path);
                         nodeArr.push(rawNode);
-                        me.partialUpdateTreeNode(newTopNode, pathArr, nodeArr, true, function(rst){
+                        me.partialUpdateTreeNode(newTopNode, pathArr, nodeArr, true, function (rst) {
                             if (!(rst)) {
                                 alert("新增节点失败!");
                             }
@@ -303,8 +303,8 @@ let zTreeOprObj = {
             });
             addStr = "<span class='button blue_core' id='addBtn2_" + treeNode.tId + "' title='新增报表模板' onfocus='this.blur();'></span>";
             sObj.after(addStr);
-            btn = $("#addBtn2_"+treeNode.tId + "");
-            if (btn) btn.bind("click", function(){
+            btn = $("#addBtn2_" + treeNode.tId + "");
+            if (btn) btn.bind("click", function () {
                 // let me = zTreeOprObj;
                 if (treeNode.nodeType === RT.NodeType.NODE || treeNode.level === NODE_LEVEL_COMPILATION_NEW) {
                     me.getNewNodeID(1, function (newNodeID) {
@@ -321,11 +321,11 @@ let zTreeOprObj = {
                         //*
                         let pathArr = [];
                         let nodeArr = [];
-                        let path = {operation_type: 'add', node_path: []};
+                        let path = { operation_type: 'add', node_path: [] };
                         path.node_path = me.getNodePath(treeNode, true);
                         pathArr.push(path);
                         nodeArr.push(rawNode);
-                        me.partialUpdateTreeNode(topNode, pathArr, nodeArr, true, function(rst){
+                        me.partialUpdateTreeNode(topNode, pathArr, nodeArr, true, function (rst) {
                             if (!(rst)) {
                                 alert("新增节点失败!");
                             }
@@ -344,11 +344,11 @@ let zTreeOprObj = {
             });
         }
     },
-    removeHoverDom: function(treeId, treeNode) {
-        $("#addBtn_"+treeNode.tId).unbind().remove();
-        $("#addBtn2_"+treeNode.tId).unbind().remove();
+    removeHoverDom: function (treeId, treeNode) {
+        $("#addBtn_" + treeNode.tId).unbind().remove();
+        $("#addBtn2_" + treeNode.tId).unbind().remove();
     },
-    addNewNodeEx: function(rawNode, callback, failCallback) {
+    addNewNodeEx: function (rawNode, callback, failCallback) {
         let params = {};
         params.doc = rawNode;
         CommonAjax.postEx("report_tpl_api/createTreeRootNode", params, 5000, true, callback, failCallback, null);
@@ -357,7 +357,7 @@ let zTreeOprObj = {
         let me = zTreeOprObj;
         let topPNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
         let newTopNode = me.buildRootNodeDoc(topPNode);
-        me.updateTreeRootNode(newTopNode, true, function(rst){
+        me.updateTreeRootNode(newTopNode, true, function (rst) {
             if (!(rst)) {
                 alert("修改发布状态失败!");
             }
@@ -428,7 +428,7 @@ let zTreeOprObj = {
                 treeNodes[0].ID = newNodeID;
                 if (confirm("是否引用相同的报表模板?")) {
                     newTopNode = me.buildRootNodeDoc(targetTopNode);
-                    me.updateTreeRootNode(newTopNode, false, function(goodRst){
+                    me.updateTreeRootNode(newTopNode, false, function (goodRst) {
                         canContinue = true;
                         if (treeNodes[0].rptTpl) {
                             treeNodes[0].rptTpl.ID = newNodeID;
@@ -437,7 +437,7 @@ let zTreeOprObj = {
                         me.chkAndSetDupRefTplIds(me.treeObj.getNodes(), null);
                         me.treeObj.refresh();
                         me.chkAndRreshRefTpl();
-                    }, function(badRst){
+                    }, function (badRst) {
                         displayMessage("更新模板节点失败!", "red", 2000);
                         // console.log(badRst.toString());
                         console.log(badRst);
@@ -446,8 +446,8 @@ let zTreeOprObj = {
                     treeNodes[0].refId = newNodeID;
                     // targetNode.refId = newNodeID; //targetNode可以是父节点也可以是兄弟节点,没必要引用相同的tplID
                     newTopNode = me.buildRootNodeDoc(targetTopNode);
-                    me.copyReportTemplate(orgID, newNodeID, true, function(goodResult){
-                        me.updateTreeRootNode(newTopNode, true, function(goodRst){
+                    me.copyReportTemplate(orgID, newNodeID, true, function (goodResult) {
+                        me.updateTreeRootNode(newTopNode, true, function (goodRst) {
                             canContinue = true;
                             // treeObj.updateNode(nodes[0]);
                             zTreeOprObj.treeObj.updateNode(treeNodes[0]);
@@ -458,12 +458,12 @@ let zTreeOprObj = {
                             me.chkAndSetDupRefTplIds(me.treeObj.getNodes(), null);
                             me.treeObj.refresh();
                             me.chkAndRreshRefTpl();
-                        }, function(badRst){
+                        }, function (badRst) {
                             displayMessage("更新模板节点失败!", "red", 2000);
                             // console.log(badRst.toString());
                             console.log(badRst);
                         });
-                    }, function(badResult){
+                    }, function (badResult) {
                         displayMessage("Copy请求失败!", "red", 2000);
                         // console.log(badResult.toString());
                         console.log(badResult);
@@ -475,19 +475,19 @@ let zTreeOprObj = {
             // }
         } else {
             newTopNode = me.buildRootNodeDoc(targetTopNode);
-            me.updateTreeRootNode(newTopNode, false, function(rst){
+            me.updateTreeRootNode(newTopNode, false, function (rst) {
                 canContinue = true;
                 me.currentNode = treeNodes[0];
-            }, function(badResult){
+            }, function (badResult) {
                 displayMessage("移动请求失败!", "red", 2000);
                 console.log(badResult.toString());
                 canContinue = false;
             });
             if (canContinue && !isCopy && me.moveSrcTopNode) {
                 let newSrcTopNode = me.buildRootNodeDoc(me.moveSrcTopNode);
-                me.updateTreeRootNode(newSrcTopNode, true, function(rst){
+                me.updateTreeRootNode(newSrcTopNode, true, function (rst) {
                     // canContinue = true;
-                }, function(badResult){
+                }, function (badResult) {
                     displayMessage("移动请求失败!", "red", 2000);
                     canContinue = true;
                 });
@@ -495,7 +495,7 @@ let zTreeOprObj = {
             me.moveSrcTopNode = null;
         }
     },
-    addReportTemplate: function(newUsers) {
+    addReportTemplate: function (newUsers) {
         let me = zTreeOprObj, params = {};
         params.compilationId = $("#compilations").get(0).value;
         params.userId = [];
@@ -509,11 +509,11 @@ let zTreeOprObj = {
             allEngIds.push(item.value);
         }
         params.engineerId = allEngIds;
-        CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
-            result.sort(function(item1, item2){
+        CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function (result) {
+            result.sort(function (item1, item2) {
                 let rst = 0;
                 if (item1.userId === item2.userId) {
-                    rst = (item1.engineerId > item2.engineerId)?1:((item1.engineerId < item2.engineerId)?-1:0);
+                    rst = (item1.engineerId > item2.engineerId) ? 1 : ((item1.engineerId < item2.engineerId) ? -1 : 0);
                 } else {
                     if (item1.userId === "-100") {
                         rst = 1
@@ -527,7 +527,7 @@ let zTreeOprObj = {
                             if (idx1 >= 0 && idx2 >= 0) {
                                 break;
                             }
-                            rst = (idx1 > idx2)?1:((idx1 < idx2)?-1:0);
+                            rst = (idx1 > idx2) ? 1 : ((idx1 < idx2) ? -1 : 0);
                         }
                     }
                 }
@@ -537,7 +537,7 @@ let zTreeOprObj = {
             let allTopTplNodes = [];
             for (let user of newUsers) {
                 allTopUserIdNodes.push(user.userId);
-                allTopTplNodes.push({userId: user.userId, name: user.real_name, items: [], isParent: true});
+                allTopTplNodes.push({ userId: user.userId, name: user.real_name, items: [], isParent: true });
             }
             for (let item of result) {
                 let uidx = allTopUserIdNodes.indexOf(item.userId);
@@ -633,8 +633,8 @@ let zTreeOprObj = {
     getReportTemplateTreeEx: function (compilationSelect) {
         let me = zTreeOprObj, params = {};
         params.compilationId = compilationSelect.value;
-        CommonAjax.postEx("report_tpl_api/getTplTreeByCompilation", params, 20000, true, function(result){
-            result.sort(function(item1, item2){
+        CommonAjax.postEx("report_tpl_api/getTplTreeByCompilation", params, 20000, true, function (result) {
+            result.sort(function (item1, item2) {
                 let rst = 0;
                 if (item1.userId === "-100") {
                     rst = -1;
@@ -645,7 +645,7 @@ let zTreeOprObj = {
             });
             // me.chkAndSetDupRefTplIds(result);
             // console.log(dupRefIds);
-            let allTopTplNodes = [{userId: "-100", name: "公共模板", items:[], isParent: true, refId: ""}];
+            let allTopTplNodes = [{ userId: "-100", name: "公共模板", items: [], isParent: true, refId: "" }];
             if (result.length > 0) {
                 if (!result[0].hasOwnProperty("refId")) {
                     result[0].refId = "";
@@ -665,7 +665,7 @@ let zTreeOprObj = {
                     for (let itemIdx = 1; itemIdx < result.length; itemIdx++) {
                         let item = result[itemIdx];
                         if (item.userId === user._id) {
-                            allTopTplNodes.push({userId: user.userId, name: user.real_name, items: [], isParent: true, refId: ""});
+                            allTopTplNodes.push({ userId: user.userId, name: user.real_name, items: [], isParent: true, refId: "" });
                             allTopTplNodes[allTopTplNodes.length - 1].items.push(result[itemIdx]);
                             break;
                         }
@@ -718,11 +718,11 @@ let zTreeOprObj = {
         }
         return rst;
     },
-    createIniComilationNode: function() {
+    createIniComilationNode: function () {
         //在新的需求下,无需工程id
         let rst = {
             compilationId: $("#compilations").get(0).selectedOptions[0].value,
-            userId: (userAccount ===  'admin')?("-100"):userID,
+            userId: (userAccount === 'admin') ? ("-100") : userID,
             properties: [],
             released: true,
             isDeleted: false,
@@ -731,7 +731,7 @@ let zTreeOprObj = {
         };
         return rst;
     },
-    onBeforeRemove: function(treeId, treeNode){
+    onBeforeRemove: function (treeId, treeNode) {
         let canRemove = false;
         if (treeNode.level > NODE_LEVEL_USER) {
             if (!(treeNode.items) || treeNode.items.length < 1) {
@@ -744,13 +744,13 @@ let zTreeOprObj = {
         }
         return canRemove;
     },
-    onRemove: function(e, treeId, treeNode){
+    onRemove: function (e, treeId, treeNode) {
         if (treeNode.level > NODE_LEVEL_USER) {
             let me = zTreeOprObj,
                 topPNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW);
             let rawNode = me.buildRootNodeDoc(topPNode, treeNode);
             if (treeNode.level === NODE_LEVEL_COMPILATION_NEW) {
-                me.removeTreeRootNode(rawNode, true, function(rst){
+                me.removeTreeRootNode(rawNode, true, function (rst) {
                     if (!(rst)) {
                         alert("删除请求失败!");
                     }
@@ -763,7 +763,7 @@ let zTreeOprObj = {
                 // });
                 let pathArr = [];
                 let nodeArr = [];
-                let path = {operation_type: 'delete', node_path: []};
+                let path = { operation_type: 'delete', node_path: [] };
                 path.node_path = me.getNodePath(treeNode, true);
                 pathArr.push(path);
                 nodeArr.push('');
@@ -779,12 +779,12 @@ let zTreeOprObj = {
     },
     beforeEditName: function (treeId, treeNode) {
         if (treeNode.level > NODE_LEVEL_COMPILATION_NEW) {
-            setTimeout(function(){
+            setTimeout(function () {
                 let ip = $("#" + treeNode.tId + IDMark_Input);
                 if (ip.length > 0) {
                     ip[0].className = "individualRename";
                 } else {
-                    setTimeout(function(){
+                    setTimeout(function () {
                         let ip = $("#" + treeNode.tId + IDMark_Input);
                         if (ip.length > 0) {
                             ip[0].className = "individualRename";
@@ -799,13 +799,13 @@ let zTreeOprObj = {
             return false;
         }
     },
-    beforeRename: function(treeId, treeNode, newName, isCancel) {
+    beforeRename: function (treeId, treeNode, newName, isCancel) {
         if (newName.length === 0) {
             return false;
         }
         return true;
     },
-    onRename : function(e, treeId, treeNode, isCancel) {
+    onRename: function (e, treeId, treeNode, isCancel) {
         if (!isCancel) {
             let me = zTreeOprObj;
             if (treeNode.level === 0) {
@@ -814,7 +814,7 @@ let zTreeOprObj = {
                 let subTopNode = me.getParentNodeByNodeLevel(treeNode, NODE_LEVEL_COMPILATION_NEW + 1);
                 let topPNode = subTopNode.getParentNode();
                 let rawNode = me.buildSubRootNodeDoc(subTopNode);
-                me.updateSubNode(topPNode, rawNode, true, function(rst){
+                me.updateSubNode(topPNode, rawNode, true, function (rst) {
                     if (!(rst)) {
                         alert('修改名称请求失败!');
                     }
@@ -822,17 +822,17 @@ let zTreeOprObj = {
             }
         }
     },
-    onChangeFlag: function(flagProp, flagDom){
+    onChangeFlag: function (flagProp, flagDom) {
         let me = zTreeOprObj;
         if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE) {
             if (!me.currentNode.hasOwnProperty("flags")) {
                 me.currentNode.flags = {};
             }
-            me.currentNode.flags[flagProp] = (flagDom.selectedOptions[0].value === 'NA')?null:flagDom.selectedOptions[0].value;
+            me.currentNode.flags[flagProp] = (flagDom.selectedOptions[0].value === 'NA') ? null : flagDom.selectedOptions[0].value;
             let subTopNode = me.getParentNodeByNodeLevel(me.currentNode, NODE_LEVEL_COMPILATION_NEW + 1);
             let topPNode = subTopNode.getParentNode();
             let rawNode = me.buildSubRootNodeDoc(subTopNode);
-            me.updateSubNode(topPNode, rawNode, true, function(rst){
+            me.updateSubNode(topPNode, rawNode, true, function (rst) {
                 if (!(rst)) {
                     alert('修改标记:[' + flagProp + '] 失败!');
                 }
@@ -858,14 +858,14 @@ let zTreeOprObj = {
             params.engineerId = topPNode.engineerId;
             params.userId = topPNode.userId;
             params.subNode = rawNode;
-            CommonAjax.postEx("report_tpl_api/createDftRptTpl", params, 10000, true, function(result){
-                    if (result) {
-                        me.currentNode.rptTpl = result;
-                        me.chkAndRreshRefTpl();
-                    } else {
-                        alert('update error!');
-                    }
-                }, null, null
+            CommonAjax.postEx("report_tpl_api/createDftRptTpl", params, 10000, true, function (result) {
+                if (result) {
+                    me.currentNode.rptTpl = result;
+                    me.chkAndRreshRefTpl();
+                } else {
+                    alert('update error!');
+                }
+            }, null, null
             );
         }
     },
@@ -882,7 +882,7 @@ let zTreeOprObj = {
         }
         return true;
     },
-    onClick: function(event,treeId,treeNode) {
+    onClick: function (event, treeId, treeNode) {
         let me = zTreeOprObj;
         me.currentNode = treeNode;
         bandTreeOprObj.currentNode = null;
@@ -936,124 +936,133 @@ let zTreeOprObj = {
         }
         return rst;
     },
-    chkAndRreshRefTpl: function(forceRefresh) {
+    chkAndRreshRefTpl: function (forceRefresh) {
         let me = zTreeOprObj, params = {};
+        const valuationTypes = ['suggestion', 'feasibility', 'rough', 'bill', 'three_bill_budget', 'ration', 'changeBudget', 'settlement'];
         if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
             if (forceRefresh || !(me.currentNode.rptTpl)) {
                 params.rptTplId = me.currentNode.refId;
-                CommonAjax.postEx("report_tpl_api/getRefRptTpl", params, 20000, true, function(result){
-                        me.currentNode.rptTpl = result;
-                        me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
-                        if (me.currentNode.rptTpl["GROUP_KEY"]) {
-                            let grp_keys = me.currentNode.rptTpl["GROUP_KEY"].split('_');
-                            if (grp_keys.length > 0) {
-                                grp_keys[1] = me.currentNode.name;
-                            }
-                            me.currentNode.rptTpl["GROUP_KEY"] = grp_keys.join("_");
+                CommonAjax.postEx("report_tpl_api/getRefRptTpl", params, 20000, true, function (result) {
+                    me.currentNode.rptTpl = result;
+                    me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
+                    if (me.currentNode.rptTpl["GROUP_KEY"]) {
+                        let grp_keys = me.currentNode.rptTpl["GROUP_KEY"].split('_');
+                        if (grp_keys.length > 0) {
+                            grp_keys[1] = me.currentNode.name;
                         }
-                        tplHelper.refreshTplView(me.currentNode.rptTpl);
-                        if (me.currentNode.hasOwnProperty('flags')) {
-                            if (me.currentNode.flags.hasOwnProperty('taxType')) {
-                                let val = parseInt(me.currentNode.flags['taxType']);
-                                $("#element_flags_select")[0].selectedIndex = val;
-                            } else {
-                                $("#element_flags_select")[0].selectedIndex = 0;
-                            }
-                            if (me.currentNode.flags.hasOwnProperty('constructSumType')) {
-                                let val = me.currentNode.flags['constructSumType'];
-                                if (val === 'constructSum') {
-                                    $("#element_constructSumFlags_select")[0].selectedIndex = 1;
-                                } else {
-                                    $("#element_constructSumFlags_select")[0].selectedIndex = 0;
-                                }
+                        me.currentNode.rptTpl["GROUP_KEY"] = grp_keys.join("_");
+                    }
+                    tplHelper.refreshTplView(me.currentNode.rptTpl);
+                    if (me.currentNode.hasOwnProperty('flags')) {
+                        if (me.currentNode.flags.hasOwnProperty('taxType')) {
+                            let val = parseInt(me.currentNode.flags['taxType']);
+                            $("#element_flags_select")[0].selectedIndex = val;
+                        } else {
+                            $("#element_flags_select")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('constructSumType')) {
+                            let val = me.currentNode.flags['constructSumType'];
+                            if (val === 'constructSum') {
+                                $("#element_constructSumFlags_select")[0].selectedIndex = 1;
                             } else {
                                 $("#element_constructSumFlags_select")[0].selectedIndex = 0;
                             }
-                            if (me.currentNode.flags.hasOwnProperty('auditType')) {
-                                let val = me.currentNode.flags['auditType'];
-                                if (val === 'audit_compare') {
-                                    $("#element_constructSumFlags_audit")[0].selectedIndex = 1;
-                                } else if (val === 'project_compare') {
-                                	$("#element_constructSumFlags_audit")[0].selectedIndex = 2;
-                            	} else {
-                                    $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
-                                }
+                        } else {
+                            $("#element_constructSumFlags_select")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('auditType')) {
+                            let val = me.currentNode.flags['auditType'];
+                            if (val === 'audit_compare') {
+                                $("#element_constructSumFlags_audit")[0].selectedIndex = 1;
+                            } else if (val === 'project_compare') {
+                                $("#element_constructSumFlags_audit")[0].selectedIndex = 2;
                             } else {
                                 $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
                             }
-                            if (me.currentNode.flags.hasOwnProperty('budgetType')) {
-                                let val = me.currentNode.flags['budgetType'];
-                                if (val === '1') {
-                                    $("#element_Flags_budgetType")[0].selectedIndex = 1;
-                                } else if (val === '2') {
-                                    $("#element_Flags_budgetType")[0].selectedIndex = 2;
-                                } else {
-                                    $("#element_Flags_budgetType")[0].selectedIndex = 0;
-                                }
+                        } else {
+                            $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('budgetType')) {
+                            let val = me.currentNode.flags['budgetType'];
+                            if (val === '1') {
+                                $("#element_Flags_budgetType")[0].selectedIndex = 1;
+                            } else if (val === '2') {
+                                $("#element_Flags_budgetType")[0].selectedIndex = 2;
                             } else {
                                 $("#element_Flags_budgetType")[0].selectedIndex = 0;
                             }
-                            if (me.currentNode.flags.hasOwnProperty('budgetSumType')) {
-                                let val = me.currentNode.flags['budgetSumType'];
-                                if (val === 'budget_construct') {
-                                    $("#element_Flags_budgetSummaryType")[0].selectedIndex = 1;
-                                } else if (val === 'budget_single') {
-                                    $("#element_Flags_budgetSummaryType")[0].selectedIndex = 2;
-                                } else {
-                                    $("#element_Flags_budgetSummaryType")[0].selectedIndex = 0;
-                                }
+                        } else {
+                            $("#element_Flags_budgetType")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('budgetSumType')) {
+                            let val = me.currentNode.flags['budgetSumType'];
+                            if (val === 'budget_construct') {
+                                $("#element_Flags_budgetSummaryType")[0].selectedIndex = 1;
+                            } else if (val === 'budget_single') {
+                                $("#element_Flags_budgetSummaryType")[0].selectedIndex = 2;
                             } else {
                                 $("#element_Flags_budgetSummaryType")[0].selectedIndex = 0;
                             }
-                            if (me.currentNode.flags.hasOwnProperty('budgetCalcType')) {
-                                let val = me.currentNode.flags['budgetCalcType'];
-                                if (val === 'budget_cacl_type1') {
-                                    $("#element_Flags_budgetCalcType")[0].selectedIndex = 1;
-                                } else {
-                                    $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
-                                }
+                        } else {
+                            $("#element_Flags_budgetSummaryType")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('budgetCalcType')) {
+                            let val = me.currentNode.flags['budgetCalcType'];
+                            if (val === 'budget_cacl_type1') {
+                                $("#element_Flags_budgetCalcType")[0].selectedIndex = 1;
                             } else {
                                 $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
                             }
-                            if (me.currentNode.flags.hasOwnProperty('rptTplType')) {
-                                let val = me.currentNode.flags['rptTplType'];
-                                if (val === 'construct') {
-                                    $("#element_Flags_tplType")[0].selectedIndex = 1;
-                                } else if (val === 'single') {
-                                    $("#element_Flags_tplType")[0].selectedIndex = 2;
-                                } else if (val === 'unit') {
-                                    $("#element_Flags_tplType")[0].selectedIndex = 3;
-                                } else {
-                                    $("#element_Flags_tplType")[0].selectedIndex = 0;
-                                }
+                        } else {
+                            $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('valuationType')) {
+                            let vType = me.currentNode.flags['valuationType'];
+                            let vtIdx = valuationTypes.indexOf(vType);
+                            $("#element_prjFlags_select")[0].selectedIndex = vtIdx + 1;
+                        } else {
+                            $("#element_prjFlags_select")[0].selectedIndex = 0;
+                        }
+                        if (me.currentNode.flags.hasOwnProperty('rptTplType')) {
+                            let val = me.currentNode.flags['rptTplType'];
+                            if (val === 'construct') {
+                                $("#element_Flags_tplType")[0].selectedIndex = 1;
+                            } else if (val === 'single') {
+                                $("#element_Flags_tplType")[0].selectedIndex = 2;
+                            } else if (val === 'unit') {
+                                $("#element_Flags_tplType")[0].selectedIndex = 3;
                             } else {
                                 $("#element_Flags_tplType")[0].selectedIndex = 0;
                             }
                         } else {
-                            $("#element_flags_select")[0].selectedIndex = 0;
-                            $("#element_constructSumFlags_select")[0].selectedIndex = 0;
-                            $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
-                            $("#element_Flags_budgetType")[0].selectedIndex = 0;
-                            $("#element_Flags_budgetSummaryType")[0].selectedIndex = 0;
-                            $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
                             $("#element_Flags_tplType")[0].selectedIndex = 0;
                         }
+                    } else {
+                        $("#element_flags_select")[0].selectedIndex = 0;
+                        $("#element_constructSumFlags_select")[0].selectedIndex = 0;
+                        $("#element_constructSumFlags_audit")[0].selectedIndex = 0;
+                        $("#element_Flags_budgetType")[0].selectedIndex = 0;
+                        $("#element_Flags_budgetSummaryType")[0].selectedIndex = 0;
+                        $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
+                        $("#element_Flags_tplType")[0].selectedIndex = 0;
+                        $("#element_prjFlags_select")[0].selectedIndex = 0;
+                    }
 
-                        if ($("#rpt_tpl_visual_tab")[0].className === "nav-link p-1 active") {
-                            setTimeout(function(){visualJumbo.iniSpreadJs(); visualJumbo.setupTpl()}, 50)
-                        }
-                    }, null, null
+                    if ($("#rpt_tpl_visual_tab")[0].className === "nav-link p-1 active") {
+                        setTimeout(function () { visualJumbo.iniSpreadJs(); visualJumbo.setupTpl() }, 50)
+                    }
+                }, null, null
                 );
             } else {
                 me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
                 tplHelper.refreshTplView(me.currentNode.rptTpl);
                 if ($("#rpt_tpl_visual_tab")[0].className === "nav-link p-1 active") {
-                    setTimeout(function(){visualJumbo.iniSpreadJs(); visualJumbo.setupTpl()}, 50)
+                    setTimeout(function () { visualJumbo.iniSpreadJs(); visualJumbo.setupTpl() }, 50)
                 }
             }
         }
     },
-    getRefTpl: function() {
+    getRefTpl: function () {
         let me = zTreeOprObj, rst = null;
         if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
             rst = me.currentNode.rptTpl
@@ -1101,11 +1110,11 @@ let zTreeOprObj = {
 let userListObj = {
     foundedUserList: [],
     UserIdList: [],
-    pushUser: function(user, newUsers) {
+    pushUser: function (user, newUsers) {
         let me = userListObj;
         if (me.UserIdList.indexOf(user._id) < 0) {
             me.UserIdList.push(user._id);
-            let newUser = {userId: user._id, real_name: user.real_name, username: user.username, mobile: user.mobile};
+            let newUser = { userId: user._id, real_name: user.real_name, username: user.username, mobile: user.mobile };
             me.foundedUserList.push(newUser);
             if (newUsers) {
                 newUsers.push(newUser);
@@ -1116,11 +1125,11 @@ let userListObj = {
         let key = $("#rpt_user_input1").get(0).value;
         let newUsers = [];
         $.ajax({
-            type:"GET",
+            type: "GET",
             url: "user/search?keyword=" + key,
             cache: false,
             timeout: 5000,
-            success: function(result){
+            success: function (result) {
                 if (result.data && result.data.length > 0) {
                     for (let user of result.data) {
                         userListObj.pushUser(user, newUsers);
@@ -1130,21 +1139,21 @@ let userListObj = {
                     }
                 }
             },
-            error: function(jqXHR, textStatus, errorThrown){
+            error: function (jqXHR, textStatus, errorThrown) {
             }
         });
     },
     findUsersByIds: function (userIds, cb) {
         let params = {};
         params.userIds = userIds;
-        CommonAjax.postEx("user/getUserList", params, 20000, true, function(result){
-                for (let user of result) {
-                    userListObj.pushUser(user, null);
-                }
-                if (cb) {
-                    cb(result);
-                }
-            }, null, null
+        CommonAjax.postEx("user/getUserList", params, 20000, true, function (result) {
+            for (let user of result) {
+                userListObj.pushUser(user, null);
+            }
+            if (cb) {
+                cb(result);
+            }
+        }, null, null
         );
     }
 };
@@ -1154,7 +1163,7 @@ function displayMessage(message, color, disappearTime, id) {
     if (!domId) domId = "id_after_saved_lbl";
     $("#" + domId)[0].style.color = color;
     $("#" + domId)[0].innerHTML = message;
-    setTimeout(function(){
+    setTimeout(function () {
         $("#" + domId)[0].innerHTML = "";
     }, disappearTime);
 }