laiguoran před 4 roky
rodič
revize
7ea454a8b2

app/public/js/calcEval.min.js → app/public/js/calc/calcEval.min.js


+ 0 - 302
app/public/js/jquery/CalcEval.js

@@ -1,302 +0,0 @@
-Number.prototype.toFixed = function(j) {
-    var h = this + "";
-    if (!j) {
-        j = 0
-    }
-    if (h.indexOf(".") == -1) {
-        h += "."
-    }
-    h += new Array(j + 1).join("0");
-    if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0," + (j + 1) + "})?)\\d*$").test(h)) {
-        var h = "0" + RegExp.$2
-            , g = RegExp.$1
-            , e = RegExp.$3.length
-            , c = true;
-        if (e == j + 2) {
-            e = h.match(/\d/g);
-            if (parseInt(e[e.length - 1]) > 4) {
-                for (var f = e.length - 2; f >= 0; f--) {
-                    e[f] = parseInt(e[f]) + 1;
-                    if (e[f] == 10) {
-                        e[f] = 0;
-                        c = f != 1
-                    } else {
-                        break
-                    }
-                }
-            }
-            h = e.join("").replace(new RegExp("(\\d+)(\\d{" + j + "})\\d$"), "$1.$2")
-        }
-        if (c) {
-            h = h.substr(1)
-        }
-        return (g + h).replace(/\.$/, "")
-    }
-    return this + ""
-}
-;
-var CalcEvalMin = function() {};
-CalcEvalMin.prototype.eval = function(str) {
-    var isRetStr = str.match(new RegExp(/^".+"$/g)) != null;
-    if (isRetStr == true) {
-        str = str.replace(/^"|"$/g, "")
-    }
-    var bracketsList = this.matchOutBrackets(str);
-    for (var i = 0; i < bracketsList.length; i++) {
-        var newCalc = bracketsList[i];
-        var calcStr = this.eval(newCalc.str.replace(/^\(|\)$/g, ""));
-        str = str.replace(newCalc.str, calcStr)
-    }
-    var errorObj = new Array();
-    while (1) {
-        var multObj = this.matchExp(str, "/");
-        if (multObj == null) {
-            break
-        }
-        var v = this.executeDivi(multObj.firstValue, multObj.secondValue);
-        if (v == "NaN") {
-            var t = "T" + new Date().getTime();
-            errorObj.push({
-                Name: t,
-                Exp: multObj.str
-            });
-            str = str.replace(multObj.str, t)
-        } else {
-            str = str.replace(multObj.str, v)
-        }
-    }
-    while (1) {
-        var multObj = this.matchExp(str, "*");
-        if (multObj == null) {
-            break
-        }
-        var v = this.executeMult(multObj.firstValue, multObj.secondValue);
-        if (v == "NaN") {
-            var t = "T" + new Date().getTime();
-            errorObj.push({
-                Name: t,
-                Exp: multObj.str
-            });
-            str = str.replace(multObj.str, t)
-        } else {
-            str = str.replace(multObj.str, v)
-        }
-    }
-    while (1) {
-        var multObj = this.matchExp(str, "+");
-        if (multObj == null) {
-            break
-        }
-        var v = this.executeAddi(multObj.firstValue, multObj.secondValue);
-        if (v == "NaN" || isNaN(v)) {
-            var t = "T" + new Date().getTime();
-            errorObj.push({
-                Name: t,
-                Exp: multObj.str
-            });
-            str = str.replace(multObj.str, t)
-        } else {
-            str = str.replace(multObj.str, v)
-        }
-    }
-    while (1) {
-        var multObj = this.matchExp(str, "-");
-        if (multObj == null) {
-            break
-        }
-        var v = this.executeSubt(multObj.firstValue, multObj.secondValue);
-        if (v == "NaN") {
-            var t = "T" + new Date().getTime();
-            errorObj.push({
-                Name: t,
-                Exp: multObj.str
-            });
-            str = str.replace(multObj.str, t)
-        } else {
-            str = str.replace(multObj.str, v)
-        }
-    }
-    for (var i = errorObj.length - 1; i >= 0; i--) {
-        var ex = errorObj[i];
-        str = str.replace(ex.Name, ex.Exp)
-    }
-    while (1) {
-        var multObj = str.match(/\d*={2,3}\d*/g);
-        if (multObj == null) {
-            break
-        }
-        var v = eval(multObj[0]);
-        str = str.replace(multObj[0], v)
-    }
-    if (isRetStr == true) {
-        try {
-            return eval('"' + str + '"')
-        } catch (e) {}
-        try {
-            return eval(str)
-        } catch (e) {}
-        return str
-    }
-    if (str.match(/(^true$)|(^false$)/g)) {
-        return str === "true"
-    }
-    if (!isNaN(Number(str))) {
-        return Number(str)
-    }
-    try {
-        return eval(str)
-    } catch (e) {}
-    return str
-}
-;
-CalcEvalMin.prototype.matchOutBrackets = function(f) {
-    var h = new Array();
-    if (f == null) {
-        return h
-    }
-    if (typeof f != "string") {
-        f = f + ""
-    }
-    var d = f.split("");
-    var a = 0;
-    var g = false;
-    var b = -1;
-    for (var c = 0; c < d.length; c++) {
-        if (d[c] == "(") {
-            a++;
-            g = true;
-            if (b == -1) {
-                b = c
-            }
-        }
-        if (d[c] == ")") {
-            a--
-        }
-        if (g == true && a == 0) {
-            var e = new Object();
-            e.str = f.substring(b, c + 1);
-            e.firstIndex = b;
-            e.lastIndex = c + 1;
-            h.push(e);
-            b = -1;
-            g = false;
-            a = 0
-        }
-    }
-    return h
-}
-;
-CalcEvalMin.prototype.matchExp = function(l, f) {
-    var j = null;
-    if (l == null) {
-        return retList
-    }
-    if (typeof l != "string") {
-        l = l + ""
-    }
-    var k = l.split("");
-    var c = 0;
-    var b = 0;
-    var g = "";
-    var e = "";
-    var a = "";
-    var d = false;
-    for (var h = 0; h <= k.length; h++) {
-        if (k[h] == "+" || k[h] == "-" || k[h] == "*" || k[h] == "/" || k[h] == "%" || h == k.length) {
-            if (a == "" && k[h] == "-") {
-                a += k[h];
-                continue
-            }
-            if (d == true) {
-                e = a;
-                b = h;
-                j = new Object();
-                j.firstIndex = c;
-                j.secondIndex = b;
-                j.str = l.substring(c, b);
-                j.firstValue = Number(g);
-                j.secondValue = Number(e);
-                break
-            }
-            if (k[h] == null) {
-                break
-            }
-            if (k[h] == f) {
-                d = true;
-                g = a;
-                a = ""
-            } else {
-                a = "";
-                c = -1
-            }
-        } else {
-            a += k[h];
-            if (c == -1) {
-                c = h
-            }
-        }
-    }
-    return j
-}
-;
-CalcEvalMin.prototype.executeMult = function(d, b) {
-    var a = 0
-        , f = d.toString()
-        , c = b.toString();
-    try {
-        a += f.split(".")[1].length
-    } catch (g) {}
-    try {
-        a += c.split(".")[1].length
-    } catch (g) {}
-    return Number(f.replace(".", "")) * Number(c.replace(".", "")) / Math.pow(10, a)
-}
-;
-CalcEvalMin.prototype.executeDivi = function(arg1, arg2) {
-    var t1 = 0, t2 = 0, r1, r2;
-    try {
-        t1 = arg1.toString().split(".")[1].length
-    } catch (e) {}
-    try {
-        t2 = arg2.toString().split(".")[1].length
-    } catch (e) {}
-    with (Math) {
-        r1 = Number(arg1.toString().replace(".", ""));
-        r2 = Number(arg2.toString().replace(".", ""));
-        return this.executeMult(r1 / r2, pow(10, t2 - t1))
-    }
-}
-;
-CalcEvalMin.prototype.executeAddi = function(arg1, arg2) {
-    var r1, r2, m;
-    try {
-        r1 = arg1.toString().split(".")[1].length
-    } catch (e) {
-        r1 = 0
-    }
-    try {
-        r2 = arg2.toString().split(".")[1].length
-    } catch (e) {
-        r2 = 0
-    }
-    m = Math.pow(10, Math.max(r1, r2));
-    return (this.eval(arg1 + "*" + m) + this.eval(arg2 + "*" + m)) / m
-}
-;
-CalcEvalMin.prototype.executeSubt = function(arg1, arg2) {
-    var r1, r2, m, n;
-    try {
-        r1 = arg1.toString().split(".")[1].length
-    } catch (e) {
-        r1 = 0
-    }
-    try {
-        r2 = arg2.toString().split(".")[1].length
-    } catch (e) {
-        r2 = 0
-    }
-    m = Math.pow(10, Math.max(r1, r2));
-    n = (r1 >= r2) ? r1 : r2;
-    return ((this.eval(arg1 + "*" + m) - this.eval(arg2 + "*" + m)) / m).toFixed(n)
-}
-;

