瀏覽代碼

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionOperation into 1.0.0_online

zhongzewei 7 年之前
父節點
當前提交
738a0054a8

+ 13 - 1
modules/reports/rpt_component/helper/jpc_helper_field.js

@@ -70,7 +70,19 @@ let JpcFieldHelper = {
                 }
                 if (!isFounded) {
                     if (rstFields) rstFields.push(tab_fields[i]);
-                    if (rstFieldsIdx) rstFieldsIdx.push(JV.BLANK_FIELD_INDEX);
+                    if (rstFieldsIdx) {
+                        if (rptTpl[JV.NODE_NO_MAPPING_FIELDS] && rptTpl[JV.NODE_NO_MAPPING_FIELDS].length > 0) {
+                            for (let discretField of rptTpl[JV.NODE_NO_MAPPING_FIELDS]) {
+                                if (discretField[JV.PROP_ID] === tab_fields[i]["FieldID"]) {
+                                    rstFieldsIdx.push(discretField);
+                                    isFounded = true;
+                                    break;
+                                }
+                            }
+                        } else {
+                            rstFieldsIdx.push(JV.BLANK_FIELD_INDEX);
+                        }
+                    }
                 }
             }
         }

+ 3 - 3
modules/reports/rpt_component/jpc_ex.js

@@ -173,16 +173,16 @@ JpcExSrv.prototype.createNew = function(){
         //pre-condition: the data should be sorted in SQL/NoSQL level!
         //let dt1 = new Date();
         if (me.flowTab) {
-            me.flowTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0));
+            me.flowTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0), me);
             if (me.flowTabEx) {
                 me.flowTabEx.sorting(rptTpl, dataObj, dataHelper.exDataSeq.slice(0));
             }
         }
         if (me.billTab) {
-            me.billTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0));
+            me.billTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0), me);
         }
         if (me.crossTab) {
-            me.crossTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0));
+            me.crossTab.sorting(rptTpl, dataObj, dataHelper.dataSeq.slice(0), me);
         }
         //let dt2 = new Date();
         //alert(dt2 - dt1);

+ 4 - 4
modules/reports/rpt_component/jpc_rte.js

@@ -63,8 +63,8 @@ let JE = {
             dataObj[field.DataNodeName][field.DataSeq][valIdx] = newValue;
         }
     },
