| 
					
				 | 
			
			
				@@ -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')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 |