Prechádzať zdrojové kódy

Merge branch 'master' into olym

olym 8 rokov pred
rodič
commit
9487cc5bd1

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

@@ -305,3 +305,6 @@ body {
   background:#fff;
   border-bottom:1px solid #ddd
 }
+.gc-column-header-cell{
+    text-align: center!important;
+}

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

@@ -56,6 +56,9 @@
         <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
             <ul class="nav navbar-nav px-1">
                 <li class="nav-item">
+                    <a class="nav-link" href="#" aria-expanded="false" data-toggle="modal" data-target="#poj-set"><i class="fa fa-cube"></i> 项目属性</a>
+                </li>
+                <li class="nav-item">
                     <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false"><i class="fa fa-sliders"></i> 选项</a>
                 </li>
                 <li class="nav-item dropdown">
@@ -409,6 +412,104 @@
 
         </div>
     </div>
+    <!--弹出项目属性-->
+    <div class="modal fade" id="poj-set" data-backdrop="static">
+        <div class="modal-dialog modal-lg" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">项目属性</h5>
+                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">&times;</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <div class="row">
+                        <div class="col-3">
+                            <ul class="nav flex-column nav-pills" role="tablist">
+                                <li class="nav-item"><a class="nav-link active" data-toggle="pill" href="#poj-settings-1" role="tab">基本信息</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-2" role="tab">工程特征</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-3" role="tab">指标信息</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-4" role="tab">取费方式</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-5" role="tab">清单工程精度</a></li>
+                                <li class="nav-item"><a class="nav-link" data-toggle="pill" href="#poj-settings-6" role="tab" id="tab_poj-settings-6">人工单价调整</a></li>
+                            </ul>
+                        </div>
+                        <div class="col-9">
+                            <div class="tab-content">
+                                <!--基本信息-->
+                                <div class="tab-pane fade show active" id="poj-settings-1" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        基本信息
+                                    </div>
+                                </div>
+                                <!--工程特征-->
+                                <div class="tab-pane fade" id="poj-settings-2" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        工程特征
+                                    </div>
+                                </div>
+                                <!--指标信息-->
+                                <div class="tab-pane fade" id="poj-settings-3" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        指标信息
+                                    </div>
+                                </div>
+                                <!--取费方式-->
+                                <div class="tab-pane fade" id="poj-settings-4" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        <fieldset class="form-group">
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1" checked="" type="radio">
+                                                    子目含量取费
+                                                </label>
+                                            </div>
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="optionsRadios" id="optionsRadios2" value="option2" type="radio">
+                                                    子目单价取费(反算):清单综合合价=清单综合单价*清单工程量
+                                                </label>
+                                            </div>
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="optionsRadios" id="optionsRadios3" value="option3" type="radio">
+                                                    子目单价取费(正算):清单综合合价=∑子目综合合价
+                                                </label>
+                                            </div>
+                                            <div class="form-check">
+                                                <label class="form-check-label">
+                                                    <input class="form-check-input" name="optionsRadios" id="optionsRadios4" value="option4" type="radio">
+                                                    清单单价取费
+                                                </label>
+                                            </div>
+                                        </fieldset>
+                                    </div>
+                                </div>
+                                <!--清单工程精度-->
+                                <div class="tab-pane fade" id="poj-settings-5" role="tabpanel">
+                                    <div class="modal-auto-height">
+                                        清单工程精度
+                                    </div>
+                                </div>
+                                <!--人工单价调整-->
+                                <div class="tab-pane fade" id="poj-settings-6" role="tabpanel">
+                                    <div class="row px-3">
+                                        <select class="col-4 form-control form-control-sm"><option>渝建[2016]71号</option><option>渝建[2017]78号</option></select>
+                                    </div>
+                                    <div style="height:8px;"></div>
+                                    <div class="modal-auto-height" id="labourCoeSpread" />
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
+                    <a href="" class="btn btn-primary">确定</a>
+                </div>
+            </div>
+        </div>
+    </div>
     <!--弹出列设置-->
     <div class="modal fade" id="column" data-backdrop="static">
         <div class="modal-dialog modal-lg" role="document">
@@ -514,6 +615,7 @@
     <script type="text/javascript" src="/web/building_saas/main/js/views/sub_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/fee_rate_view.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/views/sub_fee_rate_views.js"></script>
+    <script type="text/javascript" src="/web/building_saas/main/js/views/project_property_labour_coe_view.js"></script>
 
 
    <!-- <script src="/web/building_saas/fee_rates/fee_rate.js"></script>-->

+ 3 - 2
web/building_saas/main/js/models/calc_program.js

@@ -2726,7 +2726,7 @@ let calcTemplates = [
     }
 ];
 
