Переглянути джерело

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuCost

vian 5 роки тому
батько
коміт
63e4e0356c

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

@@ -43,8 +43,8 @@
         let projectReadOnly = JSON.parse('<%- projectReadOnly %>');
         let projectCooperate = JSON.parse('<%- projectCooperate %>');
         let projectOptins =  JSON.parse('<%- options %>');
-        // const G_SHOW_BLOCK_LIB = true;
-        const G_SHOW_BLOCK_LIB = false;
+        const G_SHOW_BLOCK_LIB = true;
+        // const G_SHOW_BLOCK_LIB = false;
         const markReadProjectIDs = JSON.parse('<%- markReadProjectIDs %>');
         const VERSION = '<%- version %>';
         const CUR_BOQ_TYPE = '<%- boqType %>';
@@ -1860,11 +1860,11 @@
                         <div>
                             <div class="form-check form-check-inline">
                                 <input class="form-check-input" type="checkbox" name="inlineRadioOptions1" id="clone_option_code" value="option1" checked>
-                                <label class="form-check-label" for="clone_option_code">项目编码(前9位)</label>
+                                <label class="form-check-label" for="clone_option_code">编号</label>
                             </div>
                             <div class="form-check form-check-inline">
                                 <input class="form-check-input" type="checkbox" name="inlineRadioOptions2" id="clone_option_name" value="option2">
-                                <label class="form-check-label" for="clone_option_name">项目名称</label>
+                                <label class="form-check-label" for="clone_option_name">名称</label>
                             </div>
                             <div class="form-check form-check-inline">
                                 <input class="form-check-input" type="checkbox" name="inlineRadioOptions3" id="clone_option_unit" value="option3" checked>
@@ -1877,11 +1877,11 @@
                         <div>
                             <div class="form-check form-check-inline">
                                 <input class="form-check-input" type="radio" name="rationQuantity" id="clone_option_quantity" value="option1" checked>
-                                <label class="form-check-label" for="clone_option_quantity">根据含量计算定额工程量</label>
+                                <label class="form-check-label" for="clone_option_quantity">根据分解系数计算定额工程量</label>
                             </div>
                             <div class="form-check form-check-inline">
                                 <input class="form-check-input" type="radio" name="rationQuantity" id="clone_option_zeroQuantity" value="option2">
-                                <label class="form-check-label" for="clone_option_zeroQuantity">含量和定额工程量为零</label>
+                                <label class="form-check-label" for="clone_option_zeroQuantity">分解系数和定额工程量为零</label>
                             </div>
                         </div>
                     </div>

+ 44 - 23
web/building_saas/main/js/models/calc_program.js

@@ -1779,7 +1779,7 @@
 
    // 只计算treeNode自身。changedArr: 外部传来的一个数组,专门存储发生变动的节点。
    innerCalc(treeNode, changedArr, tenderType) {
-     if (treeNode.data.lockUnitPrice == true) return;
+     // if (treeNode.data.lockUnitPrice == true) return;
      if (treeNode.sourceType === ModuleNames.ration_glj) return; // 仅用作树节点显示的工料机不能参与计算。
 
      let me = this;
@@ -1851,31 +1851,52 @@
                buf = (btf / bq).toDecimal(decimalObj.process);
                btuf = (bttf / bq).toDecimal(decimalObj.process);
              }
