Jelajahi Sumber

项目管理debug

zhongzewei 7 tahun lalu
induk
melakukan
cafe030da5

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

@@ -240,6 +240,7 @@
                     <div class="form-group">
                         <label>建设项目</label>
                         <input type="text" class="form-control" placeholder="输入建设项目名称" id="project-name">
+                        <span class="form-text text-danger" id="project-name-info" style="display: none;">已存在 “建筑工程1”</span>
                     </div>
                 </form>
             </div>
@@ -266,6 +267,7 @@
                     <div class="form-group">
                         <label>单项工程</label>
                         <input type="text" class="form-control" placeholder="输入单项工程名称" id="engineering-name">
+                        <span class="form-text text-danger" id="engineering-name-info" style="display: none;">已存在 “建筑工程1”</span>
                     </div>
                 </form>
             </div>
@@ -376,6 +378,7 @@
                     <div class="form-group">
                         <label>文件夹</label>
                         <input type="text" class="form-control" placeholder="输入文件夹名称" id="folder-name">
+                        <span class="form-text text-danger" id="folder-name-info" style="display: none;">已存在 “建筑工程1”</span>
                         <span class="form-text text-muted">Smartcost目前最多支持3层文件夹。</span>
                     </div>
                 </form>
@@ -401,6 +404,7 @@
                 <form>
                     <div class="form-group">
                         <input type="text" class="form-control" placeholder="输入名称" id="rename-name">
+                        <span class="form-text text-danger" id="rename-name-info" style="display: none;">已存在 “建筑工程1”</span>
                     </div>
                 </form>
             </div>

+ 141 - 35
web/building_saas/pm/js/pm_main.js

@@ -232,6 +232,11 @@ $(document).ready(function() {
             });
         }
     });
