فهرست منبع

清单精灵清单指引共存

zhangweicheng 5 سال پیش
والد
کامیت
b8aefbe20e

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

@@ -204,11 +204,11 @@
                           <div class="resize-y" id="mainVerticalResize"></div>
                           <div class="bottom-content" id="bottom_div">
                               <ul class="nav nav-tabs" role="tablist" id="bottom_div_ul">
-                                 <li class="nav-item" id="QDZY_div">
-                                  <a class="nav-link sub-item" id="linkQDZY" data-toggle="tab" href="#subSpread" role="tab">清单</a>
+                                 <li class="nav-item" id="QDZY_div" style="display:none;">
+                                  <a class="nav-link sub-item linkQDJL" id="linkQDZY" data-toggle="tab" href="#subSpread" role="tab">清单指引</a>
                                 </li>
-                                  <li class="nav-item" id="QDJL_div">
-                                      <a class="nav-link sub-item" id="linkQDJL" data-toggle="tab" href="#subSpread" role="tab">清单</a>
+                                  <li class="nav-item" id="QDJL_div" style="display:none;">
+                                      <a class="nav-link sub-item linkQDJL" id="linkQDJL" data-toggle="tab" href="#subSpread" role="tab">清单精灵</a>
                                   </li>
                                   <li class="nav-item" id="GLJ_div">
                                       <a class="nav-link sub-item active" id="linkGLJ" data-toggle="tab" href="#subSpread" role="tab">人材机</a>
@@ -455,10 +455,10 @@
                                               </div>
                                           </div>
                                       </div>
-                                      <div class="main-data-bottom ovf-hidden" id="qdzy" style="float: left" >
+                                      <div class="main-data-bottom ovf-hidden qdjl" id="qdzy" style="float: left" >
                                         <div class="p-0" style="background: #efefef">
                                             <div class=" p-0">
-                                                <div id="qdjlTools" style="display: none; width: calc(100% - 5px); border-bottom: solid 1px lightgrey;">
+                                                <div id="qdzyTools" style="width: calc(100% - 5px); border-bottom: solid 1px lightgrey;">
                                                     <a id="guidanceInsertRation" href="javascript:void(0)" class="btn btn-sm btn-primary px-1 ml-1">插入定额</a>
                                                 </div>
                                                 <div class="ovf-hidden" id="billsSubItems_ZY">
@@ -467,10 +467,10 @@
                                         </div>
                                     </div>
 
-                                      <div class="main-data-bottom ovf-hidden" id="qdjl" style="float: left" >
+                                      <div class="main-data-bottom ovf-hidden qdjl" id="qdjl" style="float: left" >
                                           <div class="p-0" style="background: #efefef">
                                               <div class=" p-0">
-                                                  <div id="qdjlTools" style="display: none; width: calc(100% - 5px); border-bottom: solid 1px lightgrey;">
+                                                  <div id="qdjlTools" style="width: calc(100% - 5px); border-bottom: solid 1px lightgrey;">
                                                       <a id="elfInsertRation" href="javascript:void(0);" class="btn btn-sm btn-primary px-1 ml-1">应用选项</a>
                                                       <a id="elfInsertSingle" href="javascript:void(0)" class="btn btn-sm btn-primary px-1 ml-1">应用单条</a>
                                                   </div>

+ 82 - 26
web/building_saas/main/js/views/billsElf.js

