Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

Chenshilong 7 years ago
parent
commit
34a84e8738

+ 2 - 1
config/gulpConfig.js

@@ -39,6 +39,7 @@ module.exports = {
         '!lib/JSExpressionEval_src/JsHashMap.js',
         'lib/jquery-contextmenu/*.js',
         'lib/lodash/lodash.js',
+        'web/building_saas/main/js/models/main_consts.js',
         'web/building_saas/glj/js/project_glj.js',
         'web/building_saas/glj/js/composition.js',
         'web/building_saas/glj/js/common_spread.js',
@@ -59,12 +60,12 @@ module.exports = {
        // 'lib/spreadjs/views/gc.spread.views.dataview.10.0.0.min.js',
        // "lib/spreadjs/views/common/gc.spread.common.10.0.0.min.js",
       //  'lib/spreadjs/views/plugins/gc.spread.views.gridlayout.10.0.0.min.js',
-        'web/building_saas/main/js/models/main_consts.js',
         'web/building_saas/main/js/models/project.js',
         'web/building_saas/main/js/models/bills.js',
         'web/building_saas/main/js/models/ration.js',
         'web/building_saas/main/js/models/glj.js',
         'web/building_saas/main/js/models/project_glj.js',
+        'web/building_saas/main/js/models/composition.js',
         'web/building_saas/main/js/models/fee_rate.js',
         'web/building_saas/main/js/models/ration_glj.js',
         'web/building_saas/main/js/models/ration_coe.js',

+ 1 - 0
modules/fee_rates/facade/fee_rates_facade.js

@@ -28,6 +28,7 @@ module.exports={
     newFeeRateFile:newFeeRateFile,
     getFeeRatesByProject:getFeeRatesByProject,
     getGCFeeRateFiles: getGCFeeRateFiles ,
+    setFeeRateToBill:setFeeRateToBill,
     updateFeeRate:updateFeeRate
 };
 let operationMap={

+ 9 - 8
modules/glj/controllers/glj_controller.js

@@ -458,24 +458,25 @@ class GLJController extends BaseController {
             compositionData = JSON.parse(JSON.stringify(compositionData));
             // 查找对应的单价数据
             let unitPriceModel = new UnitPriceModel();
-            let unitPriceData = await unitPriceModel.findDataByCondition({unit_price_file_id: currentUnitPriceId}, null, false, 'code');
+            let unitPriceData = await unitPriceModel.findDataByCondition({unit_price_file_id: currentUnitPriceId}, null, false, 'glj_id');
 
             // 整理数据
             let result = {};
             for(let composition of compositionData) {
+                let tmpId = composition.glj_id !== undefined ? composition.glj_id : -1;
                 let tmpData = {
-                    market_price: unitPriceData[composition.connect_code] !== undefined ?
-                        unitPriceData[composition.connect_code].market_price : 0,
-                    base_price: unitPriceData[composition.connect_code] !== undefined ?
-                        unitPriceData[composition.connect_code].base_price : 0,
+                    market_price: unitPriceData[tmpId] !== undefined ?
+                        unitPriceData[tmpId].market_price : 0,
+                    base_price: unitPriceData[tmpId] !== undefined ?
+                        unitPriceData[tmpId].base_price : 0,
                     consumption: composition.consumption,
                     glj_type: composition.glj_type,
                     connect_code: composition.connect_code
                 };
-                if (result[composition.connect_code] === undefined) {
-                    result[composition.connect_code] = [];
+                if (result[tmpId] === undefined) {
+                    result[tmpId] = [];
                 }
-                result[composition.connect_code].push(tmpData);
+                result[tmpId].push(tmpData);
             }
             responseData.data = result;
         } catch (error) {

+ 3 - 1
modules/glj/models/glj_list_model.js

@@ -439,7 +439,8 @@ class GLJListModel extends BaseModel {
                 glj_id: tmp.ID,
                 unit_price_file_id: unitPriceFileId,
                 connect_code: tmp.connectCode,
-                glj_type: tmp.gljType
+                glj_type: tmp.gljType,
+                code: tmp.code,
             };
             mixRatioInsertData.push(mixRatioData);
         }
@@ -484,6 +485,7 @@ class GLJListModel extends BaseModel {
                 unit_price_file_id: unitPriceFileId,
                 type: tmp.gljType,
                 short_name: tmp.shortName === undefined ? '' : tmp.shortName,
+                glj_id: tmp.ID,
             };
             unitPriceInsertData.push(unitPriceData);
         }

+ 3 - 0
modules/glj/models/schemas/mix_ratio.js

@@ -29,6 +29,9 @@ let modelSchema = {
         type: String,
         index: true
     },
+    // 对应工料机code
+    code: String,
+    // 工料机类型
     glj_type: Number
 };
 let model = mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));

