Przeglądaj źródła

feat: 在造价书工具栏新增按钮“分项”、“措施”、“其他”,用于快速定位至对应部分上次的焦点行

vian 4 lat temu
rodzic
commit
54ff2bb560

+ 3 - 0
web/building_saas/main/html/main.html

@@ -165,6 +165,9 @@
                       class="fa fa-database" aria-hidden="true"></i> 指标信息</a>
                       class="fa fa-database" aria-hidden="true"></i> 指标信息</a>
                 </div>
                 </div>
               </div>
               </div>
+              <a href="javascript:void(0)" class="btn btn-light btn-sm" id="locate-sub">分项</a>
+              <a href="javascript:void(0)" class="btn btn-light btn-sm" id="locate-measure">措施</a>
+              <a href="javascript:void(0)" class="btn btn-light btn-sm" id="locate-other">其他</a>
               <!--   <span class="btn btn-light btn-sm">
               <!--   <span class="btn btn-light btn-sm">
                       <a href="" data-toggle="dropdown"><span data-placement="bottom"><i class="fa fa-list-ol"></i></span> 显示至...</a>
                       <a href="" data-toggle="dropdown"><span data-placement="bottom"><i class="fa fa-list-ol"></i></span> 显示至...</a>
                       <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">
                       <div class="dropdown-menu dropdown-menu-left" style="min-width: 6.5rem">

+ 55 - 0
web/building_saas/main/js/views/project_view.js

@@ -25,6 +25,7 @@ var projectObj = {
         let project = projectObj.project;
         let project = projectObj.project;
         let mainSheet = projectObj.mainController.sheet;
         let mainSheet = projectObj.mainController.sheet;
         let init = true;
         let init = true;
+        locateToCache(node);
         //设置选中行底色和恢复前选中行底色
         //设置选中行底色和恢复前选中行底色
         let refreshNodes = [node];
         let refreshNodes = [node];
         if(!project.mainTree.preSelected){
         if(!project.mainTree.preSelected){
@@ -3586,5 +3587,59 @@ $('#menu_index_info').click(function () {
     $('#tab_index').click();
     $('#tab_index').click();
 });
 });
 
 
+// 快速定位
+const FastLocateType = {
+    SUB_ENGINERRING: 'subEnginerring',
+    MEASURE: 'measure',
+    OTHER: 'other',
+};
+const locateCache = {
+    [FastLocateType.SUB_ENGINERRING]: null,
+    [FastLocateType.MEASURE]: null,
+    [FastLocateType.OTHER]: null,
+};
+
+// 变更焦点行时,将焦点节点存至对应部分的locateCache中,用于快速定位功能
+function locateToCache(node) {
+    if (!node) {
+        return;
+    }
+    if (node.isBelongToFlags([fixedFlag.SUB_ENGINERRING])) {
+        locateCache[FastLocateType.SUB_ENGINERRING] = node;
+    } else if (node.isBelongToFlags([fixedFlag.MEASURE])) {
+        locateCache[FastLocateType.MEASURE] = node;
+    } else if (node.isBelongToFlags([fixedFlag.OTHER])) {
+        locateCache[FastLocateType.OTHER] = node;
+    }
+}
+
+// “分项”、“措施”、“其他”,用于快速定位至对应部分上次的焦点行
+function fastLocate(type) {
+    let locatedNode;
+    if (type === FastLocateType.SUB_ENGINERRING) {
+        locatedNode = locateCache[type] || projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.SUB_ENGINERRING);
+    } else if (type === FastLocateType.MEASURE) {
+        locatedNode = locateCache[type] || projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.MEASURE);
+    } else {
+        locatedNode = locateCache[type] || projectObj.project.mainTree.roots.find(node => node.getFlag() === fixedFlag.OTHER);
+    }
+    if (locatedNode && locatedNode !== projectObj.project.mainTree.selected) {
+        const locateRow = locatedNode.serialNo();
+        const sheet = projectObj.mainController.sheet;
+        projectObj.loadFocusLocation(locateRow, sheet.getActiveColumnIndex());
+    }
+}
+
+$('#locate-sub').click(() => {
+    fastLocate(FastLocateType.SUB_ENGINERRING);
+});
+$('#locate-measure').click(() => {
+    fastLocate(FastLocateType.MEASURE);
+});
+$('#locate-other').click(() => {
+    fastLocate(FastLocateType.OTHER);
+});
+
+
 //导出接口
 //导出接口
 ExportView.exportListener();
 ExportView.exportListener();