Browse Source

新结构新建单位工程

zhongzewei 6 years ago
parent
commit
98db7c1ee1

+ 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">

+ 89 - 47
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,52 @@ $(document).ready(function() {
     });
     function changeEngineering(){
         $('#engineering-info').hide();
-        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;
-                }
+        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);
             }
+            $("#tender-engineering").parent().siblings('.hidden-area').slideDown('fast');
+        }
+        else {
+            $("#tender-fee-rate").children("option").first().val($('#tender-name').val());
+        }
+    }
 
-            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');
+    function initFeeStandardSel() {
+        $('#tender-feeStandard').empty();
+        let feeStandards = [];
+        let engineeringList = getEngineeringList();
+        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);
+            }
+        }
+        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();
@@ -1590,6 +1614,9 @@ $(document).ready(function() {
     $("#tender-engineering").change(function() {
         changeEngineering()
     });
+    $('#tender-feeStandard').change(function () {
+       changeFeeStandard();
+    });
 });
 
 //获取工作表总宽度
@@ -1960,6 +1987,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 +2018,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 +2043,7 @@ function getTaxGroupList(type){//getcalcProgramList
                 groupList = egr.lib.tax_group;
             }
         }
-    }
+    }*/
     return groupList;
 }
 
@@ -2271,24 +2322,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;
         }
@@ -2314,19 +2370,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 +2398,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 +2732,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 +2744,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;
 }