+ 2 - 0
modules/glj/models/schemas/unit_price.js

@@ -32,6 +32,8 @@ let modelSchema = {
     short_name: String,
     // 单价文件表id
     unit_price_file_id: Number,
+    // 对应标准库工料机id
+    glj_id: Number
 };
 let model = mongoose.model(collectionName, new Schema(modelSchema, {versionKey: false, collection: collectionName}));
 export {model as default, collectionName as collectionName};

+ 2 - 2
modules/glj/models/unit_price_model.js

@@ -107,7 +107,6 @@ class UnitPriceModel extends BaseModel {
             data.name = regular.test(data.name) ? data.name.replace(regular, changeString) :
                 data.name + changeString;
         }
-
         let insertData = {
             code: data.code,
             base_price: data.base_price,
@@ -115,7 +114,8 @@ class UnitPriceModel extends BaseModel {
             unit_price_file_id: unitPriceFileId,
             name: data.name,
             type: data.type,
-            short_name: data.shortName !== undefined ? data.shortName : ''
+            short_name: data.shortName !== undefined ? data.shortName : '',
+            glj_id: data.glj_id
         };
 
         let addPriceResult = await this.add(insertData);

+ 8 - 1
public/web/scMathUtil.js

@@ -49,6 +49,13 @@ let scMathUtil = {
         };
         return sign + result;
     },
