Browse Source

Merge branch '1.0.0_online' of http://192.168.1.12:3000/SmartCost/ConstructionCost into 1.0.0_online

TonyKang 7 years ago
parent
commit
060bfd01f8

+ 4 - 3
modules/all_models/engineering_lib.js

@@ -13,7 +13,8 @@ let taxGroupSchema = new  Schema({
     taxType: String,//计税方式
     program_lib: { type: Schema.Types.Mixed,default:{}},// 计算程序标准库
     template_lib:{ type: Schema.Types.Mixed,default:{}},//清单模板库
-    col_lib:{ type: Schema.Types.Mixed,default:{}}
+    col_lib:{ type: Schema.Types.Mixed,default:{}},
+    fee_lib:{ type: Schema.Types.Mixed,default:{}}//费率标准库
 },{_id: false});
 
 let modelSchema = {
@@ -41,11 +42,11 @@ let modelSchema = {
         type: [taxGroupSchema],
         default: []
     },
-    // 费率标准库
+   /* // 费率标准库
     fee_lib: {
         type: Schema.Types.Mixed,
         default: []
-    },
+    },*/
     // 人工系数标准库
     artificial_lib: {
         type: Schema.Types.Mixed,

+ 4 - 2
modules/fee_rates/facade/fee_rates_facade.js

@@ -235,7 +235,9 @@ async function getFeeRateStandardsByProjectID(projectID) {
     logger.info("get feeRate standard, projectID:"+projectID)
     let feeRateStandards=[];
     let project =  await projectsModel.findOne({ID:projectID});
-    let engineeringLibModel = new EngineeringLibModel();
+    let temFee = await feeRateFileModel.findOne({ID:project.property.feeFile.id});
+    feeRateStandards.push({ID:temFee.libID,libName:temFee.libName});
+   /* let engineeringLibModel = new EngineeringLibModel();
     let engineeringInfo = project !== null && project.property.engineering_id !== undefined ?
         await engineeringLibModel.getEngineering(project.property.engineering_id) : null;
     if(engineeringInfo!=null){
@@ -243,7 +245,7 @@ async function getFeeRateStandardsByProjectID(projectID) {
         for(let lib of fee_lib){
             feeRateStandards.push({ID:lib.id,libName:lib.name});
         }
-    }
+    }*/
     return feeRateStandards;
 }
 

+ 5 - 0
web/building_saas/pm/html/project-management.html

@@ -326,6 +326,11 @@
                         <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-engineering"></select>
                     </div>
                     <span class="form-text text-danger" id="engineering-info" style="display: none;">请选择工程专业</span>
+                    <div style="margin-top: 15px;" class="input-group">
+                        <label style="margin-top: 8px;">费用标准</label>
+                        <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="tender-feeStandard"></select>
+                    </div>
+                    <span class="form-text text-danger" id="feeStandard-info" style="display: none;">请选择费用标准</span>
                     <div style="margin-top: 15px;" class="input-group" id="taxType_div">
                         <label style="margin-top: 8px;">计税方式</label>
                         <select style="margin-left: 5px; border-radius: .25rem;" class="form-control" id="taxType">

+ 98 - 50
web/building_saas/pm/js/pm_newMain.js

@@ -1169,7 +1169,6 @@ $(document).ready(function() {
         $("#valuation").html(html);
         //$("#tender-engineering").html('<option value="">请选择对应的工程专业</option>');
         let engineeringList = getEngineeringList();
-        console.log(engineeringList);
         let engineeringHtml = getEngineeringHtml(engineeringList);
         $("#tender-engineering").html(engineeringHtml);
         changeEngineering();
@@ -1178,6 +1177,7 @@ $(document).ready(function() {
     //选择计价规则
     $("#valuation").change(function () {
         let engineeringList = getEngineeringList();
+        console.log(engineeringList);
         let engineeringHtml = getEngineeringHtml(engineeringList);
         $("#tender-engineering").html(engineeringHtml);
         $('#valuation-info').hide();
@@ -1520,28 +1520,55 @@ $(document).ready(function() {
     });
     function changeEngineering(){
         $('#engineering-info').hide();
+        initFeeStandardSel();
+    }
+
+    function changeFeeRate(engLib) {
+        if(engLib){
+           /*
+             if (engLib.fee_lib !== undefined && engLib.fee_lib.length > 0) {
+                $("#tender-fee-rate").children("option").first().val("newFeeRate-"+engLib.fee_lib[0].id);
+            }*/
+           //2018-08-29  费率改为和计税方式绑定在一起 所以在这里还不能确定标准费率库ID
+            $("#tender-fee-rate").children("option").first().val("newFeeRate-");
+            $("#tender-engineering").parent().siblings('.hidden-area').slideDown('fast');
+        }
+        else {
+            $("#tender-fee-rate").children("option").first().val($('#tender-name').val());
+        }
+    }
+
+    function initFeeStandardSel() {
+        $('#tender-feeStandard').empty();
+        let feeStandards = [];
         let engineeringList = getEngineeringList();
-        if(engineeringList.length > 0){
-            let selectedEngineering = $("#tender-engineering").val();
-            let currentLib = {};
-            for(let engineering of engineeringList) {
-                if (engineering.engineering_id === selectedEngineering) {
-                    currentLib = engineering.lib;
-                }
+        let currentEngName = $('#tender-engineering').val();
+        for(let eng of engineeringList){
+            if(eng.lib.name && eng.lib.name === currentEngName && eng.lib.feeName && eng.lib.feeName !== ''){
+                feeStandards.push(eng.lib.feeName);
             }
-
-            if (Object.keys(currentLib).length > 0) {
-                // 输出数据到页面
-                if (currentLib.fee_lib !== undefined && currentLib.fee_lib.length > 0) {
-                    $("#tender-fee-rate").children("option").first().val("newFeeRate-"+currentLib.fee_lib[0].id);
-                }
-                $("#tender-engineering").parent().siblings('.hidden-area').slideDown('fast');
+        }
+        for(let feeName of feeStandards){
+            let $opt = $(`<option value="${feeName}">${feeName}</option>`);
+            $('#tender-feeStandard').append($opt);
+        }
+        if(feeStandards.length > 0){
+            if($('#feeStandard-info').is(':visible')){
+                $('#feeStandard-info').hide();
             }
         }
+        let currentEngLib = getEngineeringLib(currentEngName + $('#tender-feeStandard').val(), engineeringList);
+        changeFeeRate(currentEngLib);
         setTaxGroupHtml();
         getStdCalcProgramFiles();
     }
 
+    function changeFeeStandard() {
+        let currentEngLib = getEngineeringLib($('#tender-engineering').val() + $('#tender-feeStandard').val(), getEngineeringList());
+        changeFeeRate(currentEngLib);
+        setTaxGroupHtml();
+        getStdCalcProgramFiles();
+    }
 
     function setTaxGroupHtml() {
         let groups = getTaxGroupList();
@@ -1574,7 +1601,8 @@ $(document).ready(function() {
                 let p_id = group.program_lib?group.program_lib.id:"";
                 let t_id = group.template_lib?group.template_lib.id:"";
                 let c_id = group.col_lib?group.col_lib.id:"";
-                groupString = p_id + "|-|" +t_id+"|-|"+c_id;
+                let f_id = group.fee_lib?group.fee_lib.id:"";
+                groupString = p_id + "|-|" +t_id+"|-|"+c_id+"|-|"+f_id;
                 result += '<option value='+ groupString +'>'+ group.program_lib.name +'</option>';
             };
             return result;
@@ -1590,6 +1618,9 @@ $(document).ready(function() {
     $("#tender-engineering").change(function() {
         changeEngineering()
     });
+    $('#tender-feeStandard').change(function () {
+       changeFeeStandard();
+    });
 });
 
 //获取工作表总宽度
@@ -1960,6 +1991,18 @@ function AddSiblingsItem(selected, name, property, type, existCallback, sucCallb
     }
 }
 
+//根据工程专业名称+费用标准名称获取工程专业库
+function getEngineeringLib(cascadeName, engineeringList) {
+    for(let eng of engineeringList){
+        let engName = eng.lib.name ? eng.lib.name : '';
+        let engFeeName = eng.lib.feeName ? eng.lib.feeName : '';
+        if(cascadeName === engName + engFeeName){
+            return eng.lib;
+        }
+    }
+    return null;
+}
+
 function getEngineeringList(){
     let valuation = $("#valuation").val();
     let valuationType = $("input[name='valuation_type']:checked").val();
@@ -1979,8 +2022,20 @@ function getEngineeringList(){
 function getTaxGroupList(type){//getcalcProgramList
     let egrs = getEngineeringList();
     let groupList = [];
-    let egrID = $("#tender-engineering").val();
-    for(let egr of egrs) {
+    //let egrID = $("#tender-engineering").val();
+    let engLib = getEngineeringLib($('#tender-engineering').val() + $('#tender-feeStandard').val(), egrs);
+    if(engLib){
+        if(type){//是否要过滤,如果这个参数不传,则返回整个数组;
+            for(let group of engLib.tax_group){
+                if(group.taxType == type && group.program_lib){
+                    groupList.push(group);
+                }
+            }
+        }else {
+            groupList = engLib.tax_group;
+        }
+    }
+    /*for(let egr of egrs) {
         if (egr.engineering_id == egrID && egr.lib) {
             if(type){//是否要过滤,如果这个参数不传,则返回整个数组;
                 for(let group of egr.lib.tax_group){
@@ -1992,7 +2047,7 @@ function getTaxGroupList(type){//getcalcProgramList
                 groupList = egr.lib.tax_group;
             }
         }
-    }
+    }*/
     return groupList;
 }
 
@@ -2271,24 +2326,29 @@ function AddTender() {
         let feeFileObj = getAddTenderFile(tenderName, $('#tender-fee-rate'), $("#tender-fee-rate").children());
 
         let valuation = $("#valuation").val();
-        if(valuation === ''){
+        if(!valuation || valuation === ''){
             setDangerInfo($('#valuation-info'), '请选择计价规则');
             return false;
         }
 
-        let engineering_id = $("#tender-engineering").val();
-        if (engineering_id === '') {
+        let engineeringName = $("#tender-engineering").val();
+        if (!engineeringName || engineeringName === '') {
             setDangerInfo($('#engineering-info'), '请选择工程专业');
             return false;
         }
+        let feeName = $('#tender-feeStandard').val();
+        if(!feeName || feeName === ''){
+            setDangerInfo($('#feeStandard-info'), '请选择费用标准');
+            return false;
+        }
 
         let taxType = $("#taxType").val();
-        if(taxType ===""){
+        /*if(!taxType || taxType ===""){
             return false;
-        }
+        }*/
 
         let IDGroup = $("#tender-calcProgram").val();
-        if (IDGroup === '') {
+        if (!IDGroup || IDGroup === '') {
             setDangerInfo($('#calcProgram-info'), '请选择计算程序');
             return false;
         }
@@ -2297,11 +2357,13 @@ function AddTender() {
         let calcProgram = isNaN(parseInt(IDGroup[0]))?IDGroup[0]:parseInt(IDGroup[0]);//转换成整数
         let templateLibID = IDGroup[1];
         let colLibID = IDGroup[2];
-        if(templateLibID == ''|| colLibID ==''){
+        let feeLibID = IDGroup[3];
+        if(templateLibID == ''|| colLibID ==''||feeLibID==''){
             alert("工程专业配置有误!");
             return false;
         }
-
+        //如果是新建费率的情况
+        if(feeFileObj.id.indexOf("newFeeRate")!=-1) feeFileObj.id +=feeLibID;
         let valuationName = $("#valuation").children("option:selected").text();
         let valuationType = $("input[name='valuation_type']:checked").val();
 
@@ -2314,19 +2376,14 @@ function AddTender() {
                 break;
             }
         }
-        let libs = null;
-        for(let tmp of engineeringList) {
-            if (tmp.engineering_id == engineering_id) {
-                engineering = tmp.engineering;
-                libs = tmp.lib;
-                break;
-            }
+        let libs = getEngineeringLib(engineeringName + feeName, engineeringList);
+        if(!libs){
+            alert('数据错误,无法确定工程专业库!');
+            return;
         }
         // 一个项目里面,这两个文件必须得有,而界面又没有像费率、单价文件那样给出可选项。所以这里给出提示。
         if (!libs.artificial_lib)  throw '编办没有绑定人工系数标准文件';
-        //if (!libs.program_lib)  throw '编办没有绑定计算程序标准文件';
 
-        let engineeringName = $('#tender-engineering').children("option:selected").text();
         let calcProgramName = $('#tender-calcProgram').children("option:selected").text();
 
         let callback = function() {
@@ -2347,8 +2404,9 @@ function AddTender() {
             valuation: valuation,
             valuationType: valuationType,
             valuationName: valuationName,
-            engineering: engineering,
-            engineering_id: engineering_id,
+            isInstall: libs.isInstall !== undefined ? libs.isInstall : false,
+            engineering: libs.engineering,
+            engineering_id: libs._id,
             engineeringName: engineeringName,
             unitPriceFile: {name: unitPriceFileObj.name, id: unitPriceFileObj.id},
             feeFile: {name: feeFileObj.name, id: feeFileObj.id},
@@ -2680,7 +2738,7 @@ function GetTargetTreeNode(zTreeObj) {
  * @param {Array} engineeringList
  * @return {String}
  */
-function getEngineeringHtml(engineeringList) {
+function getEngineeringHtml(engineeringList) {//
     let result = '';
     if (engineeringList.length <= 0) {
         return result;
@@ -2692,18 +2750,8 @@ function getEngineeringHtml(engineeringList) {
 
     for(let i = 0; i < engineeringList.length; i++){
         let tmp = engineeringList[i];
-        result += `<option ${i === 0 ? 'selected' : ''} value="${tmp.engineering_id}">${tmp.lib.name}</option>`;
-        /*if (engineeringObject[tmp.engineering] !== undefined) {
-            result += `<option ${i === 0 ? 'selected' : ''} value="${tmp.engineering}">${engineeringObject[tmp.engineering]}</option>`;
-        }*/
+        result += `<option ${i === 0 ? 'selected' : ''} value="${tmp.lib.name}">${tmp.lib.name}</option>`;
     }
-
-    /*for(let tmp of engineeringList) {
-        if (engineeringObject[tmp.engineering] !== undefined) {
-            result += '<option value="'+ tmp.engineering +'">'+ engineeringObject[tmp.engineering] +'</option>';
-        }
-    }*/
-
     return result;
 }
 

+ 30 - 1
web/over_write/js/chongqing_2018.js

@@ -174,6 +174,34 @@ if (rationCalcBasesNameMap) {
     rationCalcBasesNameMap.JZMJ = '建筑面积';
 };
 
+var cpFeeTypes2018 = [
+    {type: 'rationUnitPrice', name: '定额综合单价'},
+    {type: 'labour', name: '人工费'},
+    {type: 'material', name: '材料费'},
+    {type: 'machine', name: '施工机具使用费'},
+    {type: 'mainMaterial', name: '主材费'},
+    {type: 'manage', name: '企业管理费'},
+    {type: 'profit', name: '利润'},
+    {type: 'risk', name: '一般风险费'},
+    {type: 'labourDiff', name: '人工价差'},
+    {type: 'materialDiff', name: '材料价差'},
+    {type: 'machineDiff', name: '施工机具使用价差'},
+    {type: 'otherRisk', name: '其他风险费'},
+    {type: 'unratedMaterial', name: '未计价材料费'},
+    {type: 'organizeMeasures', name: '组织措施费'},
+    {type: 'safeCivilization', name: '安全文明施工费'},
+    {type: 'document', name: '建设工程竣工档案编制费'},
+    {type: 'acceptance', name: '住宅工程质量分户验收费'},
+    {type: 'forceFee', name: '规费'},
+    {type: 'tax', name: '税金'},
+    {type: 'VAT', name: '增值税'},
+    {type: 'surtax', name: '附加税'},
+    {type: 'environmentTax', name: '环境保护税'},
+    {type: 'common', name: '工程造价'}
+];
+cpFeeTypes.splice(0, cpFeeTypes.length);
+for (let e of cpFeeTypes2018) cpFeeTypes.push(e);
+
 
 //清单计算基数相关
 if(typeof baseFigureMap !== 'undefined'){
@@ -241,5 +269,6 @@ if(typeof baseFigureTemplate !== 'undefined'){
 }
 if(typeof figureClassTemplate !== 'undefined'){
     figureClassTemplate['ADDED_VALUE_TAX'] = {flag: fixedFlag.ADDED_VALUE_TAX, filter: ['SJ', 'ZZS', 'SQGCZJ']}
-}
+};
+