zhongzewei 7 anos atrás
pai
commit
1d90f66abe

+ 67 - 6
public/web/tree_table/tree_table.js

@@ -232,14 +232,14 @@
  			_view._removeNodesRowDom([node]);
  		};
 
- 		Tree.prototype.loadData = function (arrData) {
+ 		/*Tree.prototype.loadData = function (arrData) {
  			var i, that = this;
 			var createTempNode = function (id, setting) {
 				var tempData = {};
 				tempData[setting.tree.id] = id;
 				return new Node(that, tempData);
 			};
-			var loadNode = function (data, setting) {
+			var loadNode = function (data, setting) {//mark
 				var	node = that.findNode(data[setting.tree.id]) || null,
  					parent = that.findNode(data[setting.tree.pid]) || null,
  					next = that.findNode(data[setting.tree.nid]) || null,
@@ -282,8 +282,8 @@
  						parent.children.splice(parent.childIndex(next), 0, node);
  					}
  				} else if (node.nextSibling && parent.childIndex(node) !== parent.childIndex(node.nextSibling) - 1) {
-					parent.children.splice(parent.childIndex(node), 1);
-					parent.children.splice(parent.childIndex(next), 0, node);
+					parent.children.splice(parent.childIndex(next), 1);
+					parent.children.splice(parent.childIndex(node) + 1, 0, next);
 				};
 				let pre = that.findNodeByNid(node.data.ID) || null;
 				if(pre && parent.childIndex(pre) !== parent.childIndex(node) - 1){
@@ -295,7 +295,67 @@
  			for (i = 0; i < arrData.length; i++){
  				loadNode(arrData[i], this.setting);
  			}
- 		};
+ 		};*/
+
+		Tree.prototype.loadData = function (arrData) {
+			let i, that = this;
+			let nodesIndex = {};
+			function getPreNode(id){
+				for(let index in nodesIndex){
+					let node = nodesIndex[index];
+					if(node['data'][node.setting.tree.nid] === id){
+						return node;
+					}
+				}
+				return null;
+			}
+			function loadNode (data, setting) {//mark
+				var	node = nodesIndex[data[setting.tree.id]] || null,
+					parent = nodesIndex[data[setting.tree.pid]] || that._root,
+					next = nodesIndex[data[setting.tree.nid]] || null,
+					pre = getPreNode(data[setting.tree.id]) || null,
+					tempData;
+
+				if (!node) {
+					node = new Node(that, data);
+				}
+				that.maxNodeId(node.id());
+				if(parent.childIndex(node) === -1){
+					if(pre && parent.childIndex(pre) !== -1){
+						parent.children.splice(parent.childIndex(pre) + 1, 0, node);
+					}
+					else if(next && parent.childIndex(next) !== -1){
+						parent.children.splice(parent.childIndex(next), 0, node);
+					}
+					else {
+						parent.children.push(node);
+					}
+				}
+				if(pre && parent.childIndex(pre) === -1){
+					parent.children.splice(parent.childIndex(node), 0, pre);
+				}
+				if(next && parent.childIndex(next) === -1){
+					parent.children.splice(parent.childIndex(node) + 1, 0, next);
+				}
+				if(pre && parent.childIndex(pre) !== parent.childIndex(node) - 1){
+					parent.children.splice(parent.childIndex(pre), 1);
+					parent.children.splice(parent.childIndex(node), 0, pre);
+				}
+				if(next && parent.childIndex(next) !== parent.childIndex(node) + 1){
+					parent.children.splice(parent.childIndex(next), 1);
+					parent.children.splice(parent.childIndex(node) + 1, 0, next);
+				}
+				node.parent = parent;
+				node.nextSibling = next;
+			}
+			//建立索引
+			for(let data of arrData){
+				nodesIndex[data.ID] = new Node(that, data);
+			}
+			for (i = 0; i < arrData.length; i++){
+				loadNode(arrData[i], this.setting);
+			}
+		};
 
     	Tree.prototype.refreshNodesDom = function (nodes, recurse){
 			var that = this;
@@ -346,7 +406,8 @@
  						if (iIndex > 0){
  							pre = parent.children[iIndex - 1];
  							pre.setNextSibling(node);
- 							parent.children.splice(iIndex - 1, 0, node);
+ 							//parent.children.splice(iIndex - 1, 0, node);
+ 							parent.children.splice(iIndex, 0, node);
  						} else {
  							parent.children.splice(0, 0, node);
  						}

+ 1 - 1
web/building_saas/main/html/main.html

@@ -544,7 +544,7 @@
         <div class="modal-dialog" role="document">
             <div class="modal-content">
                 <div class="modal-header">
-                    <h5 class="modal-title"><i class="fa fa-superscript"></i> 请选择清单计量单位</h5>
+                    <h5 class="modal-title">请选择清单计量单位</h5>
                     <button type="button" class="close" id='std_bills_unit_close' aria-label="Close">
                         <span aria-hidden="true">&times;</span>
                     </button>

+ 3 - 1
web/building_saas/main/js/views/main_tree_col.js

@@ -379,7 +379,9 @@ $('#column').on('hide.bs.modal', function () {
         projectObj.project.projSetting.main_tree_col.cols[iRow].visible = sheet.getValue(iRow, 0);
         projectObj.project.projSetting.mainGridSetting.cols[iRow].visible = sheet.getValue(iRow, 0);
     }
-    SheetDataHelper.refreshColumnVisible(projectObj.project.projSetting.mainGridSetting, projectObj.mainSpread.getActiveSheet());
+    SheetDataHelper.massOperationSheet(projectObj.mainSpread.getActiveSheet(), function () {
+        SheetDataHelper.refreshColumnVisible(projectObj.project.projSetting.mainGridSetting, projectObj.mainSpread.getActiveSheet());
+    });
     //refresh nodes to autoFitRow
     projectObj.mainController.refreshTreeNode(projectObj.project.mainTree.roots, true);
     projectObj.project.pushNow('editColSetting', projectObj.project.projSetting.moduleName, {

+ 13 - 5
web/building_saas/main/js/views/project_view.js

@@ -256,12 +256,20 @@ var projectObj = {
                         node.data.name = data.name;
                         pageCCOprObj.setItemContentNode(node, data.jobContent, data.itemCharacter, node.data.name);
                         if (/\//.test(data.unit)) {
-                            ConfirmModal.stdBillsUnit.check(data, function (std) {
-                                project.Bills.replaceBills(node.source, std, formatCode);
+                            let existB = projectObj.project.Bills.sameStdCodeBillsData(data.code);
+                            if (existB) {
+                                data.unit = existB.unit;
+                                //
+                                project.Bills.replaceBills(node.source, data, formatCode);
                                 projectObj.mainController.refreshTreeNode([node], false);
-                            }, function () {
-                                projectObj.mainController.refreshTreeNode([node], false);
-                            });
+                            } else {
+                                ConfirmModal.stdBillsUnit.check(data, function (std) {
+                                    project.Bills.replaceBills(node.source, std, formatCode);
+                                    projectObj.mainController.refreshTreeNode([node], false);
+                                }, function () {
+                                    projectObj.mainController.refreshTreeNode([node], false);
+                                });
+                            }
                         } else {
                             project.Bills.replaceBills(node.source, data, formatCode);
                             projectObj.mainController.refreshTreeNode([node], false);

+ 2 - 0
web/building_saas/pm/html/project-management.html

@@ -347,10 +347,12 @@
                     <div class="form-group">
                         <label>计价规则</label>
                         <select class="form-control" id="valuation"><option value="">请选择计价规则</option></select>
+                        <span class="form-text text-danger" id="valuation-info" style="display: none;">请选择计价规则</span>
                     </div>
                     <div class="form-group">
                         <label>工程专业</label>
                         <select class="form-control" id="tender-engineering"><option value="">请选择对应的工程专业</option></select>
+                        <span class="form-text text-danger" id="engineering-info" style="display: none;">请选择工程专业</span>
                     </div>
                 </form>
             </div>

+ 68 - 67
web/building_saas/pm/js/pm_main.js

@@ -269,6 +269,7 @@ $(document).ready(function() {
         let engineeringList = getEngineeringList();
         let engineeringHtml = getEngineeringHtml(engineeringList);
         $("#tender-engineering").html(engineeringHtml);
+        $('#valuation-info').hide();
     });
 
     // 新增单项项目点击
@@ -301,8 +302,8 @@ $(document).ready(function() {
         let nameList = getNameList($('#poj-name-list').children());
         let isExist = hasListName(nameList, pojName);
         if(!isExist){
-            $('#poj-name-info').text('新建 “' + pojName + '”');
-            $('#poj-name-info').show();
+            replaceClass($('#poj-name-info'), 'text-danger', 'text-info');
+            setDangerInfo($('#poj-name-info'), `新建“${pojName}”`);
             //清空单项工程下拉和文件下拉
             setEngOptions(null);
             setFileOptions(null);
@@ -318,8 +319,8 @@ $(document).ready(function() {
         let nameList = getNameList($('#eng-name-list').children());
         let isExist = hasListName(nameList, engName);
         if(!isExist){
-            $('#eng-name-info').text('新建 “' + engName + '”');
-            $('#eng-name-info').show();
+            replaceClass($('#eng-name-info'), 'text-danger', 'text-info');
+            setDangerInfo($('#eng-name-info'), `新建“${engName}”`);
         }
         else {
             $('#eng-name-info').hide();
@@ -334,8 +335,7 @@ $(document).ready(function() {
         let tenderName = $('#tender-name').val().trim();
         let isExist = hasTender(selected, pojName, engName, tenderName);
         if(isExist){
-            $('#tender-name-info').text('已存在 “' + tenderName + '”');
-            $('#tender-name-info').show();
+            setDangerInfo($('#tender-name-info'), `已存在“${tenderName}”`);
         }
         else {
             $('#tender-name-info').hide();
@@ -367,6 +367,8 @@ $(document).ready(function() {
         $('#eng-name-info').hide();
         $('#tender-name-info').hide();
         $('#tender-name').val('');
+        $('#valuation-info').hide();
+        $('#engineering-info').hide();
         //获取建设项目
         let selected = Tree.selected();
         let projs = getProjs(selected);
@@ -461,8 +463,7 @@ $(document).ready(function() {
         let newName = $('#rename-name').val();
         let dialog = $('#rename-dialog');
         if (newName === '') {
-            $('#rename-name-info').text('请输入重命名名称');
-            $('#rename-name-info').show();
+            setDangerInfo($('#rename-name-info'), '请输入重命名');
             return false;
         }
 
@@ -471,8 +472,7 @@ $(document).ready(function() {
             return false;
         }
         RenameProject(select.id(), newName, select.data.ParentID, function () {
-            $('#rename-name-info').text('');
-            $('#rename-name-info').hide();
+            setDangerInfo($('#rename-name-info'), '', false);
             dialog.modal('hide');
             select.data.name = newName;
             Tree.refreshNodesDom([select]);
@@ -634,6 +634,7 @@ $(document).ready(function() {
 
     // 选择工程专业后动态更改费率文件等数据
     $("#tender-engineering").change(function() {
+        $('#engineering-info').hide();
         let engineeringList = getEngineeringList();
         if(engineeringList.length === 0){
             return false;
@@ -689,19 +690,16 @@ function init() {
 function AddProject() {
     let name = $('#project-name').val().trim();
     if (name === '') {
-        $('#project-name-info').text('请填写建设项目名称');
-        $('#project-name-info').show();
+        setDangerInfo($('#project-name-info'), '请填写建设项目名称');
         return false;
     }
     let existCallback = function () {
-        $('#project-name-info').text(`已存在“${$("#project-name").val()}”`);
-        $('#project-name-info').show();
+        setDangerInfo($('#project-name-info'), `已存在“${$("#project-name").val()}”`);
     };
     let sucCallback = function () {
         $('#add-project-dialog').modal('hide');
         $('#project-name').val('');
-        $('#project-name-info').text('');
-        $('#project-name-info').hide();
+        setDangerInfo($('#project-name-info'), '', false);
     };
     let selectedItem = Tree.selected();
 
@@ -731,23 +729,19 @@ function AddProject() {
 //新建建设项目、新建单项工程、新建文件夹、重命名弹窗隐藏事件
 function bindModalsHidden(projDialog, engDialog, folderDialog, renameDialog){
     projDialog.on('hidden.bs.modal', function () {
-        $('#project-name-info').text('');
-        $('#project-name-info').hide();
+        setDangerInfo($('#project-name-info'), '', false);
         $('#project-name').val('');
     });
     engDialog.on('hidden.bs.modal', function () {
-        $('#engineering-name-info').text('');
-        $('#engineering-name-info').hide();
+        setDangerInfo($('#engineering-name-info'), '', false);
         $('#engineering-name').val('');
     });
     folderDialog.on('hidden.bs.modal', function () {
-        $('#folder-name-info').text('');
-        $('#folder-name-info').hide();
+        setDangerInfo($('#folder-name-info'), '', false);
         $('#folder-name').val('');
     });
     renameDialog.on('hidden.bs.modal', function () {
-        $('#rename-name-info').text('');
-        $('#rename-name-info').hide();
+        setDangerInfo($('#rename-name-info'), '', false);
         $('#rename-name').val('');
     });
 }
@@ -760,31 +754,24 @@ function bindInputs(projInput, engInput, foldInput, renameInput){
             return false;
         }
     });
-    //projInput.bind('change', getChangedFunc(projInput, $('#project-name-info')));
-
     engInput.bind('keypress', function (event) {
         if(event.keyCode === 13){
             $('#add-engineering-confirm').click();
             return false;
         }
     });
-    //engInput.bind('change', getChangedFunc(engInput, $('#engineering-name-info')));
-
     foldInput.bind('keypress', function (event) {
         if(event.keyCode === 13){
             $('#add-folder-confirm').click();
             return false;
         }
     });
-   // foldInput.bind('change', getChangedFunc(foldInput, $('#folder-name-info')));
-
     renameInput.bind('keypress', function (event) {
         if(event.keyCode === 13){
             $('#rename-confirm').click();
             return false;
         }
     });
-    //renameInput.bind('change', getChangedFunc(renameInput, $('#rename-name-info')));
 }
 //新建建设项目、单项工程、文件夹、重命名提示(文本改变,暂时不需要)
 function getChangedFunc(input, nameInfo){
@@ -825,7 +812,7 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
         let parent, pre, next;
         GetNewProjectId(3, function (IDs) {
             let projID = IDs.lowID, engID = IDs.lowID + 1, tenderID = IDs.lowID + 2;
-            if(!selected || selected && selected.data.projType === projectType.project){
+            if(!selected || selected.data.projType === projectType.project){
                 parent = selected ? selected.parent : Tree._root;
                 pre = selected;
                 next = selected ? selected.nextSibling : Tree.firstNode();
@@ -863,7 +850,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                         }
                     }
                 });
-                let pojNode = Tree.addNodeData(projData, parent, pre && pre.nextSibling ? pre.nextSibling : null);
+                //let pojNode = Tree.addNodeData(projData, parent, pre && pre.nextSibling ? pre.nextSibling : null);
+                let pojNode = Tree.addNodeData(projData, parent, next);
                 let engNode = Tree.addNodeData(engData, pojNode, null);
                 Tree.addNodeData(tenderData, engNode, null);
                 callback();
@@ -900,6 +888,8 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
                         }
                     }
                 });
+                console.log(tempProj);
+                console.log(next);
                 let engNode = Tree.addNodeData(engData, tempProj, next);
                 Tree.addNodeData(tenderData, engNode, null);
                 callback();
@@ -1043,25 +1033,25 @@ function getProjs(selected){
     let temp;
     let firstNode;
     if(!selected){
-        temp = Tree._root.children;
-        firstNode = temp[0];
+        temp = Tree._root;
+        firstNode = temp.children[0];
     }
     else if(selected.data.projType === projectType.folder){
-        temp = selected.children;
-        firstNode = temp[0];
+        temp = selected;
+        firstNode = temp.children[0];
     }
     else if(selected.data.projType === projectType.project){
-        temp = selected.parent.children;
-        firstNode = temp[0];
+        temp = selected.parent;
+        firstNode = temp.children[0];
     }
     else if(selected.data.projType === projectType.engineering || selected.data.projType === projectType.tender){
         let proj = selected.parent.data.projType === projectType.project ? selected.parent : selected.parent.parent;
-        temp = proj.parent.children;
+        temp = proj.parent;
         firstNode = proj;
     }
-    for(let i = 0, len = temp.length; i < len; i++){
-        if(temp[i].data.projType === projectType.project){
-            rst.push(temp[i]);
+    for(let childNode of temp.children){
+        if(childNode.data.projType === projectType.project){
+            rst.push(childNode);
         }
     }
     //firstNode to first place
@@ -1148,7 +1138,7 @@ function setEngOptions(projID){
     $("#eng-name-list").empty();
     $("#eng-name").val("");
     if(proj){
-        let engineerings = proj.children;
+        let engineerings = [].concat(proj.children);
         //set selected engineering to first place
         let selected = Tree.selected();
         let firstNode = null;
@@ -1202,6 +1192,20 @@ function hasTender(selected, pojName, engName, tenderName){
     return isExist;
 }
 
+//替换class
+function replaceClass(selector, orgClass, newClass){
+    selector.removeClass(orgClass);
+    selector.addClass(newClass);
+}
+//设置提示信息
+function setDangerInfo(area, info, show = true){
+    area.text(info);
+    if(show)
+        area.show();
+    else
+        area.hide();
+}
+
 /**
  * 新增单项工程
  *
@@ -1210,19 +1214,16 @@ function hasTender(selected, pojName, engName, tenderName){
 function AddEngineering() {
     let name = $('#engineering-name').val().trim();
     if (name === '') {
-        $('#engineering-name-info').text('请填写单项工程名称');
-        $('#engineering-name-info').show();
+        setDangerInfo($('#engineering-name-info'), '请填写单项工程名称');
         return false;
     }
     let existCallback = function () {
-        $('#engineering-name-info').text(`已存在“${$("#engineering-name").val()}”`);
-        $('#engineering-name-info').show();
+        setDangerInfo($('#engineering-name-info'), `已存在“${$("#engineering-name").val()}”`);
     };
     let sucCallback = function () {
         $('#add-engineering-dialog').modal('hide');
         $('#engineering-name').val('');
-        $('#engineering-name-info').text('');
-        $('#engineering-name-info').hide();
+        setDangerInfo($('#engineering-name-info'), '', false);
     };
     let selectedItem = Tree.selected();
     // 如果选择的是单项工程则新增同级数据
@@ -1249,39 +1250,43 @@ function AddTender() {
     try {
         let projName = $("#poj-name").val().trim();
         if(projName === ''){
-            throw '请填写建设项目名称';
+            replaceClass($('#poj-name-info'), 'text-info', 'text-danger');
+            setDangerInfo($('#poj-name-info'), '请填写建设项目名称');
+            return false;
         }
         let engName = $("#eng-name").val().trim();
         if(engName === ''){
-            throw '请填写单项工程名称';
+            replaceClass($('#eng-name-info'), 'text-info', 'text-danger');
+            setDangerInfo($('#eng-name-info'), '请填写单项工程名称');
+            return false;
         }
 
         let tenderName = $('#tender-name').val();
         if (tenderName === '') {
-            throw '请填写单位工程名称';
+            setDangerInfo($('#tender-name-info'), '请填写单位工程名称');
+            return false;
         }
 
         if(hasTender(Tree.selected(), projName, engName, tenderName)){
-            throw '已存在单位工程';
+            return false;
         }
 
         let unitPriceFile = $("#unit-price").val();
         let unitPriceName = unitPriceFile !== '' ? $("#unit-price").children("option:selected").text() : tenderName;
 
         let feeFile = $("#tender-fee-rate").val();
-       /* if (feeFile === '') {
-            throw '请选择费率文件';
-        }*/
         let feeFileName = $("#tender-fee-rate").children("option:selected").text();
 
         let valuation = $("#valuation").val();
         if(valuation === ''){
-            throw '请选择计价规则'
+            setDangerInfo($('#valuation-info'), '请选择计价规则');
+            return false;
         }
 
         let engineering = $("#tender-engineering").val();
         if (engineering === '') {
-            throw '请选择工程专业';
+            setDangerInfo($('#engineering-info'), '请选择工程专业');
+            return false;
         }
 
         let valuationName = $("#valuation").children("option:selected").text();
@@ -1347,21 +1352,18 @@ function AddTender() {
 function AddFolder() {
     let name = $('#folder-name').val().trim();
     if (name === '') {
-        $('#folder-name-info').text('请填写文件夹名称');
-        $('#folder-name-info').show();
+        setDangerInfo($('#folder-name-info'), '请填写文件夹名称');
         return false;
     }
 
     let selectedItem = Tree.selected();
     let existCallback = function () {
-        $('#folder-name-info').text(`已存在“${$("#folder-name").val()}”`);
-        $('#folder-name-info').show();
+        setDangerInfo($('#folder-name-info'), `已存在“${$("#folder-name").val()}”`);
     };
     let sucCallback = function () {
         $('#add-folder-dialog').modal('hide');
         $('#folder-name').val('');
-        $('#folder-name-info').text('');
-        $('#folder-name-info').hide();
+        setDangerInfo($('#folder-name-info'), '', false);
     };
     if (selectedItem !== null) {
         // 判断是否超过3层
@@ -1558,8 +1560,7 @@ function RenameProject(projectId, newName, parentID, callback) {
                 callback();
             } else {
                 if(result.message === '同级目录已存在相同名称数据'){
-                    $('#rename-name-info').text(`已存在“${newName}”`);
-                    $('#rename-name-info').show();
+                    setDangerInfo($('#rename-name-info'), `已存在“${newName}”`);
                 }
             }
         },