+ 4 - 4
app/public/js/material_list.js

@@ -850,9 +850,9 @@ $(document).ready(() => {
                         const [valid, msg] = this._checkExprValid(expr);
                         if (!valid) return [valid, msg];
                         data.expr = expr;
+                        // data.quantity = ZhCalc.calcExpr(expr);
                         const ce = new CalcEvalMin();
                         data.quantity = ce.eval(expr);
-                        // data.quantity = math.evaluate(expr);
                         console.log(data.quantity);
                     }
                 } else {
@@ -1044,7 +1044,7 @@ $(document).ready(() => {
         select: '#right-spr',
         callback: function () {
             ledgerSpread.refresh();
-            leafXmjSpread.refresh();
+            // leafXmjSpread.refresh();
             materialSpread.refresh();
             const width = (($('#right-view').width()/$('#right-view').parent('div').width())*100).toFixed();
             setLocalCache('material_list_' + materialID, width);
@@ -1072,7 +1072,7 @@ $(document).ready(() => {
             showSideTools(tab.hasClass('active'));
         }
         ledgerSpread.refresh();
-        leafXmjSpread.refresh();
+        // leafXmjSpread.refresh();
         materialSpread.refresh();
     });
     // 根据浏览器记录展开收起
@@ -1085,7 +1085,7 @@ $(document).ready(() => {
         $('#right-view').width(getLocalCache('material_list_' + materialID) + '%');
         showSideTools(tab.hasClass('active'));
         ledgerSpread.refresh();
-        leafXmjSpread.refresh();
+        // leafXmjSpread.refresh();
         materialSpread.refresh();
     }
 });

+ 17 - 14
app/view/material/list.ejs

@@ -24,9 +24,20 @@
         <div class="c-header p-0">
         </div>
         <div class="row w-100 sub-content">
-            <div id="left-view" class="c-body" style="width: 70%">
+            <div class="col-12 c-body">
                 <!--上部分-->
-                <div class="sjs-height-1" id="ledger-spread">
+                <div class="sjs-height-1 row w-100 sub-content">
+                    <div class="c-body" id="left-view" style="width: 70%">
+                        <div class="sjs-height-1" id="ledger-spread"></div>
+                    </div>
+                    <div class="c-body" id="right-view" style="width: 30%">
+                        <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
+                        <div class="tab-content">
+                            <div class="tab-pane active" id="material-spread-div" style="position: relative">
+                                <div class="sjs-height-1" id="material-spread"></div>
+                            </div>
+                        </div>
+                    </div>
                 </div>
                 <!--下部分-->
                 <div class="bcontent-wrap">
@@ -36,9 +47,9 @@
                                 <a class="nav-link active" data-toggle="tab" href="#xmujie" role="tab">清单明细</a>
                             </li>
                             <!--<li class="ml-auto">-->
-                                <!--<% if (!material.readOnly) { %>-->
-                                <!--<button class="btn btn-sm btn-primary" id="user_all_material">应用调差工料至其他清单明细</button>-->
-                                <!--<% } %>-->
+                            <!--<% if (!material.readOnly) { %>-->
+                            <!--<button class="btn btn-sm btn-primary" id="user_all_material">应用调差工料至其他清单明细</button>-->
+                            <!--<% } %>-->
                             <!--</li>-->
                         </ul>
                     </div>
@@ -46,20 +57,12 @@
                     </div>
                 </div>
             </div>
-            <div class="c-body" id="right-view" style="width: 30%;">
-                <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
-                <div class="tab-content">
-                    <div class="tab-pane active" id="material-spread-div" style="position: relative">
-                        <div class="sjs-height-6" id="material-spread"></div>
-                    </div>
-                </div>
-            </div>
         </div>
         <div class="side-menu">
             <!--右侧菜单-->
             <ul class="nav flex-column right-nav">
                 <li class="nav-item">
-                    <a class="nav-link active" content="#material-tab" href="javascript: void(0);">清单工料含量2</a>
+                    <a class="nav-link active" content="#material-tab" href="javascript: void(0);">清单工料含量</a>
                 </li>
             </ul>
         </div>

+ 1 - 1
config/web.js

@@ -552,7 +552,7 @@ const JsFiles = {
                 mergeFile: 'material_exponent',
             },
             list: {
-                files: ['/public/js/spreadjs/sheets/v11/gc.spread.sheets.all.11.2.2.min.js', '/public/js/decimal.min.js', '/public/js/calcEval.min.js'],
+                files: ['/public/js/spreadjs/sheets/v11/gc.spread.sheets.all.11.2.2.min.js', '/public/js/decimal.min.js', '/public/js/calc/calcEval.min.js'],
                 mergeFiles: [
                     '/public/js/sub_menu.js',
                     '/public/js/div_resizer.js',