-let calcFeeRates = [
+/*let calcFeeRates = [
     {
         "ID" : 1,
         "ParentID" : null,
@@ -3462,7 +3462,7 @@ let calcFeeRates = [
         "rate" : 0.00,
         "memo" : null
     }
-];
+];*/
 
 let calcLabourCoes = [
     {
@@ -3600,6 +3600,7 @@ class CalcProgram {
     };
 
     compileAllTemps(){
+        let calcFeeRates = this.project.FeeRate.datas.rates;
         this.calc.compilePublics(calcFeeRates, calcLabourCoes, feeType, rationCalcBase);
         for (let calcTemplate of calcTemplates){
             this.calc.compileTemplate(calcTemplate);

+ 87 - 0
web/building_saas/main/js/views/project_property_labour_coe_view.js

@@ -0,0 +1,87 @@
+/**
+ * Created by CSL on 2017-09-22.
+ * 项目属性之人工系数。
+ */
+let labourCoeView = {
+    datas: [],
+    spread: null,
+    sheet: null,
+
+    buildSheet: function (){
+        let me = this;
+        me.datas = calcLabourCoes;
+
+        if (me.spread) {
+            me.spread.destroy();
+            me.spread = null;
+        };
+        me.spread = new GC.Spread.Sheets.Workbook($("#labourCoeSpread")[0], { sheetCount: 1 });
+        me.spread.options.tabStripVisible = false;
+        me.spread.options.showVerticalScrollbar = false;
+        me.spread.options.showHorizontalScrollbar = false;
+        me.spread.options.rowHeight = 50;
+        let sheetArea = GC.Spread.Sheets.SheetArea;
+        let sheet = me.spread.getSheet(0);
+        me.sheet = sheet;
+        sheet.suspendPaint();
+        sheet.suspendEvent();
+        sheet.setColumnCount(1, sheetArea.viewport);
+        sheet.setColumnWidth(0, 180, sheetArea.viewport);
+        sheet.setRowCount(1, sheetArea.colHeader);
+        sheet.setRowCount(20, sheetArea.viewport);
+        sheet.setRowHeight(0, 30, sheetArea.colHeader);
+
+        sheet.resumeEvent();
+        sheet.resumePaint();
+    },
+
+    loadData(){          // 树结构转换二维表显示,行列转换
+        let me = this;
+        let libArr = [];
+        for (let v of me.datas) {if (!v.ParentID) libArr.push(v);};
+
+        // 行名称
+        let row = 0;
+        for (let v of me.datas) {
+            if (v.ParentID == libArr[0].ID) {
+                me.sheet.setText(row, 0, v.name, GC.Spread.Sheets.SheetArea.viewport);
+                row++;
+            };
+        };
+
+        me.sheet.setColumnCount(libArr.length + 1, GC.Spread.Sheets.SheetArea.viewport);    // 还多一列行名称
+        me.sheet.setRowCount(row, GC.Spread.Sheets.SheetArea.viewport);
+        me.sheet.setText(0, 0, "定额工种", GC.Spread.Sheets.SheetArea.colHeader);
+        me.sheet.options.isProtected = true;
+        me.sheet.getRange(-1, 1, -1, libArr.length + 1, GC.Spread.Sheets.SheetArea.viewport).locked(false); 
+
+        // 列名称
+        for (let c = 0; c <= libArr.length - 1; c++) {
+            me.sheet.setText(0, c + 1, libArr[c].name, GC.Spread.Sheets.SheetArea.colHeader);
+            me.sheet.setColumnWidth(c + 1, 100, GC.Spread.Sheets.SheetArea.colHeader);
+            // 值明细
+            let libID = libArr[c].ID;
+            for (let r = 0; r < row; r++) {
+                let rowName = me.sheet.getText(r, 0);
+                for (let v of me.datas) {
+                    if ((v.ParentID == libID) && (v.name == rowName)) {
+                        me.sheet.setValue(r, c + 1, v.coe);
+                        break;
+                    };
+                };
+            };
+        };
+    },
+
+    showData(){
+        let me = this;
+        me.buildSheet();
+        me.loadData();
+    }
+};
+
+$(document).ready(function(){
+    $("#tab_poj-settings-6").on('shown.bs.tab', function (e) {
+        labourCoeView.showData();
+    });
+});

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

@@ -108,6 +108,7 @@ var billsLibObj = {
         var showJobsAndFeatures = function (node) {
             $('#stdBillsJobTab').show();
             $('#stdBillsRemarkTab').hide();
+            billsLibObj.refreshBillsRelaSpread();
             billsLibObj.checkBillsRelaSpread();
             showJobs(getBillsJobs(node));
             showFeatures(getBillsFeatures(node));