@@ -176,11 +176,22 @@ const BillsSub = (function() {
 
     // 目前的模块:清单精灵或清单指引,默认是清单指引
     let curModule = guideItem;
+    let curModules = [];// 清单指引和清单精灵共存
+    let isFirst = true;
     // 切换目前的模块
     // 1:清单指引 2:清单精灵
     function switchModule(type) {
-        let libText;
-        if (type === libType.guidance) {
+       
+        if(type === libType.guidance){
+          curModules.push(guideItem);
+          if(isFirst) gljOprObj.billsTab = "#linkQDZY";
+        }else{
+          curModules.push(elfItem);
+          if(isFirst) gljOprObj.billsTab = "#linkQDJL";
+        }
+        //2020-03-20清单指引和清单精灵并且,暂不用切换显示,只需绑定事件
+        /* let libText;
+        if (type === libType.guidance) {  
             curModule = guideItem;
             libText = '清单指引';
             // 动态按钮
@@ -197,9 +208,10 @@ const BillsSub = (function() {
         }
         $('#qdjlTools').show();
         // 库名称、清单子菜单名称动态显示
-        $('#linkQDJL').text(libText);
+        $('#linkQDJL').text(libText); */
         // 监听按钮事件
-        bindListener();
+       if(isFirst == true) bindListener();//绑定一次事件就行了
+       isFirst = false;
     }
 
     const options = {
@@ -302,31 +314,54 @@ const BillsSub = (function() {
     }
     //建表
     //@param {Object}module @return {void}
-    function buildSheet() {
-        console.log(curModule);
-        if(!curModule.workBook){
-            curModule.workBook = new GC.Spread.Sheets.Workbook(curModule.dom[0], {sheetCount: 1});
-            sheetCommonObj.spreadDefaultStyle(curModule.workBook);
-            let sheet = curModule.workBook.getActiveSheet();
+    function buildSheet(cmodule) {
+        console.log(cmodule);
+        if(!cmodule.workBook){
+            cmodule.workBook = new GC.Spread.Sheets.Workbook(cmodule.dom[0], {sheetCount: 1});
+            sheetCommonObj.spreadDefaultStyle(cmodule.workBook);
+            let sheet = cmodule.workBook.getActiveSheet();
             /*sheet.options.isProtected = true;
             sheet.getRange(-1, 0, -1, 1).locked(true);
             sheet.getRange(-1, 1, -1, 1).locked(false);*/
-            if(curModule.rowHeaderWidth) {
-                sheet.setColumnWidth(0, curModule.rowHeaderWidth, GC.Spread.Sheets.SheetArea.rowHeader);
+            if(cmodule.rowHeaderWidth) {
+                sheet.setColumnWidth(0, cmodule.rowHeaderWidth, GC.Spread.Sheets.SheetArea.rowHeader);
             }
-            setOptions(curModule.workBook, options);
-            buildHeader(curModule.workBook.getActiveSheet(), curModule.headers);
-            bindEvent(curModule.workBook, curModule.events);
+            setOptions(cmodule.workBook, options);
+            buildHeader(cmodule.workBook.getActiveSheet(), cmodule.headers);
+            bindEvent(cmodule.workBook, cmodule.events);
         }
     }
+
+    function buildSheets(){
+      for(let c of curModules){
+        buildSheet(c);
+      }
+    }
+
+
     //刷新表
     //@return {void}
     function refreshWorkBook(){
+        let eleID = "";
+        let spreadEleID = "";
+        let toolsID = "";
+        if(gljOprObj.activeTab=='#linkQDZY'){
+          curModule = guideItem;
+           eleID = "qdzy";
+           spreadEleID = "billsSubItems_ZY";
+           toolsID = "qdzyTools";
+        }else if(gljOprObj.activeTab=='#linkQDJL'){
+           eleID = "qdjl";
+           spreadEleID = "billsSubItems_JL";
+           toolsID = "qdjlTools";
+          curModule = elfItem;
+        }
+        if(eleID == "") return; 
         //计算内部的表格高度
-        if ($('#qdjl').is(':visible')) {
-            let totalHeight = $('#qdjl').height(),
-                elfToolsHeight = $('#qdjlTools').height();
-            $('#billsSubItems').height(totalHeight - elfToolsHeight);
+        if ($('#'+eleID).is(':visible')) {
+            let totalHeight = $('#'+eleID).height(),
+                elfToolsHeight = $('#'+toolsID).height();
+            $('#'+spreadEleID).height(totalHeight - elfToolsHeight);
             if (curModule.workBook) {
                 curModule.workBook.refresh();
             }
@@ -448,6 +483,12 @@ const BillsSub = (function() {
     //清单焦点变换-清单子界面操作,获取清单前九位编码的标准清单清单精灵选项 或 清单指引数据
     //@param {String}code @return {void}
     function billsSelSub(code) {
+        let type = libType.guidance;//指引和精灵可共存,所以需要类型区分
+        curModule = guideItem;
+        if(gljOprObj.activeTab=='#linkQDJL'){
+          type = libType.elf;
+          curModule = elfItem;
+        }
         let sheet = curModule.workBook.getActiveSheet();
         cleanData(sheet, curModule.headers, -1);
         if (!code || code === '') {
@@ -455,17 +496,17 @@ const BillsSub = (function() {
         }
         let nineCode = code.substr(0, 9);
         //查看此清单映射是否存在此编码映射数据,不存在,则新建映射
-        if (!bills.mapping[nineCode]) {
-            bills.mapping[nineCode] = {sub: {datas: [], tree: null, controller: null}};
+        if (!bills.mapping[nineCode+type]) {
+            bills.mapping[nineCode+type] = {sub: {datas: [], tree: null, controller: null}};
         }
-        let container = bills.mapping[nineCode];
+        let container = bills.mapping[nineCode+type];
         bills.selected = container;
         if(!container.sub.tree){
             let guidanceLibID;
             if (projectObj.project.projectInfo.engineeringInfo && projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib) {
-                guidanceLibID = projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib[0]
-                    ? projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib[0].id
-                    : null;
+                for(let lib of projectObj.project.projectInfo.engineeringInfo.billsGuidance_lib){
+                  if(lib && lib.type == type)  guidanceLibID = lib.id;
+                }
             }
             CommonAjax.post('/billsGuidance/api/getItemsByCode', {guidanceLibID: guidanceLibID, code: nineCode}, function (rstData) {
                 curModule === elfItem
@@ -909,9 +950,24 @@ const BillsSub = (function() {
             handleClick(getInsertElfSingleRation);
         });
     }
+    function toggleDiv(action){
+       if(action=='hide'){
+         $('#QDZY_div').hide(); 
+         $('#QDJL_div').hide(); 
+       }else{
+          for(let c of curModules){
+            if(c == guideItem)  $('#QDZY_div').show(); 
+            if(c == elfItem)  $('#QDJL_div').show(); 
+          }
+       } 
+
+
+
+    }
     return {
+        toggleDiv,
         switchModule,
-        buildSheet,
+        buildSheets,
         refreshWorkBook,
         billsSelSub,
         setColumnWidthByRate

+ 5 - 3
web/building_saas/main/js/views/project_info.js

@@ -35,9 +35,11 @@ var projectInfoObj = {
             if(!data.engineeringInfo.billsGuidance_lib || data.engineeringInfo.billsGuidance_lib.length === 0){
                 $('#stdBillsGuidanceTab').addClass('disabled');
             } else {
-                let billsGuidanceLib = data.engineeringInfo.billsGuidance_lib[0];
-                // 切换清单子界面的模块:清单指引、清单精灵
-                BillsSub.switchModule(billsGuidanceLib.type);
+                // 清单子界面的模块:清单指引、清单精灵
+                for(let billsGuidanceLib of data.engineeringInfo.billsGuidance_lib ){
+                  BillsSub.switchModule(billsGuidanceLib.type);
+                }
+                
             }
             //init decimal
             setDecimal(decimalObj, data.property.decimal);

+ 36 - 16
web/building_saas/main/js/views/sub_view.js

@@ -16,7 +16,7 @@ let subObj = {
     firstOpen:true,
     initSubSpread:function () {
         //清单子界面
-        BillsSub.buildSheet();
+        BillsSub.buildSheets();
         contentOprObj.buildSheet($("#jobSpread")[0]);
         //sheetCommonObj.bindEscKey(contentOprObj.workBook, [{sheet: contentOprObj.workBook.getSheet(0), editStarting: contentOprObj.onEditStart, editEnded: contentOprObj.onEditEnded}]);
         sheetCommonObj.spreadDefaultStyle(contentOprObj.workBook);
@@ -80,7 +80,7 @@ let subObj = {
             $("#MBZM_div").show();
             installationFeeObj.engineeringTypeChecking();//检查是否安装工程
             $("#TZJNR_div").hide();
-  			$('#QDJL_div').hide();
+            BillsSub.toggleDiv('hide');
             $("#linkGLJ").addClass();
             $(gljOprObj.rationTab).click();
         }else {
@@ -89,7 +89,7 @@ let subObj = {
             $("#MBZM_div").hide();
             $("#AZZJF_div").hide();
             $("#TZJNR_div").show();
-            $('#QDJL_div').show();
+            BillsSub.toggleDiv('show');
             $(gljOprObj.billsTab).click();
         }
         projectObj.mainSpread.focus();
@@ -138,7 +138,8 @@ let subObj = {
         this.initItemWidth();
     },
     //初始化清单精灵和项目特征文本两个区域的宽度,改变窗口大小时调用此方法,实时刷新
-    initTZItemWidth:function (){
+    initTZItemWidth:function (eleID){
+        let tabID = eleID == "linkQDZY"?"qdzy":"qdjl";
         //总宽度
         let totalWidth = $('#subItems').width();
         //人材机和项目特征文本比例
@@ -155,23 +156,23 @@ let subObj = {
             rcjPercent = rcjPercent * 100 + '%';
         }
         //设置特征及内容与排版规则的比例
-        $('#qdjl').css('width', rcjPercent);
+        $('#'+tabID).css('width', rcjPercent);
         $('#xmtzTextDiv').css('width', textPercent);
         //打开了项目特征,则继续加载人材机表和项目特征文本具体比例
         if (subObj.showQDSubTab === true) {
-            let jl_sideResizeEles = this.getJLSideResize();
+            let jl_sideResizeEles = this.getJLSideResize(tabID);
             SlideResize.loadHorizonWidth(jl_sideResizeEles.eleObj.module,
                 [jl_sideResizeEles.eleObj.resize], [jl_sideResizeEles.eleObj.left, jl_sideResizeEles.eleObj.right]);
             $("#tzSubDiv").width( $('#xmtzTextDiv').width() - jl_sideResizeEles.eleObj.resize.width() - 30)
         }
     },
-    getJLSideResize:function () {
+    getJLSideResize:function (tabID) {
         let jl_sideResizeEles = {};
         jl_sideResizeEles.eleObj = {
-            module: 'qdjl',
+            module: tabID,
             resize: $('#tzrgResize'),
             parent: $('#subItems'),
-            left: $('#qdjl'),
+            left: $('#'+tabID),
             right: $('#tzSubDiv')
         };
         rg_sideResizeEles.limit = {
@@ -180,8 +181,8 @@ let subObj = {
         };
         return jl_sideResizeEles;
     },
-    initQDSubTab:function () {
-        if(!($('#linkQDJL').hasClass('active'))){
+    initQDSubTab:function (eleID) {
+        if(!($('#'+eleID).hasClass('active'))){
             return;
         }
         if(this.showQDSubTab == true){
@@ -191,7 +192,7 @@ let subObj = {
             $("#tzSubDiv").hide();
             $("#tzrgResize").hide();
         }
-        this.initTZItemWidth();
+        this.initTZItemWidth(eleID);
     },
     showGljSubTabData:function () {
         this.initGljSubTab();
@@ -204,8 +205,8 @@ let subObj = {
             this.firstOpen = false;
         }
     },
-    showQDSubTabData:function () {
-        this.initQDSubTab();
+    showQDSubTabData:function (eleID) {
+        this.initQDSubTab(eleID);
         MaterialController.showItemCharacterText(null,"tzCharacterText");
         if (gljOprObj.activeTab !== gljOprObj.preActiveTab) {   //提供焦点变换性能 2019年4月12日
             refreshSubSpread();
@@ -376,6 +377,24 @@ $('#linkQDJL').click(function () {
     gljOprObj.setNodeShowTab();
 
 });
+//清单指引
+$('#linkQDZY').click(function () {
+  if (!subObj.fisrtLinked) {
+      gljOprObj.preActiveTab = gljOprObj.activeTab;
+  }
+  subObj.fisrtLinked = false;
+  //--
+  gljOprObj.activeTab='#linkQDZY';
+  $("#subItems").children().hide();
+  $('#qdzy').show();
+  $("#xmtzTextDiv").show();
+  $("#tzItemTab").show();
+  let selectedNode = projectObj.mainController.tree.selected;
+  BillsSub.billsSelSub(selectedNode.data.code);
+  gljOprObj.setNodeShowTab();
+
+});
+
 //特征及内容
 $("#linkTZJNR").click(function () {
     gljOprObj.preActiveTab = gljOprObj.activeTab;   //提高焦点变换性能 2019年4月12日
@@ -783,14 +802,15 @@ $('#linkGLJ').on('shown.bs.tab', function () {
     gljOprObj.showDataIfRationSelect(projectObj.project.mainTree.selected, '111111');
 });
 
-$('#linkQDJL').on('shown.bs.tab', function () {
-    subObj.showQDSubTabData();
+$('.linkQDJL').on('shown.bs.tab', function () {
+    subObj.showQDSubTabData(this.id);
     if(!subObj.inited) {
         $("#tz_toogle").click();
         subObj.inited = true;
     }
 });
 
+
 $('#linkZMHS').on('shown.bs.tab', function (e) {
     if(zmhs_obj.coeSpread == null || zmhs_obj.assSpread == null){
         zmhs_obj.initSpread();