+    zeroString: function(length){
+        let result = '';
+        for (let i = 0; i < length; i++){
+            result = result + '0';
+        };
+        return result;
+    },    
     incMantissa: function(bin){
         let result = bin;
         let iDot = bin.indexOf('.');
@@ -59,7 +66,7 @@ let scMathUtil = {
             if (num === 0){
                 num = 1;
                 let bin1 = bin.substring(0, i);
-                let bin2 = bin.substring(i + 1, iLength);
+                let bin2 = zeroString(iLength - (i + 1));//bin.substring(i + 1, iLength);
                 result = bin1 + num.toString() + bin2;
                 break;
             }

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

@@ -78,8 +78,8 @@
             <ul class="nav nav-tabs flex-column" role="tablist">
                 <li class="nav-item"><a class="active" data-toggle="tab" href="#zaojiashu" role="tab">造价书</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#gongliaoji" id="tab_gongliaoji" role="tab">工料机</a></li>
-                <li class="nav-item"><a data-toggle="tab" href="#fee_rates" id="tab_fee_rate" role="tab" onclick="">费率</a></li>
-                <li class="nav-item"><a data-toggle="tab" href="#calc_program_manage" id="tab_calc_program_manage" role="tab" onclick="">计算程序</a></li>
+                <li class="nav-item"><a data-toggle="tab" href="#fee_rates" id="tab_fee_rate" role="tab" >费率</a></li>
+                <li class="nav-item"><a data-toggle="tab" href="#calc_program_manage" id="tab_calc_program_manage" role="tab">计算程序</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#baobiao" role="tab" onclick="">报表</a></li>
             </ul>
         </div>

+ 11 - 12
web/building_saas/main/js/models/fee_rate.js

@@ -254,7 +254,7 @@ var FeeRate = {
                 if(editInfo.calcItem.feeRateID){
                     var rate = projectObj.project.FeeRate.getFeeRateByID(editInfo.calcItem.feeRateID);
                     if(rate!=undefined){
-                        this.updateFeeRateByCalc(rate,value,editInfo);
+                        this.updateFeeRateByCalc(rate,value);
                         return;
                     }
                 }
@@ -262,14 +262,14 @@ var FeeRate = {
                 editInfo.calcItem.feeRateID=null;
                 var data={'projectID': projectObj.project.ID(),'templatesID': editInfo.template.ID,'calcItem': editInfo.calcItem};
                 rationPM.saveCalcItem(data,function (result) {
+                    project.calcProgram.compileAllTemps();
                     rationPM.refreshDetailSheet();
                 })
-                //updateCal
             }else {
                 rationPM.refreshDetailSheet();
             }
         };
-        FeeRate.prototype.updateFeeRateByCalc=function (rate,value,editInfo) {
+        FeeRate.prototype.updateFeeRateByCalc=function (rate,value) {
             var me=this;
             var data={
                 query:{
@@ -281,12 +281,15 @@ var FeeRate = {
                 }
             }
             CommonAjax.post('/feeRates/updateFeeRate', data, function (data) {
-                _.forEach(editInfo.template.calcItems,function (item) {
-                    if(item.feeRateID==rate.ID){
-                        item.feeRate = value;
-                    }
-                })
+                for(var i =0;i<rationPM.datas.length;i++){
+                    _.forEach(rationPM.datas[i].calcItems,function (item) {
+                        if(item.feeRateID==rate.ID){
+                            item.feeRate = value;
+                        }
+                    })
+                }
                 rate.rate=value;
+                project.calcProgram.compileAllTemps();
                 rationPM.refreshDetailSheet();
                 socket.emit('feeRateChangeNotify', me.getActivateFeeRateFileID());
             });
@@ -419,10 +422,6 @@ var FeeRate = {
 
         };
 
-        FeeRate.prototype.getRate = function (fileID, rateID){
-            return 1.25;
-        };
-
         var feeRate = new FeeRate(project);
         return feeRate;
     },

+ 143 - 137
web/building_saas/main/js/views/fee_rate_view.js

@@ -648,6 +648,7 @@ var feeRateObject={
         var data={'projectID': projectObj.project.ID(),'templatesID': calInfo.template.ID,'calcItem': calInfo.calcItem};
         rationPM.saveCalcItem(data,function (result) {
             calInfo.calcItem.feeRate=rate.rate;
+            project.calcProgram.compileAllTemps();
             rationPM.refreshDetailSheet();
             $("#fee_rate_tree").modal('hide');
         });
@@ -680,165 +681,170 @@ function getPopoverContent() {
     return popover_content;
 }
 
-$('#pop-lv').popover({
-        placement:"bottom",
-        html:true,
-        trigger:"hover | focus",
-        content:getPopoverContent
-    }
-);
-
-$('#tab_fee_rate').on('shown.bs.tab', function (e) {
-    feeRateObject.reFreshRateViews();
-    feeRateObject.loadPageContent();
-});
+$(function(){
+    $('#pop-lv').popover({
+            placement:"bottom",
+            html:true,
+            trigger:"hover | focus",
+            content:getPopoverContent
+        }
+    );
 
-$('#setNewFeeRate').bind('click', function () {
-    var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
-    var usageProjects = feeRateFile.usageProjects;
-    var listString ='';
-    _.forEach(usageProjects,function (u) {
-        listString+="<li>"+u.name+"</li>"
-    })
-    $("#usageProjectList").html(listString);
-    $("#set-lv-feeRateName").text(feeRateFile.name);
-    $("#set-use-feeRateName").text(feeRateFile.name);
+    $('#tab_fee_rate').on('shown.bs.tab', function (e) {
+        feeRateObject.reFreshRateViews();
+        feeRateObject.loadPageContent();
+    });
 
-    feeRateObject.getFeeRateStandards(function (data) {
-        $('#standardSelect').empty();
-        _.forEach(data,function (s) {
-            var option =  $("<option>").val(s.ID).text(s.libName);
-            $('#standardSelect').append(option);
+    $('#setNewFeeRate').bind('click', function () {
+        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
+        var usageProjects = feeRateFile.usageProjects;
+        var listString ='';
+        _.forEach(usageProjects,function (u) {
+            listString+="<li>"+u.name+"</li>"
         })
-        $('#standardSelect').val(feeRateFile.libID);
+        $("#usageProjectList").html(listString);
+        $("#set-lv-feeRateName").text(feeRateFile.name);
+        $("#set-use-feeRateName").text(feeRateFile.name);
+
+        feeRateObject.getFeeRateStandards(function (data) {
+            $('#standardSelect').empty();
+            _.forEach(data,function (s) {
+                var option =  $("<option>").val(s.ID).text(s.libName);
+                $('#standardSelect').append(option);
+            })
+            $('#standardSelect').val(feeRateFile.libID);
+        });
+    });
+    $('#changeConfirm').bind('click', function (){
+        var newVal=$('#standardSelect').val();
+        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
+        if(newVal&&newVal!=feeRateFile.libID){
+            feeRateObject.changeFeeRateStandard(newVal);
+        }
     });
-});
-$('#changeConfirm').bind('click', function (){
-    var newVal=$('#standardSelect').val();
-    var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
-    if(newVal&&newVal!=feeRateFile.libID){
-        feeRateObject.changeFeeRateStandard(newVal);
-    }
-});
 
-$('#saveAs').bind('click', function (){
-    var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
-    $('#copyFeeRateName').val(feeRateFile.name+'副本');
-    $('#valid_name').val(feeRateFile.name+'副本');
-    $('#nameError').hide();
-});
+    $('#saveAs').bind('click', function (){
+        var feeRateFile = projectObj.project.FeeRate.getActivateFeeRate();
+        $('#copyFeeRateName').val(feeRateFile.name+'副本');
+        $('#valid_name').val(feeRateFile.name+'副本');
+        $('#nameError').hide();
+    });
 
-$('#saveAsConfirm').bind('click',function () {
-    feeRateObject.feeRateFileSaveAs($('#copyFeeRateName').val());
-})
+    $('#saveAsConfirm').bind('click',function () {
+        feeRateObject.feeRateFileSaveAs($('#copyFeeRateName').val());
+    })
 
 
-$('#copyFeeRateName').change(function () {
-    feeRateObject.checkFeeRateName(this.value);
-});
+    $('#copyFeeRateName').change(function () {
+        feeRateObject.checkFeeRateName(this.value);
+    });
 
-$('#newFeeRateName').change(function () {
-    var newName = $(this).val();
-    if(!newName||newName==""){
-        $('#renameConfirm').attr("disabled","disabled");
-        $('#renameError').text("请输入文件名称。").show();
-        return;
-    }
-    var callback=function (data) {
-        if(data){
+    $('#newFeeRateName').change(function () {
+        var newName = $(this).val();
+        if(!newName||newName==""){
             $('#renameConfirm').attr("disabled","disabled");
-            $('#renameError').text("本建设项目中已存在同名费率文件。").show();
-        }else {
-            $('#renameConfirm').removeAttr("disabled");
-            $('#renameError').hide();
+            $('#renameError').text("请输入文件名称。").show();
+            return;
         }
-    };
-    projectObj.project.FeeRate.checkFeeRateName(newName,callback);
-});
+        var callback=function (data) {
+            if(data){
+                $('#renameConfirm').attr("disabled","disabled");
+                $('#renameError').text("本建设项目中已存在同名费率文件。").show();
+            }else {
+                $('#renameConfirm').removeAttr("disabled");
+                $('#renameError').hide();
+            }
+        };
+        projectObj.project.FeeRate.checkFeeRateName(newName,callback);
+    });
 
 
-function changeFRadioClick() {
-    var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
-    if(radioV==='0'){
+    function changeFRadioClick() {
+        var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
+        if(radioV==='0'){
+            $("#fromProject").show();
+            $("#fromOther").hide();
+        }else {
+            $("#fromProject").hide();
+            $("#fromOther").show();
+        }
+    }
+    $('#changeFeeRateConfirm').bind('click',function (){
+        var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
+        if(radioV==='0'){
+            feeRateObject.changeFeeRateFileFromCurrent();
+        }else {
+            feeRateObject.changeFeeRateFileFromOthers();
+        }
+    })
+
+    $('#changFeeRateFile').bind('click',function (){
+        $("input[name='chaneg-lv-Radio']")[0].checked=true;
         $("#fromProject").show();
         $("#fromOther").hide();
-    }else {
-        $("#fromProject").hide();
-        $("#fromOther").show();
-    }
-}
-$('#changeFeeRateConfirm').bind('click',function (){
-    var radioV= $("input[name='chaneg-lv-Radio']:checked").val();
-    if(radioV==='0'){
-        feeRateObject.changeFeeRateFileFromCurrent();
-    }else {
-        feeRateObject.changeFeeRateFileFromOthers();
-    }
-})
+        feeRateObject.getChangeInfo();
+    })
 
-$('#changFeeRateFile').bind('click',function (){
-    $("input[name='chaneg-lv-Radio']")[0].checked=true;
-    $("#fromProject").show();
-    $("#fromOther").hide();
-    feeRateObject.getChangeInfo();
-})
+    $('#otherProject').change(function(){
+        var newVal = $(this).val();
+        var projects = feeRateObject.changeInfo.others;
+        var selected = _.find(projects,{ID:parseInt(newVal)});
+        $('#otherFeeRateOption').empty();
+        _.forEach(selected.optionList,function (f) {
+            var option =  $("<option>").val(f.ID).text(f.name);
+            $('#otherFeeRateOption').append(option);
+        });
+    })
 
-$('#otherProject').change(function(){
-    var newVal = $(this).val();
-    var projects = feeRateObject.changeInfo.others;
-    var selected = _.find(projects,{ID:parseInt(newVal)});
-    $('#otherFeeRateOption').empty();
-    _.forEach(selected.optionList,function (f) {
-        var option =  $("<option>").val(f.ID).text(f.name);
-        $('#otherFeeRateOption').append(option);
-    });
-})
+    $('#renameConfirm').bind('click',function (){
+        var feeRateFileID= $("#newFeeRateID").val();
+        var name = $("#newFeeRateName").val();
+        feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);
+    })
 
-$('#renameConfirm').bind('click',function (){
-    var feeRateFileID= $("#newFeeRateID").val();
-    var name = $("#newFeeRateName").val();
-    feeRateObject.changeFeeRateFileConfirm(feeRateFileID,name);
-})
 
+    $('#inlineFormCustomSelect').change(function(){
+        var updateTask = [];
+        var selectID = $(this).val();
+        var oldValue=0;
+        _.forEach(projectObj.project.FeeRate.datas,function (feeRate) {
+            if(feeRate.status=='activate'){
+                oldValue=feeRate.ID;
+            }
+            if(feeRate.ID ==selectID){
+                feeRate.status='activate';
+            }else {
+                feeRate.status='disable';
+            }
+            updateTask.push({query:{ID:feeRate.feeRateID},doc:{status:feeRate.status}});
+        })
+        projectObj.project.FeeRate.updateStatusBySelected(updateTask);
+        feeRateObject.createSpreadView();
+        subRateObject.destorySpreadView();
+        socket.emit('changeActivateFeeRate',{oldRoom:oldValue,newRoom:selectID});
+    })
 
-$('#inlineFormCustomSelect').change(function(){
-    var updateTask = [];
-    var selectID = $(this).val();
-    var oldValue=0;
-    _.forEach(projectObj.project.FeeRate.datas,function (feeRate) {
-        if(feeRate.status=='activate'){
-            oldValue=feeRate.ID;
-        }
-        if(feeRate.ID ==selectID){
-            feeRate.status='activate';
-        }else {
-            feeRate.status='disable';
+    $('#fee_rate_tree').on('shown.bs.modal', function (e) {
+        if(feeRateObject.feeRateSpreads==null){
+            feeRateObject.createSheet();
         }
-        updateTask.push({query:{ID:feeRate.feeRateID},doc:{status:feeRate.status}});
-    })
-    projectObj.project.FeeRate.updateStatusBySelected(updateTask);
-    feeRateObject.createSpreadView();
-    subRateObject.destorySpreadView();
-    socket.emit('changeActivateFeeRate',{oldRoom:oldValue,newRoom:selectID});
-})
+        feeRateObject.feeRateSelection=null;
+        feeRateObject.showSelectTree();
+    });
 
-$('#fee_rate_tree').on('shown.bs.modal', function (e) {
-    if(feeRateObject.feeRateSpreads==null){
-        feeRateObject.createSheet();
-    }
-    feeRateObject.feeRateSelection=null;
-    feeRateObject.showSelectTree();
-});
+    $('#fee_rate_tree').on('hidden.bs.modal', function (e) {
+        if(feeRateObject.feeRateSpreads){
+            feeRateObject.feeRateSpreads.destroy();
+            feeRateObject.feeRateSpreads=null;
+            $('#edit_from').val('');
+            $('#edit_row').val('');
+        }
+    });
 
-$('#fee_rate_tree').on('hidden.bs.modal', function (e) {
-    if(feeRateObject.feeRateSpreads){
-        feeRateObject.feeRateSpreads.destroy();
-        feeRateObject.feeRateSpreads=null;
-        $('#edit_from').val('');
-        $('#edit_row').val('');
-    }
-});
+    $('#fee_selected_conf').bind('click',function (){
+        feeRateObject.submitFeeRateBySelect();
+    })
 
-$('#fee_selected_conf').bind('click',function (){
-    feeRateObject.submitFeeRateBySelect();
 })
+
+