Browse Source

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost into 1.0.0_online

# Conflicts:
#	web/building_saas/main/js/views/side_tools.js
#	web/building_saas/main/js/views/sub_view.js
zhongzewei 6 years ago
parent
commit
9fc19fe757

+ 1 - 0
config/gulpConfig.js

@@ -150,6 +150,7 @@ module.exports = {
         'web/building_saas/main/js/views/character_content_view.js',
         'web/building_saas/main/js/views/glj_view.js',
         'web/building_saas/main/js/views/zmhs_view.js',
+        'web/building_saas/main/js/views/mbzm_view.js',
         'web/building_saas/main/js/views/tender_price_view.js',
         'web/building_saas/main/js/views/sub_view.js',
         'web/building_saas/main/js/views/fee_rate_view.js',

+ 2 - 0
modules/all_models/compleRation_coe.js

@@ -22,6 +22,8 @@ const coeSchema = new Schema({
     gljName: String,
     operator: String,               // 运算符(*、+、-、=)
     amount: String,                 // 调整的量
+    replaceCode:String,
+    replaceName:String,
     _id: false
 });
 

+ 3 - 0
modules/all_models/ration_coe.js

@@ -7,8 +7,11 @@ var mongoose = require('mongoose'),
 var coeSchema = mongoose.Schema({
     coeType: String,                // 系数类型,指作用范围:// 单个(如:111量0.001)、人工类、材料类、机械类、全部(如:定额×0.925)。
     gljCode: String,                  // 要调整的工料机ID(当coeType=0时有效)
+    gljName: String,
     operator: String,               // 运算符(*、+、-、=)
     amount: Number,                 // 调整的量
+    replaceCode:String,
+    replaceName:String,
     _id: false
 });
 

+ 2 - 0
modules/all_models/stdRation_coe.js

@@ -12,6 +12,8 @@ const coeSchema = new Schema({
     amount: String,                 // 调整的量
     gljCode: String,
     gljName: String,
+    replaceCode:String,
+    replaceName:String,
     _id: false
 });
 

+ 6 - 2
public/web/sheet/sheet_common.js

@@ -138,8 +138,8 @@ var sheetCommonObj = {
                 sheet.setValue(0, col, setting.header[col].headerName, header);
                 sheet.setColumnWidth(col, setting.header[col].headerWidth?setting.header[col].headerWidth:100);
             }
-            if(setting.header[col].visible === false){
-                sheet.setColumnVisible(col,false);
+            if(setting.header[col].visible!==null&&setting.header[col].visible!==undefined){
+                sheet.setColumnVisible(col,setting.header[col].visible);
             }
             sheet.getCell(0, col, GC.Spread.Sheets.SheetArea.colHeader).wordWrap(true);
         }
@@ -262,6 +262,10 @@ var sheetCommonObj = {
             sheet.options.isProtected = true;
             sheet.getRange(-1, 0, -1, setting.header.length, GC.Spread.Sheets.SheetArea.viewport).locked(false);
             for (var i = 0; i < setting.view.lockColumns.length; i++) {
+                let col = setting.view.lockColumns[i];
+                if(_.isString(col)){//如果是dataCode 进行转换
+                    col = _.findIndex(setting.header,{dataCode:tem})
+                }
                 sheet.getRange(-1,setting.view.lockColumns[i], -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
             }
         }

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

@@ -261,9 +261,9 @@ legend.legend{
 .item_spread{
     width: 29.8%;
     float: left;
-    white-space:nowrap;
     margin-top: -5px;
     background: #F1F1F1;
+    word-wrap:break-word
 }
 
 input.text-right{

+ 27 - 2
web/building_saas/main/html/main.html

@@ -213,6 +213,9 @@
                                   <li class="nav-item" id = "TZJNR_div">
                                       <a class="nav-link sub-item" id="linkTZJNR" data-toggle="tab" href="#subSpread" role="tab">特征及内容</a>
                                   </li>
+                                  <!--<li class="nav-item" id="MBZM_div">
+                                      <a class="nav-link sub-item" id="linkMBZM" data-toggle="tab" href="#subSpread" role="tab">模板子目</a>
+                                  </li>-->
                               </ul>
                               <!-- Tab panes -->
                               <div class="tab-content" id="tabCon">
@@ -220,7 +223,7 @@
                                       <div class="main-data-bottom ovf-hidden" id="subSpread" style="display: none" tabindex="0"></div>
                                       <div class="main-data-bottom ovf-hidden" id="rgResize" style="width: 0.2%; height: 100%; resize:horizontal; cursor: w-resize; float: left; background: #F1F1F1;display: none"></div>
                                       <div class="item_spread main-data-bottom ovf-hidden " id="replaceM" style="display: none" >
-                                          <div class="p-0" id="openItemText" style="height:100%;white-space:normal;width: 40px">
+                                          <div class="p-0" id="openItemText" style="height:100%;width: 40px">
                                               <div class="tn-nav d-flex align-items-start flex-column" data-toggle="tooltip" data-placement="left" title="" data-original-title="打开项目特征">
                                                   <span class="mt-3 ml-2 text-primary">项目特征</span>
                                                   <i class="fa fa-arrow-left mt-auto mb-3 text-primary ml-2"></i>
@@ -234,6 +237,27 @@
                                           <div  id="zmhsResize" style="width: 0.2%; height: 100%; resize:horizontal; cursor: w-resize; float: left; background: #F1F1F1"></div>
                                           <div class=" main-data-bottom ovf-hidden" style="width: 39.8%; float: left; margin: 0; padding:0;" id="assSpread"></div>
                                       </div>
+                                      <div class="main-data-bottom ovf-hidden" id="tabMBZM" style="display: none;">
+                                              <div class="col-12" style="background: #F1F1F1;">
+                                                  <div class="row" style="border-bottom:1px solid #ccc">
+                                                      <label class="col-auto col-form-label col-form-label-sm">提取位置</label>
+                                                      <div class="col-2">
+                                                          <select class="form-control  form-control-sm" id="">
+                                                              <option value="1">模板子目分别放在措施项目下</option>
+                                                              <option value="2">模板子目分别放在分部分项下</option>
+                                                              <option value="3">模板子目分别放在对应混凝土子目下</option>
+                                                          </select>
+                                                      </div>
+                                                      <div class="col-1">
+                                                          <button class=" btn btn-primary btn-sm form-control" type="button" id="apply_mbzm">应用</button>
+                                                      </div>
+                                                      <div class="col-1">
+                                                          <button class=" btn btn-primary btn-sm form-control" type="button" id="next_mbzm">下一条</button>
+                                                      </div>
+                                                  </div>
+                                              </div>
+                                              <div class=" ovf-hidden" style="" id="mbzmSpread"></div>
+                                      </div>
                                       <div class="main-data-bottom ovf-hidden" style="display: none" id="comments">
                                           <textarea style="font-size: 0.9rem" class="form-control" rows="8" readonly=""></textarea>
                                       </div>
@@ -624,7 +648,7 @@
                                       <div class="main-data-side-d" id="div_block_tree"></div>
                                   </div>
                                   <div class="resize" id="kmbkResize" style="background-color:#dfdcdc;"></div>
-                                  <div class="bottom-content" style="background-color:#ff7e0e">
+                                  <div class="bottom-content">
                                       <div id="div_block_bill" style="height:90px"></div>
                                       <div id="div_block_ration" style="height:100%"></div>
                                   </div>
@@ -1885,6 +1909,7 @@
     <script type="text/javascript" src="/web/building_saas/main/js/views/character_content_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/glj_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/zmhs_view.js"></script>
+    <script type="text/javascript" src="/web/building_saas/main/js/views/mbzm_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/tender_price_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/billsElf.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/sub_view.js"></script>

+ 36 - 4
web/building_saas/main/js/views/block_lib.js

@@ -42,8 +42,8 @@ var blockLibObj = {
             {headerName: "项目编码", headerWidth: 90, dataCode: "code", dataType: "String", hAlign: "center"},
             {headerName: "项目名称", headerWidth: 100, dataCode: "name", dataType: "String"},
             {headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center"},
-            {headerName: "综合单价", headerWidth: 60, dataCode: "quantity", dataType: "Number"},
-            {headerName: "项目特征", headerWidth: 120, dataCode: "itemCharacterText", dataType: "String"}
+            {headerName: "综合单价", headerWidth: 70, dataCode: "", dataType: "Number"},
+            {headerName: "项目特征", headerWidth: 160, dataCode: "itemCharacterText", dataType: "String"}
         ],
         view: {
             lockColumns: [0, 1, 2, 3, 4]
@@ -57,8 +57,8 @@ var blockLibObj = {
             {headerName: "名称", headerWidth: 100, dataCode: "name", dataType: "String"},
             {headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center"},
             {headerName: "含量", headerWidth: 40, dataCode: "contain", dataType: "Number"},
-            {headerName: "取费专业", headerWidth: 60, dataCode: "programID", dataType: "Number"},
-            {headerName: "综合单价", headerWidth: 60, dataCode: "quantity", dataType: "Number"},
+            {headerName: "取费专业", headerWidth: 70, dataCode: "", dataType: "String", hAlign: "center"},
+            {headerName: "综合单价", headerWidth: 70, dataCode: "", dataType: "Number"},
             {headerName: "子目换算状态", headerWidth: 90, dataCode: "adjustState", dataType: "String"}
         ],
         view: {
@@ -146,9 +146,11 @@ var blockLibObj = {
                 rationDatas.push(r.data);
             };
             sheetCommonObj.showData(me.billSheet, me.billSetting, [sourceNode.data]);
+            me.changeBillText(sourceNode.data);
             let rCount = (rationDatas.length > 0) ? rationDatas.length : 1;
             me.rationSheet.setRowCount(rCount, GC.Spread.Sheets.SheetArea.viewport);
             sheetCommonObj.showData(me.rationSheet, me.rationSetting, rationDatas);
+            me.changeRationText(rationDatas);
         }
         else{
             sheetCommonObj.cleanSheet(me.billSheet, me.billSetting, 1);
@@ -407,6 +409,36 @@ var blockLibObj = {
             nodes.push(node);
         };
         return nodes;
+    },
+    refreshSpread: function (){
+        if (this.mainSpread)
+            this.mainSpread.refresh();
+        if (this.billSpread)
+            this.billSpread.refresh();
+        if (this.rationSpread)
+            this.rationSpread.refresh();
+    },
+    changeRationText: function (rationDatas) {
+        let sheet = this.rationSheet;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        for (let i = 0; i < rationDatas.length; i++) {
+            let pID = rationDatas[i].programID;
+            if (pID) sheet.setValue(i, 4, projectObj.project.calcProgram.compiledTemplateMaps[pID]);
+            if (rationDatas[i].feesIndex && rationDatas[i].feesIndex.common)
+                sheet.setValue(i, 5, rationDatas[i].feesIndex.common.unitFee);
+        }
+        sheet.resumeEvent();
+        sheet.resumePaint();
+    },
+    changeBillText: function (billData){
+        let sheet = this.billSheet;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        if (billData.feesIndex && billData.feesIndex.common)
+            sheet.setValue(0, 3, billData.feesIndex.common.unitFee);
+        sheet.resumeEvent();
+        sheet.resumePaint();
     }
 };
 

+ 1 - 0
web/building_saas/main/js/views/glj_view.js

@@ -520,6 +520,7 @@ var gljOprObj = {
                         MaterialController.showReplaceDiv(node);
                     }
                     if($('#linkAZZJF').hasClass('active')) installationFeeObj.showRationInstallationData(node);
+                    if($('#linkMBZM').hasClass('active')) mbzm_obj.showMBZMData(node);
                 }
                 isShow = true;
             }

+ 38 - 0
web/building_saas/main/js/views/mbzm_view.js

@@ -0,0 +1,38 @@
+/**
+ * Created by zhang on 2018/11/26.
+ */
+
+let mbzm_obj={
+    spread:null,
+    setting:{
+        header: [
+            {headerName: "编码", headerWidth: 130, dataCode: "code", dataType: "String", formatter: "@"},
+            {headerName: "模板类别", headerWidth: 260, dataCode: "templateType", dataType: "String", hAlign: "left"},
+            {headerName: "系数", headerWidth: 65, dataCode: "coe", dataType: "Number"},
+            {headerName: "单位", headerWidth: 45, dataCode: "unit", dataType: "String", hAlign: "center"},
+            {headerName: "工程量", headerWidth: 65, dataCode: "quantity", dataType: "Number",decimalField: "ration.quantity"},
+            {headerName: "关联类别", headerWidth: 100, dataCode: "type", dataType: "String"},
+            {headerName: "清单位置", headerWidth: 200, dataCode: "billsPosition", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition'},
+            {headerName: "清单位置", headerWidth: 200, dataCode: "fxPosition", hAlign: "left", dataType: "String",cellType:'selectButton',getText:'forPosition',visible:false}
+        ],
+        view: {
+            lockColumns:["code","content","unit","type","billsPosition","fxPosition"],
+            rowHeaderWidth:25
+        },
+
+    },
+    initSpread:function () {
+        this.spread = SheetDataHelper.createNewSpread($("#mbzmSpread")[0]);
+        sheetCommonObj.spreadDefaultStyle(this.spread);
+        this.sheet = this.spread.getSheet(0);
+        sheetCommonObj.initSheet(this.sheet, this.setting);
+        this.sheet.setRowCount(0);
+
+    },
+    refresh:function () {
+        this.spread?this.spread.refresh():'';
+    },
+    showMBZMData:function(node){
+       let selected = node?node:projectObj.project.mainTree.selected;
+    }
+}

+ 6 - 1
web/building_saas/main/js/views/quantity_edit_view.js

@@ -220,7 +220,12 @@ let quantityEditObj = {
             evalString = replaceAll("QDL","("+bQuantity+")",evalString);
         }
         try {
-            let value = eval(evalString);
+            let value = undefined;
+            if(evalString&&evalString!=""){
+                let exp = new Expression('');
+                exp.Expression(evalString);
+                value = Number(exp.Evaluate());
+            }
             return value;
         }catch (error){
             alert("输入的表达式有误,请重新输入!");

+ 8 - 11
web/building_saas/main/js/views/side_tools.js

@@ -33,6 +33,9 @@ slideResize(sideResizeEles, {min: 250, max: $('#zaojiashu').width()-260}, 'width
         sheetCommonObj.setColumnWidthByRate($('#stdRationChapter').width() - 40, rationLibObj.rationChapterSpread, rationLibObj.rationChapterTreeSetting.cols);
         rationLibObj.refreshSpread();
     }
+    else if(sideResizeEles.id === 'blockLibTab'){
+        blockLibObj.refreshSpread();
+    }
     else{
         billsLibObj.refreshBillsSpread();
         billsLibObj.refreshBillsRelaSpread();
@@ -79,6 +82,7 @@ slideResize(billsLibResizeEles, {min: 147, max: 680}, 'height', function() {
     billsLibObj.refreshBillsRelaSpread();
 });
 
+// 块模板库上下拖动
 let blockLibResizeEles = {};
 blockLibResizeEles.id = '#kmbk';
 blockLibResizeEles.resize = $('#kmbkResize');
@@ -88,7 +92,7 @@ blockLibResizeEles.farElement = $('#kmbk').find('.bottom-content');
 blockLibResizeEles.farSpread = $('#div_block_detail');
 blockLibResizeEles.nav = null;
 slideResize(blockLibResizeEles, {min: 147, max: 680}, 'height', function() {
-    billsGuidance.refreshWorkBook();
+    blockLibObj.refreshSpread();
 });
 
 
@@ -96,22 +100,15 @@ var sideToolsObj = {
     showSideTools: function (tabPanel, show, id) {
         sideResizeEles.id = id;
         if (show) {
-            if(id === 'stdBillsGuidanceTab'){
-                sideResizeEles.nearElement.css('width', '66.666667%');
-                sideResizeEles.farElement.css('width', '33.333333%');
-            }
-            else {
-                sideResizeEles.nearElement.css('width', '66.666667%');
-                sideResizeEles.farElement.css('width', '33.333333%');
-            }
-            $('.main-side .tab-pane').hide();
+
+                 $('.main-side .tab-pane').hide();
             id === 'locateTab'?tabPanel.show(locateObject.onshow):tabPanel.show();//locateTab要等div显示后才执行刷新操作
             loadSize(sideResizeEles, 'width', function(){
                 if(id === 'stdRationTab'){//定额库
                     loadSize(rationLibResizeEles, 'height', function(){
                     });
                 }
-                else if(id === 'blockLibTab'){//定额
+                else if(id === 'blockLibTab'){//块模板库
                     loadSize(blockLibResizeEles, 'height', function(){
                     });
                 }else if(id == "locateTab"){

+ 29 - 4
web/building_saas/main/js/views/sub_view.js

@@ -63,7 +63,7 @@ let subObj = {
     },
     initNavItem:function (node) {
      /*   1、造价书选中行类别是“大项费用”、“分部”、“分项”、“清单”时,显示按钮“工程量明细”、“计算程序”、“特征及内容”,默认打开“计算程序”。
-          2、选中行类别是“定额”、“量价”、“人材机”时,显示按钮“人材机”、“子目换算”、“工程量明细”、“计算程序”、“安装增加费”,默认打开“人材机”。
+          2、选中行类别是“定额”、“量价”、“人材机”时,显示按钮“人材机”、“子目换算”、“工程量明细”、“计算程序”、“安装增加费”、"模板子目",默认打开“人材机”。
      */
         if (!node) {
             return;
@@ -73,15 +73,16 @@ let subObj = {
             //GLJ_div //ZMHS_div
             $("#GLJ_div").show();
             $("#ZMHS_div").show();
+            $("#MBZM_div").show();
             installationFeeObj.engineeringTypeChecking();//检查是否安装工程
             $("#TZJNR_div").hide();
-            $('#QDJL_div').hide();
-            $("#linkGLJ").addClass();
-            $(gljOprObj.rationTab).click();
+  			$('#QDJL_div').hide();
+            $("#linkGLJ").addClass();            $(gljOprObj.rationTab).click();
 
         }else {
             $("#GLJ_div").hide();
             $("#ZMHS_div").hide();
+            $("#MBZM_div").hide();
             $("#AZZJF_div").hide();
             $("#TZJNR_div").show();
             $('#QDJL_div').show();
@@ -158,6 +159,16 @@ $("#linkZMHS").click(function(){        // 子目换算
     gljOprObj.activeTab='#linkZMHS';
     gljOprObj.setNodeShowTab();
 });
+$("#linkMBZM").click(function(){        // 模板子目
+    $("#subItems").children().hide();
+    $("#tabMBZM").show();
+    pageCCOprObj.active = false;
+    refreshSubSpread();
+    gljOprObj.activeTab='#linkMBZM';
+    gljOprObj.setNodeShowTab();
+});
+
+
 //特征及内容各模块宽度自适应
 function adaptiveTzjnrWidth() {
     if(gljOprObj.activeTab !== '#linkTZJNR'){
@@ -541,6 +552,7 @@ function refreshSubSpread(){
         BillsElf.refreshWorkBook();
     }
     if($('#linkZMHS').hasClass('active')) zmhs_obj.refresh();
+    if($('#linkMBZM').hasClass('active')) mbzm_obj.refresh();
 }
 
 let subViewObj = {
@@ -604,6 +616,19 @@ $('#linkZMHS').on('shown.bs.tab', function (e) {
     zmhs_obj.showZMHSData();
 });
 
+
+$('#linkMBZM').on('shown.bs.tab', function (e) {
+    let total = $('#mbzmSpread').parent().height();
+    let b_height = $('#mbzmSpread').prev('.col-12').height();
+    $('#mbzmSpread').css('height',total- b_height);
+    if(mbzm_obj.spread == null){
+        mbzm_obj.initSpread();
+    }
+    mbzm_obj.refresh();
+    mbzm_obj.showMBZMData();
+});
+
+
 $('#linkComments').on('shown.bs.tab', function () {
     subViewObj.loadComments(projectObj.project.mainTree.selected);
 });

+ 1 - 1
web/building_saas/main/js/views/zmhs_view.js

@@ -224,7 +224,7 @@ let zmhs_obj = {
         if(cus_coe){
             for(let i =0;i< cus_coe.coes.length;i++){
                 newString += me.getOneRow(cus_coe.coes[i].coeType, i, cus_coe.coes[i].coeType,height);
-                offect += height +1
+                offect += height +3
             }
         }
         newString += "</table></form><div style='height:"+ height+"px'><div onclick='zmhs_obj.coeSheet.endEdit()' style='margin:-1px 1px 0px'>自定义系数</div></div>";