zhangweicheng 4 роки тому
батько
коміт
8dea258c98

+ 1 - 1
web/building_saas/css/custom.css

@@ -501,4 +501,4 @@ margin-right: 100px !important;
 }
 .menu-input:focus {
   outline: none;
-}
+}

+ 41 - 7
web/building_saas/glj/html/project_glj.html

@@ -15,6 +15,7 @@
             <option value="priceCoe">价格指数调整法</option>
         </select>
     </div>
+    
 </div>
 
 <div class="container-fluid">
@@ -86,9 +87,9 @@
                   <li class="nav-item">
                     <a class="nav-link " id="ration-nav" data-toggle="tab" href="#ph_div" role="tab" aria-selected="true">相关定额</a>
                   </li>
-                  <!--  <li class="nav-item">
-                        <a class="nav-link active" data-toggle="tab" data-name="ration_sheet" id="ration_link" href="#glj_de_div" role="tab">相关定额</a>
-                    </li>-->
+                  <li class="nav-item">
+                    <a class="nav-link" id="info-nav"  data-toggle="tab" data-name="info"  href="#info_price_div" role="tab">信息价</a>
+                </li>
                    
                    <!-- <li class="nav-item">
                         <a class="nav-link" data-toggle="tab" data-name="machine_sheet" id="machine_ratio_link" href="#ph_div" role="tab">机械单价</a>
@@ -105,10 +106,43 @@
                         <div class="main-data-bottom" id="mix_ratio_sheet" style="overflow:hidden">
                         </div>
                     </div>
-             <!--       <div class="tab-pane" id="jx_div" role="tabpanel">
-                        <div class="main-data-bottom" id="machine_sheet">
-                        </div>
-                    </div>-->
+                   <div class="tab-pane" id="info_price_div" role="tabpanel">
+                    <div class="form-inline py-1 toolsbar_feeRate" id="infoToolDiv" style="background:#f7f7f9">
+                      <label class="mx-2" for="info_area">地区</label>
+                      <select class="form-control form-control-sm" style="font-size: .875rem; width:120px;" id="info_area">
+                        <option value=""></option>
+                        <option value="江北区" >江北区</option>
+                      </select>
+                      <label class="mx-2" for="info_year">期数</label>
+                      <select class="form-control form-control-sm" style="font-size: .875rem; width:80px;" id="info_year">
+                        <option value=""></option>
+                        <option value="2020" >2020</option>
+                        <option value="2019" >2019</option>
+                        <option value="2018" >2018</option>
+                        <option value="2017" >2017</option>
+                      </select>
+                      <select class="form-control form-control-sm" style="font-size: .875rem; width:80px;" id="info_month">
+                        <option value=""></option>
+                        <option value="01" >01</option>
+                        <option value="02" >02</option>
+                        <option value="03" >03</option>
+                        <option value="04" >04</option>
+                        <option value="05" >05</option>
+                        <option value="06" >06</option>
+                        <option value="07" >07</option>
+                        <option value="08" >08</option>
+                        <option value="09" >09</option>
+                        <option value="10" >10</option>
+                        <option value="11" >11</option>
+                        <option value="12" >12</option>
+                      </select>
+                      &nbsp;
+                      <input type="text" class="form-control form-control-sm" id="info_search_name">
+                      <button type="button" class="btn btn-outline-primary btn-sm mr-auto" id="info_search_btn"><i class="fa fa-search" aria-hidden="true"></i></button>
+                      <button type="button" class="btn btn-primary  btn-sm" id="muti_apply_info">批量套用</button>
+                   </div>
+                    <div class="main-data-bottom" id="info_price_sheet"> </div>
+                    </div>
                 </div>
             </div>
         </div>

+ 13 - 5
web/building_saas/main/js/controllers/block_controller.js