-    getFieldValue: function (field, dataObj, valIdx, dftVal) {
-        let rst = dftVal;
+    getFieldValue: function (field, dataObj, valIdx, newVal) {
+        let rst = newVal;
         if (field.DataNodeName === "NA") {
             if (!field[JV.PROP_AD_HOC_DATA]) {
                 field[JV.PROP_AD_HOC_DATA] = [];
@@ -72,7 +72,7 @@ let JE = {
             if (field[JV.PROP_AD_HOC_DATA].length > valIdx) {
                 rst = field[JV.PROP_AD_HOC_DATA][valIdx];
             } else {
-                if (dftVal === null && field[JV.PROP_AD_HOC_DATA].length > 0) {
+                if (newVal === null && field[JV.PROP_AD_HOC_DATA].length > 0) {
                     rst = field[JV.PROP_AD_HOC_DATA][field[JV.PROP_AD_HOC_DATA].length - 1];
                 }
             }
@@ -86,7 +86,7 @@ let JE = {
             if (dataObj[field.DataNodeName][field.DataSeq].length > valIdx) {
                 rst = dataObj[field.DataNodeName][field.DataSeq][valIdx];
             } else {
-                if (dftVal === null && dataObj[field.DataNodeName][field.DataSeq].length > 0) {
+                if (newVal === null && dataObj[field.DataNodeName][field.DataSeq].length > 0) {
                     rst = dataObj[field.DataNodeName][field.DataSeq][dataObj[field.DataNodeName][field.DataSeq].length - 1];
                 }
             }

+ 1 - 1
package.json

@@ -15,7 +15,7 @@
     "express-partials": "^0.3.0",
     "express-session": "^1.15.1",
     "glob": "~4.0.5",
-    "lodash": "^3.10.1",
+    "lodash": "^4.17.10",
     "moment": "^2.18.1",
     "mongoose": "~4.13.12",
     "request": "^2.79.0",

+ 40 - 0
public/web/id_tree.js

@@ -607,6 +607,46 @@ var idTree = {
             success = true;
             return success;
         };
+        Tree.prototype.m_downLevel = function (nodes) {
+            let pre = nodes[0].preSibling ; //第一个节点的前一节点,即会成为新的父节点
+            let next ;//最后一个节点的后一节点,会成为pre 的下一个节点
+            let last ;//选中的最后一个节点,nextSibling要设置为0
+            for( let n of nodes){
+                next = n.nextSibling;
+                last = n;
+                let  children = n.parent?n.parent.children:this.roots;
+                children.splice(n.siblingIndex(), 1);
+                pre.addChild(n);
+            }
+            if (!pre.expanded) {
+                pre.setExpanded(true);
+            }
+            pre.setNextSibling(next);
+            last.nextSibling = null;
+            tools.sortTreeItems(this);
+            return true;
+        };
+
+        Tree.prototype.getDownLevelDatas = function (nodes) {
+            let dataMap = {},updateDatas=[],nextID,last;//注释同m_downLevel 方法
+            let newParent = nodes[0].preSibling;//{"type":"update","data":{"ID":3,"ParentID":-1,"NextSiblingID":5}}
+            for(let n of nodes){
+                nextID = n.getNextSiblingID();
+                last = n;
+                dataMap[n.getID()] = {"ID":n.getID(),"ParentID":newParent.getID()}//修改父ID;
+            }
+            dataMap[newParent.getID()] = {"ID":newParent.getID(),"NextSiblingID":nextID}//设置新的父节点的下一个节点ID;
+            if(dataMap[last.getID()]!==undefined){//把最后一个节点的下一个节点ID变成-1
+                dataMap[last.getID()].NextSiblingID = -1
+            }else {
+                dataMap[last.getID()] = {"ID":last.getID(),"NextSiblingID":-1};
+            }
+            for(let key in dataMap){
+                updateDatas.push({type: 'update', data:dataMap[key]});
+            }
+            return updateDatas;
+
+        };
 
         Tree.prototype.getDeleteData = function (node) {
             var data = [];

+ 13 - 0
public/web/tree_sheet/tree_sheet_controller.js

@@ -157,6 +157,19 @@ var TREE_SHEET_CONTROLLER = {
                 }
             }
         };
+        controller.prototype.m_downLevel = function (nodes) { //多选降级
+            var that = this;
+            if (this.tree.m_downLevel(nodes)) {
+                TREE_SHEET_HELPER.massOperationSheet(that.sheet, function () {
+                    TREE_SHEET_HELPER.refreshNodesVisible([nodes[0].parent], that.sheet, true);
+                    //that.sheet.showRow(that.tree.selected.serialNo(), GC.Spread.Sheets.VerticalPosition.center);
+                    if (that.event.refreshBaseActn) {
+                        that.event.refreshBaseActn(that.tree);
+                    }
+                });
+            }
+
+        };
         controller.prototype.upMove = function () {
             var that = this, sels = this.sheet.getSelections();
             if (this.tree.selected) {

+ 16 - 9
test/demo/stringTest.js

@@ -19,15 +19,22 @@ let strUtil = require('../../public/stringUtil');
 //     t.end();
 // })
 
-test('string test1', function(t){
-    let str = "abc|def";
-    // let str1 = str.replace('|', '\n');
-    // let str1 = strUtil.replaceAll(str, "|", "\n\r");
-    // let str1 = strUtil.replaceAll(str, "\|", "+");
-    let str1 = str.split('|').join('\n\r');
-    console.log(str1);
-    //t.equal(str1, "@('1.1') + @('1.2') + @('1.3') + @('1.4')");
-    // t.equal(str1, "at('1.1') + at('1.2') + at('1.3') + at('1.4')");
+// test('string test1', function(t){
+//     let str = "abc|def";
+//     // let str1 = str.replace('|', '\n');
+//     // let str1 = strUtil.replaceAll(str, "|", "\n\r");
+//     // let str1 = strUtil.replaceAll(str, "\|", "+");
+//     let str1 = str.split('|').join('\n\r');
+//     console.log(str1);
+//     //t.equal(str1, "@('1.1') + @('1.2') + @('1.3') + @('1.4')");
+//     // t.equal(str1, "at('1.1') + at('1.2') + at('1.3') + at('1.4')");
+//     t.end();
+// })
+
+test('string encodeURI', function(t){
+    let str = "a\tdef";
+    console.log(str);
+    console.log(str.replace('\t', ' '));
     t.end();
 })
 

+ 55 - 38
web/maintain/bill_template_lib/js/bills_template_edit.js

@@ -223,6 +223,7 @@ $(document).ready(function () {
         setButtonValid(tree.selected && tree.selected.canUpMove(), $('#upMove'));
         setButtonValid(tree.selected && tree.selected.canDownMove(), $('#downMove'));
         setButtonValid(tree.selected ? true : false, $('#delete'));
+        
     };
     let RefreshBillsData = function (datas) {
         datas.forEach(function (data) {
@@ -326,8 +327,6 @@ $(document).ready(function () {
     let controller = TREE_SHEET_CONTROLLER.createNew(tree, billsSpread.getActiveSheet(), TEMPLATE_BILLS_SETTING);
     let fixedFlagMap = getNameToValueMap(billsFixedFlagList);
     let typeMap = getNameToValueMap(billsTypeFlagList);
-    console.log(fixedFlagMap);
-    console.log(typeMap);
     //format code
     //billsSpread.getSheet(0).setFormatter(-1, 1, '@');
     controller.bind('refreshBaseActn', RefreshBaseActn);
@@ -433,44 +432,15 @@ $(document).ready(function () {
     $('#delete').click(function () {
         let me = this;
         $(me).addClass('disabled');
-        let selection = controller.sheet.getSelections()[0], updateData,deleteMap={},deleteNodes=[];
-        for(let i=0;i < selection.rowCount;i++){
-            let tem_node = controller.tree.items[selection.row+i];
-            if(i == 0){//第一个直接添加;
-                deleteMap[tem_node.getID()] = tem_node;
-                deleteNodes.push(tem_node);
-            }else {
-                setNodeToMapAndArray(tem_node,deleteMap,deleteNodes);
-            }
-        }
-
+        let [deleteMap,deleteNodes] = getNodesAndMapFromSheet(controller);
         if (deleteNodes.length > 0) {
-            updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
+            let updateData = controller.tree.getDeleteDatas(deleteMap,deleteNodes);
             CommonAjax.post(updateUrl, updateData, function (data) {
                 controller.m_delete(deleteNodes);
                 controller.showTreeData();
                 $(me).removeClass('disabled');
             });
         }
-        function setNodeToMapAndArray(node,map,array) {
-            let nodeID = node.getID();
-            if(map[nodeID]==undefined||map[nodeID]==null){
-                newMap(node,node.parent,map,array)
-            }
-            function newMap(node,parent,map,array) {
-                let nodeID =node.getID();
-                if(parent==null){//说明已经是最顶层了
-                    map[nodeID]=node;
-                    array.push(node);
-                }else {
-                    let parentID = parent.getID();
-                    if(map[parentID]==undefined||map[parentID]==null){
-                        newMap(node,parent.parent,map,array);
-                    }
-                }
-            }
-        }
-
     });
     $('#upLevel').click(function () {
         let me = this;
@@ -488,11 +458,21 @@ $(document).ready(function () {
     $('#downLevel').click(function () {
         let me = this;
         $(me).addClass('disabled');
-        var selected = controller.tree.selected, updateData;
-        if (selected) {
-            updateData = selected.getDownLevelData();
-            CommonAjax.post(updateUrl, updateData, function (data) {
-                controller.downLevel();
+        let [dMap,dNodes] = getNodesAndMapFromSheet(controller);
+        let newNodes = [dNodes[0]];
+        if(dNodes.length > 1){//如果是多选,则去掉与第一个节点不同级的节点
+            for(let i = 1;i<dNodes.length;i++){
+                if(dNodes[i].parent == dNodes[0].parent) newNodes.push(dNodes[i])
+            }
+        }
+        let updateDatas = controller.tree.getDownLevelDatas(newNodes);
+        if(updateDatas.length > 0){
+            CommonAjax.post(updateUrl, updateDatas, function (data) {
+                controller.m_downLevel(newNodes);
+                for(let u of updateDatas){
+                    let node = controller.tree.findNode(u.data.ID);
+                    refreshNodeData(node,u.data);
+                }
                 controller.showTreeData();
                 $(me).removeClass('disabled');
             });
@@ -524,4 +504,41 @@ $(document).ready(function () {
             });
         }
     });
+    function getNodesAndMapFromSheet(controller) {//表格中选中的节点整理,只留下父节点
+        let selection = controller.sheet.getSelections()[0],map={},nodes=[];
+        for(let i=0;i < selection.rowCount;i++){
+            let tem_node = controller.tree.items[selection.row+i];
+            if(i == 0){//第一个直接添加;
+                map[tem_node.getID()] = tem_node;
+                nodes.push(tem_node);
+            }else {
+                setNodeToMapAndArray(tem_node,map,nodes);
+            }
+        }
+        return [map,nodes];
+    }
+    function setNodeToMapAndArray(node,map,array) {
+        let nodeID = node.getID();
+        if(map[nodeID]==undefined||map[nodeID]==null){
+            newMap(node,node.parent,map,array)
+        }
+        function newMap(node,parent,map,array) {
+            let nodeID =node.getID();
+            if(parent==null){//说明已经是最顶层了
+                map[nodeID]=node;
+                array.push(node);
+            }else {
+                let parentID = parent.getID();
+                if(map[parentID]==undefined||map[parentID]==null){
+                    newMap(node,parent.parent,map,array);
+                }
+            }
+        }
+    }
+    function refreshNodeData(node,data) {
+        for(let key in data){
+            if(key == 'ID') continue;
+            node.data[key] = data[key];
+        }
+    }
 });