瀏覽代碼

add decimal js

zhongzewei 7 年之前
父節點
當前提交
8e3b08b14c
共有 1 個文件被更改,包括 184 次插入0 次删除
  1. 184 0
      web/building_saas/main/js/views/project_property_decimal_view.js

+ 184 - 0
web/building_saas/main/js/views/project_property_decimal_view.js

@@ -0,0 +1,184 @@
+/**
+ * Created by Zhong on 2017/11/13.
+ */
+//default setting
+let decimalObj = {
+    default: {
+        min: 0,
+        max: 6,
+        bills: {unitPrice: 2, totalPrice: 2},
+        ration: {quantity: 3, unitPrice: 2, totalPrice: 2},
+        glj: {quantity: 3, unitPrice: 2},
+        feeRate: 2,
+        process: 6
+    }
+};
+
+function isUndef(v) {
+    return v === undefined || v === null;
+}
+
+function isDef(v){
+    return v !== undefined && v !== null;
+}
+
+function isObj(v){
+    return isDef(v) && typeof v === 'object';
+}
+
+function isNum(v){
+    return isDef(v) && !isNaN(v);
+}
+
+function isInt(v){
+    return isNum(v) && v % 1 === 0;
+}
+
+function isValidDigit(v){
+    return isInt(v) && v >= decimalObj.default.min && v <= decimalObj.default.max;
+}
+
+function setDecimal(_digits, data){
+    if(isDef(data)){
+        _digits.bills = data.bills || decimalObj.default.bills;
+        _digits.ration = data.ration || decimalObj.default.ration;
+        _digits.glj = data.glj || decimalObj.default.glj;
+        _digits.feeRate = data.feeRate || decimalObj.default.feeRate;
+        _digits.process = data.process || decimalObj.default.process;
+    }
+    else {
+        _digits.bills = decimalObj.default.bills;
+        _digits.ration = decimalObj.default.ration;
+        _digits.glj = decimalObj.default.glj;
+        _digits.feeRate = decimalObj.default.feeRate;
+        _digits.process = decimalObj.default.process;
+    }
+}
+//获取decimalPanel中要展示的数据
+function m_getInitData(data){
+    let rst = Object.create(null);
+    rst.bills = data.bills;
+    rst.ration = data.ration;
+    rst.glj = data.glj;
+    rst.feeRate = data.feeRate;
+    rst.process = data.process;
+    return rst;
+}
+//获取小数位数panel里的数据
+function m_getDecimalData(inputs){
+    let rst = Object.create(null);
+    for(let i = 0, len = inputs.length ; i < len; i++){
+       let name = $(inputs[i]).attr('name');
+        let attrs = name.split('-');
+        if(attrs.length > 1){
+            if(isUndef(rst[attrs[0]])){
+                rst[attrs[0]] = Object.create(null);
+            }
+            if(isDef(rst[attrs[0]])) {
+                rst[attrs[0]][attrs[1]] = parseInt($(inputs[i]).val());
+            }
+        }
+        else {
+            rst[attrs[0]] = parseInt($(inputs[i]).val());
+        }
+    }
+    //set process
+    rst['process'] = decimalObj.default.process;
+    return rst;
+}
+
+function v_initPanel(data){
+    if(this.isDef(data)){
+        for(let attr in data){
+            if(this.isObj(data[attr])){
+                for(let subAttr in data[attr]){
+                    let str = attr + '-' + subAttr;
+                    let jqs = 'input[name="' + str + '"]';
+                    $(jqs).val(data[attr][subAttr]);
+                    $(jqs).attr('min', decimalObj.default.min);
+                    $(jqs).attr('max', decimalObj.default.max);
+                }
+            }
+            else {
+                let str = attr + '';
+                let jqs = 'input[name="' + str + '"]';
+                $(jqs).val(data[attr]);
+                $(jqs).attr('min', decimalObj.default.min);
+                $(jqs).attr('max', decimalObj.default.max);
+            }
+        }
+    }
+}
+
+function e_validIn(inputs){
+    for(let i = 0, len = inputs.length; i < len; i++){
+        let orgV = $(inputs[i]).val();
+        $(inputs[i]).keydown(function () {
+            let v = $(this).val();
+            if(v.trim().length > 0 && isValidDigit(v)){
+                orgV = v;
+            }
+        });
+        $(inputs[i]).keyup(function () {
+            let v = $(this).val();
+            if(v.trim().length === 0 || !isValidDigit(v)){
+                alert('小数位数范围在0-6!');
+                $(this).val(orgV);
+            }
+            else{
+                //let newV = parseInt(v);
+            }
+        });
+    }
+}
+
+function e_bindCof(btn){
+    btn.bind('click', function () {
+        //获取更新的数据
+        let updateDecimal = m_getDecimalData($('input', '#poj-settings-decimal'));
+        a_updateDigits(updateDecimal);
+    });
+}
+
+function e_unbindCof(btn){
+    btn.unbind();
+}
+
+function a_updateDigits(updateDecimal){
+    let url = '/pm/api/updateProjects';
+    let data = {
+        updateType: 'update',
+        updateData: {
+            ID: parseInt(scUrlUtil.GetQueryString('project')),
+            'property.decimal': updateDecimal
+        }
+    };
+    let postData = {
+        user_id: userID,
+        updateData: [data]
+    };
+    let scCaller = function (resultData) {
+        //update data
+        setDecimal(decimalObj, updateDecimal);
+        let v_data = m_getInitData(decimalObj);
+        v_initPanel(v_data);
+    };
+    let errCaller = function () {
+        alert('更新小数位数失败!');
+    };
+    CommonAjax.post(url, postData, scCaller, errCaller);
+}
+
+$(document).ready(function () {
+    //绑定小数位数输入控制
+    e_validIn($('input', '#poj-settings-decimal'));
+    //绑定小数位数确认更新按钮
+    $('#tab_poj-settings-decimal').on('shown.bs.tab', function (e) {
+        e_bindCof($('#property_ok'));
+        let v_data = m_getInitData(decimalObj);
+        v_initPanel(v_data);
+   });
+    $('#tab_poj-settings-decimal').on('hidden.bs.tab', function (e) {
+        e_unbindCof($('#property_ok'));
+    })
+});