Bladeren bron

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

zhongzewei 6 jaren geleden
bovenliggende
commit
34809bff60

+ 2 - 2
modules/users/models/compilation_model.js

@@ -139,7 +139,7 @@ class CompilationModel extends BaseModel {
         condition[sectionString + ".id"] = valuationId;
 
         let updateData = {};
-        updateData[sectionString + ".$.name"] = data.name;
+        updateData[sectionString + ".$.name"] = data.valuationName;
 
         let result = await this.db.update(condition, updateData);
 
@@ -184,7 +184,7 @@ class CompilationModel extends BaseModel {
         }
 
         // 判断名称
-        if (data.name === undefined || data.name === '') {
+        if (data.valuationName === undefined || data.valuationName === '') {
             throw '名称不能为空';
         }
 

+ 65 - 4
public/web/id_tree.js

@@ -607,6 +607,70 @@ var idTree = {
             success = true;
             return success;
         };
+
+        Tree.prototype.m_upLevel = function (nodes) {//原先的父节点变成前一个节点,原先的兄弟节点变成子节点
+            let o_parent = nodes[0].parent;//原来的父节点
+            let o_next = o_parent.nextSibling;//父节点的下一节点
+            let o_pre = nodes[0].preSibling;
+            let o_children = o_parent.children;//旧的所有兄弟节点
+            let children = o_parent.parent?o_parent.parent.children:this.roots;//新的兄弟节点
+            let last;
+            let lastNext;//最后一个选中节点后面的所有兄弟节点变成最后一个节点的子节点
+            for(let i = 0; i<nodes.length;i++){
+                let index = children.indexOf(o_parent) + 1;
+                children.splice(index + i,0,nodes[i]);//往新的父节点的子节点插入节点
+                o_children.splice(nodes[i].siblingIndex(), 1);//旧的数组删除节点
+                if(i == 0){//第一个节点变成原来父节点的下一节点
+                    o_parent.setNextSibling(nodes[i]);
+                    if(o_pre) o_pre.setNextSibling(null); //第一个选中节点的前一节点的下一节点设置为空
+                }
+                nodes[i].setParent(o_parent.parent);
+                last = nodes[i];
+                lastNext = last.nextSibling;
+            }
+            last.setNextSibling(o_next);//最后一个选中的节点的下一个节点设置为原父节点的下一节点
+            if(lastNext){
+                let t_index = o_children.indexOf(lastNext);
+                for(let j = t_index;j <o_children.length;j++ ){//剩下的添加为最后一个选中节点的子节点
+                    last.addChild(o_children[j]);
+                }
+                if(o_children.length > t_index)  o_children.splice(t_index, o_children.length - t_index);//从原先的children中移除
+            }
+            if (o_parent.parent&& !o_parent.parent.expanded)  o_parent.parent.setExpanded(true);
+            tools.sortTreeItems(this);
+            return true;
+        };
+        Tree.prototype.getUpLevelDatas = function (nodes) {
+            //getParentID
+            let o_parentID =  nodes[0].getParentID();
+            let o_children = nodes[0].parent.children;//旧的所有兄弟节点
+            let o_pre = nodes[0].preSibling;
+            let new_parentID = nodes[0].parent.getParentID();
+            let o_nextID = nodes[0].parent.getNextSiblingID();
+            let dataMap = {},updateDatas=[],lastID,lastNext;
+            for(let i = 0; i<nodes.length;i++){
+                if(i == 0){
+                    dataMap[o_parentID] = {"ID":o_parentID,"NextSiblingID":nodes[i].getID()};
+                    if(o_pre) dataMap[o_pre.getID()] = {"ID":o_pre.getID(),"NextSiblingID":-1}; //nodes[i].preSibling.setNextSibling(null);
+                }
+                dataMap[nodes[i].getID()] = {"ID":nodes[i].getID(),"ParentID":new_parentID};
+                lastID = nodes[i].getID();
+                lastNext = nodes[i].nextSibling;
+            }
+            if(dataMap[lastID] !== undefined){
+                dataMap[lastID].NextSiblingID = o_nextID;
+            }
+            if(lastNext){
+                let t_index = o_children.indexOf(lastNext);
+                for(let j = t_index;j <o_children.length;j++ ){//剩下的添加为最后一个选中节点的子节点
+                    dataMap[o_children[j].getID()] = {"ID":o_children[j].getID(),"ParentID":lastID};
+                }
+            }
+            for(let key in dataMap){
+                updateDatas.push({type: 'update', data:dataMap[key]});
+            }
+            return updateDatas;
+        };
         Tree.prototype.m_downLevel = function (nodes) {
             let pre = nodes[0].preSibling ; //第一个节点的前一节点,即会成为新的父节点
             let next ;//最后一个节点的后一节点,会成为pre 的下一个节点
@@ -618,9 +682,7 @@ var idTree = {
                 children.splice(n.siblingIndex(), 1);
                 pre.addChild(n);
             }
-            if (!pre.expanded) {
-                pre.setExpanded(true);
-            }
+            if (!pre.expanded)  pre.setExpanded(true);
             pre.setNextSibling(next);
             last.nextSibling = null;
             tools.sortTreeItems(this);
@@ -645,7 +707,6 @@ var idTree = {
                 updateDatas.push({type: 'update', data:dataMap[key]});
             }
             return updateDatas;
-
         };
 
         Tree.prototype.getDeleteData = function (node) {

+ 14 - 2
public/web/tree_sheet/tree_sheet_controller.js

@@ -157,8 +157,21 @@ var TREE_SHEET_CONTROLLER = {
                 }
             }
         };
+        controller.prototype.m_upLevel = function (nodes) { //多选升级
+            let that = this;
+            if (this.tree.m_upLevel(nodes)) {
+                TREE_SHEET_HELPER.massOperationSheet(that.sheet, function () {
+                    TREE_SHEET_HELPER.refreshNodesVisible([nodes[0]], 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.m_downLevel = function (nodes) { //多选降级
-            var that = this;
+            let 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);
@@ -168,7 +181,6 @@ var TREE_SHEET_CONTROLLER = {
                     }
                 });
             }
-
         };
         controller.prototype.upMove = function () {
             var that = this, sels = this.sheet.getSelections();

+ 15 - 5
web/maintain/bill_template_lib/js/bills_template_edit.js

@@ -445,11 +445,21 @@ $(document).ready(function () {
     $('#upLevel').click(function () {
         let me = this;
         $(me).addClass('disabled');
-        var selected = controller.tree.selected, updateData;
-        if (selected) {
-            updateData = selected.getUpLevelData();
-            CommonAjax.post(updateUrl, updateData, function (data) {
-                controller.upLevel();
+        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.getUpLevelDatas(newNodes);
+        if(updateDatas.length > 0){
+            CommonAjax.post(updateUrl, updateDatas, function (data) {
+                controller.m_upLevel(newNodes);
+                for(let u of updateDatas){
+                    let node = controller.tree.findNode(u.data.ID);
+                    refreshNodeData(node,u.data);
+                }
                 controller.showTreeData();
                 $(me).removeClass('disabled');
             });

+ 39 - 7
web/maintain/material_replace_lib/js/material_replace_edit.js

@@ -20,7 +20,7 @@ let materialOjb = {
     },
     materialSetting:{
         header: [
-            {headerName: "材料编号", headerWidth: 180, dataCode: "code", dataType: "String"},
+            {headerName: "材料编号", headerWidth: 180, dataCode: "code", dataType: "String",formatter: "@"},
             {headerName: "材料名称", headerWidth: 240, dataCode: "name", dataType: "String",cellType:'tipsCell'},
             {headerName: "规格", headerWidth: 150, dataCode: "specs", hAlign: "left", dataType: "String",cellType:'tipsCell'}
         ],
@@ -41,6 +41,8 @@ let materialOjb = {
         this.billsSheet.name('billsSheet');
         this.billsSheet.bind(GC.Spread.Sheets.Events.ValueChanged, this.onBillsValueChange);
         this.billsSheet.bind(GC.Spread.Sheets.Events.SelectionChanged,this.onBillsSelectionChange);
+        this.billsSheet.bind(GC.Spread.Sheets.Events.RangeChanged, this.onBillsRangeChange);
+
         this.initRightClick("billsSpread",this.billsSpread);
 
 
@@ -101,11 +103,39 @@ let materialOjb = {
     },
     refreshSheet:function(){
         sheetCommonObj.showData(this.billsSheet,this.billsSetting,this.billsList);
-        this.billsSheet.setRowCount(this.billsList.length + 1);
+        this.billsSheet.setRowCount(this.billsList.length + 30);
+
+
     },
-    onBillsSelectionChange:function (sander,args) {
+    onBillsSelectionChange:function (sender,args) {
         args.sheet.repaint();
     },
+    onBillsRangeChange:function (sender,args) {
+        let me = materialOjb;
+        let updateDatas = [];
+        if(args.action == GC.Spread.Sheets.RangeChangedAction.paste){
+            for(let c of args.changedCells){
+                let field = me.billsSetting.header[c.col].dataCode;
+                let newValue =  args.sheet.getCell(c.row,c.col).value();
+                if(me.validateBills(field,newValue)){
+                    if(c.row < me.billsList.length){
+                        let data = me.getUpdateData(field,newValue,me.billsList[c.row].code);
+                        if(data) updateDatas.push(data);
+                    }else if(field == 'code'){//如果是在空白行粘贴,并且是编码列,则是新增,其它的忽略;
+                        let data = me.getUpdateData(field,newValue,null);
+                        if(data) updateDatas.push(data);
+                    }
+                }else {
+                    break;
+                }
+            }
+            if(updateDatas.length > 0){
+                me.saveBills(updateDatas);
+                return;
+            }
+        }
+         me.refreshSheet();
+    },
 
     onBillsValueChange: function(sander,args){
         let me = materialOjb;
@@ -126,12 +156,13 @@ let materialOjb = {
 
     validateBills:function (field,value) {
         if(field == 'code'){
+            value = value.toString().replace(/[\s\r\n]/g, "");//去除空格换行等字符;
             if(value.length !== 9){
                 alert("清单长度不正确");
                 return false;
             }
             if(_.find(this.billsList,{'code':value})) {
-                alert("清单已存在");
+                alert("清单:"+value+" 已存在");
                 return false;
             }
         }
@@ -139,10 +170,11 @@ let materialOjb = {
     },
     getUpdateData:function (field,newValue,code) {
         if(field == 'code'){
+            newValue = newValue.toString().replace(/[\s\r\n]/g, "");//去除空格换行等字符;
             if(!isDef(code) || code ==''&&newValue!=null){//说明是新增
                 return {
                     type:'add',
-                    code:newValue.toString(),
+                    code:newValue,
                     libID:$('#libID').val(),
                     billsLibId:parseInt($('#billsLibId').val())
                 }
@@ -150,7 +182,7 @@ let materialOjb = {
                 return {
                     type:'update',
                     oldCode:code.toString(),
-                    newCode:newValue.toString(),
+                    newCode:newValue,
                     libID:$('#libID').val(),
                     billsLibId:parseInt($('#billsLibId').val())
                 }
@@ -192,7 +224,7 @@ let materialOjb = {
     },
     updateCache:function (code,updateData) {
         let bill = _.find(this.billsList,{'code':code});
-        for(let key of updateData){
+        for(let key in updateData){
             bill[key] = updateData[key]
         }
     }

+ 1 - 1
web/users/js/compilation.js

@@ -206,7 +206,7 @@ $(document).ready(function() {
     });
     // 保存计价规则
     $("#save-valuation").click(function() {
-        $("form").submit();
+        $("#saveValuation").submit();
     });
 
     // 移除操作

+ 2 - 2
web/users/views/compilation/add.html

@@ -18,12 +18,12 @@
             </ul>
         </div>
         <div class="c-body">
-            <form action="/compilation/save-valuation" method="post" enctype="application/x-www-form-urlencoded">
+            <form id="saveValuation" action="/compilation/save-valuation" method="post" enctype="application/x-www-form-urlencoded">
                 <div class=" row">
                     <div class="col-md-4">
                         <div class="form-group">
                             <label>名称</label>
-                            <input type="text" class="form-control" name="name" value="<%= valuationData.name %>">
+                            <input type="text" class="form-control" name="valuationName" value="<%= valuationData.name %>">
                         </div>
                     </div>
                     <div class="col-md-12">