+    //绑定新建建设项目、新建单项工程、新建文件夹、重命名Enter键事件
+    bindInputs($('#project-name'), $('#engineering-name'), $('#folder-name'), $('#rename-name'));
+
+    //绑定新建建设项目、新建单项工程、新建文件夹、重命名弹窗隐藏事件
+    bindModalsHidden($('#add-project-dialog'), $('#add-engineering-dialog'), $('#add-folder-dialog'), $('#rename-dialog'));
 
     // 新增建设项目点击
     $('#add-project-btn').click(function () {
@@ -456,7 +461,8 @@ $(document).ready(function() {
         let newName = $('#rename-name').val();
         let dialog = $('#rename-dialog');
         if (newName === '') {
-            alert('请输入重命名的名称');
+            $('#rename-name-info').text('请输入重命名名称');
+            $('#rename-name-info').show();
             return false;
         }
 
@@ -465,6 +471,8 @@ $(document).ready(function() {
             return false;
         }
         RenameProject(select.id(), newName, select.data.ParentID, function () {
+            $('#rename-name-info').text('');
+            $('#rename-name-info').hide();
             dialog.modal('hide');
             select.data.name = newName;
             Tree.refreshNodesDom([select]);
@@ -681,12 +689,19 @@ function init() {
 function AddProject() {
     let name = $('#project-name').val().trim();
     if (name === '') {
-        alert('请填写建设项目名称');
+        $('#project-name-info').text('请填写建设项目名称');
+        $('#project-name-info').show();
         return false;
     }
-    let callback = function() {
-        $("#add-project-dialog").modal("hide");
-        $("#project-name").val('');
+    let existCallback = function () {
+        $('#project-name-info').text(`已存在“${$("#project-name").val()}”`);
+        $('#project-name-info').show();
+    };
+    let sucCallback = function () {
+        $('#add-project-dialog').modal('hide');
+        $('#project-name').val('');
+        $('#project-name-info').text('');
+        $('#project-name-info').hide();
     };
     let selectedItem = Tree.selected();
 
@@ -697,18 +712,93 @@ function AddProject() {
      (4)、当前定位在单项工程或单位工程,新建项目为当前所属建设项目的后兄弟。
     * */
     if(!selectedItem){
-        AddSiblingsItem(selectedItem, name, null, projectType.project, callback);
+        AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
     }
     else {
         if(selectedItem.data.projType === projectType.project){
-            AddSiblingsItem(selectedItem, name, null, projectType.project, callback);
+            AddSiblingsItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
         }
         else if(selectedItem.data.projType === projectType.engineering || selectedItem.data.projType === projectType.tender){
             let proj = selectedItem.parent.data.projType === projectType.project ? selectedItem.parent : selectedItem.parent.parent;
-            AddSiblingsItem(proj, name, null, projectType.project, callback);
+            AddSiblingsItem(proj, name, null, projectType.project, existCallback, sucCallback);
         }
         else if(selectedItem.data.projType === projectType.folder){
-            AddChildrenItem(selectedItem, name, null, projectType.project, callback);
+            AddChildrenItem(selectedItem, name, null, projectType.project, existCallback, sucCallback);
+        }
+    }
+}
+
+//新建建设项目、新建单项工程、新建文件夹、重命名弹窗隐藏事件
+function bindModalsHidden(projDialog, engDialog, folderDialog, renameDialog){
+    projDialog.on('hidden.bs.modal', function () {
+        $('#project-name-info').text('');
+        $('#project-name-info').hide();
+        $('#project-name').val('');
+    });
+    engDialog.on('hidden.bs.modal', function () {
+        $('#engineering-name-info').text('');
+        $('#engineering-name-info').hide();
+        $('#engineering-name').val('');
+    });
+    folderDialog.on('hidden.bs.modal', function () {
+        $('#folder-name-info').text('');
+        $('#folder-name-info').hide();
+        $('#folder-name').val('');
+    });
+    renameDialog.on('hidden.bs.modal', function () {
+        $('#rename-name-info').text('');
+        $('#rename-name-info').hide();
+        $('#rename-name').val('');
+    });
+}
+
+//绑定新建建设项目、新建单项工程、新建文件夹、重命名回车键功能
+function bindInputs(projInput, engInput, foldInput, renameInput){
+    projInput.bind('keypress', function (event) {
+        if(event.keyCode === 13){
+            $('#addProjOk').click();
+            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){
+    return function () {
+        let selected = Tree.selected();
+        let parent = selected ? selected.parent : Tree._root;
+        let name = input.val();
+        if(existName(name, parent.children)){
+            nameInfo.text(`已存在“${name}”`);
+            nameInfo.show();
+        }
+        else {
+            nameInfo.text('');
+            nameInfo.hide();
         }
     }
 }
@@ -846,15 +936,15 @@ function AddTenderItems(selected, projName, engName, tenderName, property, callb
  * @param {function} callback
  * @return {void}
  */
-function AddChildrenItem(selected, name, property, type, callback) {
+function AddChildrenItem(selected, name, property, type, existCallback, sucCallback) {
     if(!selected){
         selected = Tree.selected();
     }
     let parent = selected ? selected : Tree._root;
     let pre = selected ? selected.lastChild() : Tree.firstNode();
     if(existName(name, parent.children)){
-        alert('同级目录已存在相同名称数据.');
-        callback();
+        //alert('同级目录已存在相同名称数据.');
+        existCallback();
     }
     else {
         GetNewProjectId(1, function(IDs) {
@@ -870,7 +960,7 @@ function AddChildrenItem(selected, name, property, type, callback) {
                         Tree.addNodeData(data.updateData, parent, null);
                     }
                 });
-                callback();
+                sucCallback();
             });
         });
     }
@@ -884,15 +974,15 @@ function AddChildrenItem(selected, name, property, type, callback) {
  * @param {function} callback
  * @return {void}
  */
-function AddSiblingsItem(selected, name, property, type, callback) {
+function AddSiblingsItem(selected, name, property, type, existCallback, sucCallback) {
     if(!selected){
         selected = Tree.selected();
     }
     let parent = selected ? selected.parent : Tree._root;
     let next = selected ? selected.nextSibling : Tree.firstNode();
     if(existName(name, parent.children)){
-        alert('同级目录已存在相同名称数据.');
-        callback();
+        //alert('同级目录已存在相同名称数据.');
+        existCallback();
     }
     else {
         GetNewProjectId(1, function(IDs) {
@@ -908,7 +998,7 @@ function AddSiblingsItem(selected, name, property, type, callback) {
                         Tree.addNodeData(data.updateData, parent, next);
                     }
                 });
-                callback();
+                sucCallback();
             });
         });
     }
@@ -1120,25 +1210,32 @@ function hasTender(selected, pojName, engName, tenderName){
 function AddEngineering() {
     let name = $('#engineering-name').val().trim();
     if (name === '') {
-        alert('请填写单项工程名称');
+        $('#engineering-name-info').text('请填写单项工程名称');
+        $('#engineering-name-info').show();
         return false;
     }
-    let callback = function() {
-        $("#add-engineering-dialog").modal("hide");
-        $("#engineering-name").val('');
+    let existCallback = function () {
+        $('#engineering-name-info').text(`已存在“${$("#engineering-name").val()}”`);
+        $('#engineering-name-info').show();
+    };
+    let sucCallback = function () {
+        $('#add-engineering-dialog').modal('hide');
+        $('#engineering-name').val('');
+        $('#engineering-name-info').text('');
+        $('#engineering-name-info').hide();
     };
     let selectedItem = Tree.selected();
     // 如果选择的是单项工程则新增同级数据
     if(selectedItem){
         if(selectedItem.data.projType === projectType.project){
-            AddChildrenItem(selectedItem, name, null, projectType.engineering, callback);
+            AddChildrenItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback);
         }
         else if(selectedItem.data.projType === projectType.engineering){
-            AddSiblingsItem(selectedItem, name, null, projectType.engineering, callback);
+            AddSiblingsItem(selectedItem, name, null, projectType.engineering, existCallback, sucCallback);
         }
         else if(selectedItem.data.projType === projectType.tender){
             let proj = selectedItem.parent;
-            AddSiblingsItem(proj, name, null, projectType.engineering, callback);
+            AddSiblingsItem(proj, name, null, projectType.engineering, existCallback, sucCallback);
         }
     }
 }
@@ -1250,14 +1347,21 @@ function AddTender() {
 function AddFolder() {
     let name = $('#folder-name').val().trim();
     if (name === '') {
-        alert('请填写文件夹名称');
+        $('#folder-name-info').text('请填写文件夹名称');
+        $('#folder-name-info').show();
         return false;
     }
 
     let selectedItem = Tree.selected();
-    let callback = function() {
-        $("#add-folder-dialog").modal("hide");
-        $("#folder-name").val('');
+    let existCallback = function () {
+        $('#folder-name-info').text(`已存在“${$("#folder-name").val()}”`);
+        $('#folder-name-info').show();
+    };
+    let sucCallback = function () {
+        $('#add-folder-dialog').modal('hide');
+        $('#folder-name').val('');
+        $('#folder-name-info').text('');
+        $('#folder-name-info').hide();
     };
     if (selectedItem !== null) {
         // 判断是否超过3层
@@ -1266,14 +1370,14 @@ function AddFolder() {
             return false;
         }
         if(selectedItem.data.projType === projectType.folder || selectedItem.data.projType === projectType.project){
-            AddSiblingsItem(null, name, null, projectType.folder, callback);
+            AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback);
         }
         else if(selectedItem.data.projType === projectType.engineering || selectedItem.data.projType === projectType.tender){
             let proj = selectedItem.parent.data.projType === projectType.project ? selectedItem.parent : selectedItem.parent.parent;
-            AddSiblingsItem(proj, name, null, projectType.folder, callback);
+            AddSiblingsItem(proj, name, null, projectType.folder, existCallback, sucCallback);
         }
     } else {
-        AddSiblingsItem(null, name, null, projectType.folder, callback);
+        AddSiblingsItem(null, name, null, projectType.folder, existCallback, sucCallback);
     }
 }
 
@@ -1453,7 +1557,10 @@ function RenameProject(projectId, newName, parentID, callback) {
             if (result.error === 0) {
                 callback();
             } else {
-                alert('error' + result.message);
+                if(result.message === '同级目录已存在相同名称数据'){
+                    $('#rename-name-info').text(`已存在“${newName}”`);
+                    $('#rename-name-info').show();
+                }
             }
         },
         error: function(iqXHR, textStatus, errorThrown){
@@ -1680,15 +1787,14 @@ function setDataToSideBar() {
         };
 
         // 建设项目相关
-        let counter = 1;
+        let counter = 0;
         let html = '';
 
         calcNode(selectedItem);
         for(let tmp of selectedItem.children) {
-
+            counter ++;
             html += '<tr>' +
                 '<td>'+ counter +'</td>' +
-                '<td>'+ counter +'</td>' +
                 '<td>'+ tmp.data.name +'</td>' +
                 '<td style="text-align:right">'+ tmp.data.summaryFees.totalFee + '</td>' +
                 '<td style="text-align:right">'+ tmp.data.summaryFees.estimateFee + '</td>' +