+             else{      // TASK #3409 招投标:清单父项的单价=ROUND(金额/工程量,精度)。如果清单父项的工程量为空或0,则清单父项的单价为空。
+               if (nQ == 0)
+                 buf = 0
+               else
+                 buf = (btf / bq).toDecimal(decimalObj.process);
+
+               if (nTQ == 0)
+                 btuf = 0
+               else
+                 btuf = (bttf / bq).toDecimal(decimalObj.process);
+             }
            };
          };
        } else if ((commonCalcType == 1) || (commonCalcType == 3)) {
-         let sum_rtf = 0,
-           sum_rttf = 0;
-         for (let node of nodes) {
-           let ruf = 0,
-             rtuf = 0,
-             rtf = 0,
-             rttf = 0;
-           if (node.data.feesIndex && node.data.feesIndex[ft.type]) {
-             ruf = parseFloatPlus(node.data.feesIndex[ft.type].unitFee).toDecimal(decimalObj.bills.unitPrice);
-             rtuf = parseFloatPlus(node.data.feesIndex[ft.type].tenderUnitFee).toDecimal(decimalObj.bills.unitPrice);
-             rtf = parseFloatPlus(node.data.feesIndex[ft.type].totalFee).toDecimal(decimalObj.bills.totalPrice);
-             rttf = parseFloatPlus(node.data.feesIndex[ft.type].tenderTotalFee).toDecimal(decimalObj.bills.totalPrice);
-           };
-
-           sum_rtf = (sum_rtf + rtf).toDecimal(decimalObj.process);
-           sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
-         };
-
-         buf = (sum_rtf / bq).toDecimal(decimalObj.process);
-         btuf = (sum_rttf / btq).toDecimal(decimalObj.process);
-         btf = sum_rtf;
-         bttf = sum_rttf;
+           if (treeNode.data.lockUnitPrice == true){       // 清单单价锁定
+               if (treeNode.data.feesIndex && treeNode.data.feesIndex[ft.type]) {
+                   buf = parseFloatPlus(treeNode.data.feesIndex[ft.type].unitFee).toDecimal(decimalObj.bills.unitPrice);
+                   btuf = parseFloatPlus(treeNode.data.feesIndex[ft.type].tenderUnitFee).toDecimal(decimalObj.bills.unitPrice);
+                   btf = (bq * buf).toDecimal(decimalObj.bills.totalPrice);
+                   bttf = (btq * btuf).toDecimal(decimalObj.bills.totalPrice);
+               }
+           }
+           else{
+               let sum_rtf = 0,
+                   sum_rttf = 0;
+               for (let node of nodes) {
+                   let ruf = 0,
+                       rtuf = 0,
+                       rtf = 0,
+                       rttf = 0;
+                   if (node.data.feesIndex && node.data.feesIndex[ft.type]) {
+                       ruf = parseFloatPlus(node.data.feesIndex[ft.type].unitFee).toDecimal(decimalObj.bills.unitPrice);
+                       rtuf = parseFloatPlus(node.data.feesIndex[ft.type].tenderUnitFee).toDecimal(decimalObj.bills.unitPrice);
+                       rtf = parseFloatPlus(node.data.feesIndex[ft.type].totalFee).toDecimal(decimalObj.bills.totalPrice);
+                       rttf = parseFloatPlus(node.data.feesIndex[ft.type].tenderTotalFee).toDecimal(decimalObj.bills.totalPrice);
+                   };
+
+                   sum_rtf = (sum_rtf + rtf).toDecimal(decimalObj.process);
+                   sum_rttf = (sum_rttf + rttf).toDecimal(decimalObj.process);
+               };
+
+               buf = (sum_rtf / bq).toDecimal(decimalObj.process);
+               btuf = (sum_rttf / btq).toDecimal(decimalObj.process);
+               btf = sum_rtf;
+               bttf = sum_rttf;
+           }
 
          if (calcTools.isBillProject() && (ft.type == 'common' || ft.type == 'rationCommon')) { // 招投标项目, 还要反算
            buf = buf.toDecimal(decimalObj.bills.unitPrice);

+ 5 - 5
web/building_saas/main/js/views/block_lib.js

@@ -44,11 +44,11 @@ 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: 70, dataCode: "unitFee", dataType: "Number"},
-            {headerName: "项目特征", headerWidth: 160, dataCode: "itemCharacterText", dataType: "String"}
+            {headerName: "综合单价", headerWidth: 70, dataCode: "unitFee", dataType: "Number"}//,
+        //    {headerName: "项目特征", headerWidth: 160, dataCode: "itemCharacterText", dataType: "String"}
         ],
         view: {
-            lockColumns: [0, 1, 2, 3, 4]
+            lockColumns: [0, 1, 2, 3]
         }
     },
     rationSpread: null,
@@ -58,8 +58,8 @@ var blockLibObj = {
             {headerName: "编码", headerWidth: 45, dataCode: "code", dataType: "String", hAlign: "center"},
             {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: 70, dataCode: "programName", dataType: "String", hAlign: "center"},
+            {headerName: "分解系数", headerWidth: 40, dataCode: "contain", dataType: "Number"},
+            {headerName: "取费类别", headerWidth: 70, dataCode: "programName", dataType: "String", hAlign: "center"},
             {headerName: "综合单价", headerWidth: 70, dataCode: "unitFee", dataType: "Number"},
             {headerName: "子目换算状态", headerWidth: 90, dataCode: "adjustState", dataType: "String"}
         ],

+ 10 - 2
web/building_saas/main/js/views/project_view.js

@@ -3178,8 +3178,16 @@ $(function () {
         }
         s = `<span style='color:red;'>${s}</span>`;
         $('#clone_option_title').html(`快速组价 (${s})`);
-        $('#clone_option_code').prop("checked", true);
-        $('#clone_option_name').prop("checked", false);
+
+        if (calcTools.isBudgetProject()){
+          $('#clone_option_code').prop("checked", false);
+          $('#clone_option_name').prop("checked", true);
+        }
+        else{
+          $('#clone_option_code').prop("checked", true);
+          $('#clone_option_name').prop("checked", false);
+        };
+
         $('#clone_option_unit').prop("checked", true);
         $('#clone_option_quantity').prop("checked", true);
         $('#clone_option_noCover').prop("checked", true);