Browse Source

feat: 清单工程量、定额工程量,优化编辑工程量表达式。

zhangweicheng 4 years ago
parent
commit
7f08f9aac3

+ 12 - 0
web/building_saas/js/global.js

@@ -177,6 +177,18 @@ function replaceAll(FindText, RepText,str) {
     return str.replace(regExp, RepText);
 };
 
+//求余处理成百分号,即乘以0.01
+function handlePercent(text){
+    let arr = text.match(/[\d^%]+%/g);
+    if(arr){
+        for(let str of arr){
+            let tem = str.replace("%"," * 0.01");
+            text = text.replace(str,`${(tem)}`)
+        }
+    }
+    return text
+}    
+
 function setTimeoutSync(handle, time) {
     return new Promise(function(resolve, reject) {
         setTimeout(function () {

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

@@ -2159,6 +2159,7 @@
               <button class="btn btn-secondary btn-sm">/</button>
               <button class="btn btn-secondary btn-sm">(</button>
               <button class="btn btn-secondary btn-sm">)</button>
+              <button class="btn btn-secondary btn-sm">%</button>
             </p>
           </div>
           <div class="row">

+ 5 - 1
web/building_saas/main/js/views/quantity_edit_view.js

@@ -149,8 +149,10 @@ let quantityEditObj = {
             return true;
         }*/
         quantityEXP = quantityEXP?quantityEXP.toUpperCase():'';//非空判断
-        quantityEXP =replaceAll('(','(',quantityEXP);//转换中文左右符号
+        quantityEXP =replaceAll('(','(',quantityEXP);//转换中文左右符号与。、
         quantityEXP =replaceAll(')',')',quantityEXP);
+        quantityEXP =replaceAll('。','.',quantityEXP);
+        quantityEXP =replaceAll('、','/',quantityEXP);
         quantityEXP = quantityEXP.replace(/[\s\r\n]/g, "")//去掉空格回车换行等字符
         let value = me.evalQuantityExp(quantityEXP,node);
         if(value!=='evalError'){
@@ -180,6 +182,8 @@ let quantityEditObj = {
     },
     evalQuantityExp(quantityEXP,node){
         let evalString = quantityEXP;
+         //求余% 换成 * 0.01 再计算
+         evalString =handlePercent(evalString);
         if( node.sourceType == ModuleNames.ration && quantityEXP.indexOf('QDL')!=-1){
             let billNode = node.parent;
             let bQuantity = billNode.data.quantity?scMathUtil.roundForObj(billNode.data.quantity,getDecimal("quantity",billNode)):0;