@@ -329,13 +329,13 @@ let BlockController = {
              //更新前端缓存
              me.updateCache(result);
              //插入树节点
-             let rationNodes = me.addToTree(parentID,nextID,result.bills,result.rations);
+             let [rationNodes,calcNodes] = me.addToTree(parentID,nextID,result.bills,result.rations);
              //主材设备工料机插入主树
              project.ration_glj.addToMainTree(result.ration_gljs);
              //更新计算程序模板,并进行重新计算
-             project.calcProgram.calcNodesAndSave(rationNodes,async function () {
+             project.calcProgram.calcNodesAndSave(calcNodes,async function () {
                  installationFeeObj.calcInstallationFee();
-                await OVER_HEIGHT.reCalcOverHeightFee();
+                 await OVER_HEIGHT.reCalcOverHeightFee();
                  await itemIncreaseFeeObj.calcItemIncreaseFeeByNodes(rationNodes);
              });
         })
@@ -374,8 +374,9 @@ let BlockController = {
     addToTree:function (parentID,nextID,bills,rations) {
         let project = projectObj.project;
         let Bills = project.Bills,mainTree = project.mainTree;
+        let parentNodeMap={};//用于去重
         let parentMap_b = {},parentMap_r = {};
-        let newNodes = [],firstNode = null,rationNodes=[];
+        let newNodes = [],firstNode = null,rationNodes=[],billNodes=[],calcNodes=[];
 
         createParentMap(parentMap_b,bills,'bills');
         createParentMap(parentMap_r,rations,'ration');
@@ -397,7 +398,13 @@ let BlockController = {
         const serialNo = firstNode.serialNo();
         projectObj.mainController.sheet.setSelection(serialNo, sels[0].col, 1, 1);
         projectObj.mainController.sheet.showRow(serialNo, GC.Spread.Sheets.VerticalPosition.center);
-        return rationNodes;
+        //没有子节点的清单父节点要进行汇总计算
+        for(let b of billNodes){
+          if(!b.children || b.children.length == 0){
+            if(b.parent &&!parentNodeMap[b.parent.ID]) calcNodes.push(b.parent);
+          }  
+        }
+        return [rationNodes,rationNodes.concat(calcNodes)];
 
         function loadTreeNode(parentID,nextID,data,type) {
             let newNode = null;
@@ -422,6 +429,7 @@ let BlockController = {
                     }
 
                 }
+                billNodes.push(newNode);
             }else if(type == 'ration'){
                 newNode = project.mainTree.insert(parentID, nextID, data.ID);
                 newNode.source = data;

+ 1 - 0
web/building_saas/main/js/models/calc_program.js

@@ -1996,6 +1996,7 @@ class CalcProgram {
         let dataArr = [];
         for (let node of treeNodes){
             if (node.changed){
+                console.log(node.data.name);
                 let data = calcTools.cutNodeForSave(node);
                 let newData = {'type': node.sourceType, 'data': data};
                 dataArr.push(newData);

+ 70 - 2
web/building_saas/main/js/views/project_glj_view.js

@@ -13,6 +13,19 @@ let projectGljObject={
     materialTreeSheet:null,
     projectGljSheetData:[],
     mixRatioSetting:{},
+    infoPriceSetting:{
+      header:[
+        {headerName: "编号", headerWidth: 100, dataCode: "code", dataType: "String"},
+        {headerName: "材料名称", headerWidth: 180, dataCode: "name", dataType: "String"},
+        {headerName: "规格型号", headerWidth: 160, dataCode: "specs", hAlign: "left", dataType: "String"},
+        {headerName: "单位", headerWidth: 50, dataCode: "unit", dataType: "String",hAlign: "center"},
+        {headerName: "含税市场价", headerWidth: 160, dataCode: "taxPrice", hAlign: "right", dataType: "Number",validator:"number"}//,decimalField:"glj.unitPrice"
+    ],
+    view: {
+        lockColumns: [0,1,2,3,4]//,
+        //colHeaderHeight:30
+      }
+    },
     relatedRationSetting:{
       header:[
         {headerName: "编码", headerWidth: 100, dataCode: "code", dataType: "String"},
@@ -64,6 +77,17 @@ let projectGljObject={
         {ID:'MAIN_MATERIAL',text:'主材'},
         {ID:'EQUIPMENT',text:'设备'}
     ],
+    initInfoPriceSpread:function(){
+      if(this.infoPriceSpread) return this.infoPriceSpread.refresh();
+      this.infoPriceSpread = SheetDataHelper.createNewSpread($("#info_price_sheet")[0]);
+      sheetCommonObj.spreadDefaultStyle(this.infoPriceSpread);
+      this.infoPriceSheet = this.infoPriceSpread .getSheet(0);
+      this.initSheet(this.infoPriceSheet,this.infoPriceSetting);
+      this.infoPriceSheet.name('infoPriceSheet');
+
+
+      this.getInfoPriceOptions();
+    },
     initSpreads:function(){
         if(this.projectGljSpread==null) this.initProjectGljSpread();
         //if(materialAdjustObj.spread == null) materialAdjustObj.initSpread();
@@ -1261,6 +1285,21 @@ let projectGljObject={
         }
         htmlString += '</ul>';
         $('#ALL').after(htmlString);
+    },
+    getInfoPriceOptions:async function(){
+      let options =await ajaxPost("/infoPrice/getOptions",{});
+      this.infoPriceOptions=options;
+      this.createSelectOptions($("#info_area"),options.areas);
+      let years = _.keysIn(options.periodMap);
+      this.createSelectOptions($("#info_year"),_.sortBy(years));   
+    },
+    createSelectOptions(ele,opts){
+      ele.empty();
+      let str = `<option value=""></option>`;
+      for(let o of opts){
+        str +=`<option value="${o}">${o}</option>`
+      }
+      ele.html(str);
     }
 };
 
@@ -1317,6 +1356,11 @@ function loadProjectGljSize() {
           SlideResize.loadVerticalHeight(pojGljResizeEles.eleObj.module, pojGljResizeEles.eleObj, pojGljResizeEles.limit, function () {
             me.projectGljSpread?me.projectGljSpread.refresh():'';
             me.mixRatioSpread?me.mixRatioSpread.refresh():'';
+            //信息价相关
+            $('#info_price_sheet').height($("#mix_ratio_sheet").height() - $("#infoToolDiv").height());
+            if($('#info_price_sheet').is(':visible')) me.initInfoPriceSpread();
+           
+            
           });
         }
        
@@ -1609,6 +1653,30 @@ $(function () {
       projectGljObject.mixRatioSpread.refresh();
       projectGljObject.showRelatedRationDatas();
     });
+    $("#info-nav").on('shown.bs.tab', function () {
+      $('#info_price_sheet').height($("#mix_ratio_sheet").height() - $("#infoToolDiv").height());
+      projectGljObject.initInfoPriceSpread();
+     /*  
+      projectGljObject.showRelatedRationDatas(); */
+    });
+    $('#info_year').change(function () {
+      let periodMap = projectGljObject.infoPriceOptions.periodMap;
+      let year = $(this).val();
+      let month = $("#info_month").val();
+      let options = periodMap[year];
+      projectGljObject.createSelectOptions($("#info_month"),periodMap[year]);
+      if(month !=""){
+        if(_.includes(options,month)){
+          $("#info_month").val(month);
+          // to do 
+          //获取信息价内容
+        }
+      }
+    });
+    $('#info_month').change(function () {
+      let month = $(this).val();
+      console.log(month);
+       // to do 
+       //获取信息价内容
+    });
 });
-
-