| 
					
				 | 
			
			
				@@ -2,18 +2,21 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * 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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let defaultDecimal = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    min: 0, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    max: 6, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    _def: {//定义往这加, editable: 开放给用户编辑的(入库),定义editable为true的字段时,要在后端project_model.js defaultDecimal中添加定义,html添加input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        bills: {editable: true, data: {unitPrice: 2, totalPrice: 2}}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ration: {editable: true, data: {quantity: 3, unitPrice: 2, totalPrice: 2}}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        glj: {editable: true, data: {quantity: 3, unitPrice: 2}}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        feeRate: {editable: true, data: 2}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        quantity_detail: {editable: false, data: 4}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        process: {editable: false, data: 6} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+let decimalObj = Object.create(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function isUndef(v) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return v === undefined || v === null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,33 +38,62 @@ function isInt(v){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function isValidDigit(v){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return isInt(v) && v >= decimalObj.default.min && v <= decimalObj.default.max; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return isInt(v) && v >= defaultDecimal.min && v <= defaultDecimal.max; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//newV用户可编辑数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+function toUpdateDecimal(orgV, newV){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let rst = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let len = Object.keys(newV).length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    reCompare(orgV, newV); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    function reCompare(orgV, newV){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let attr in newV){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(Object.keys(newV[attr]).length > 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(isUndef(orgV[attr])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst =  true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    reCompare(orgV[attr], newV[attr]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(isUndef(orgV[attr]) || parseInt(newV[attr]) !== parseInt(orgV[attr])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    rst = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let attr in data){//设置入库的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _digits[attr] = data[attr] || defaultDecimal['_def'][attr]['data']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let attr in defaultDecimal['_def']){//设置不入库的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(!defaultDecimal['_def'][attr]['editable']){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _digits[attr] = defaultDecimal['_def'][attr]['data']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for(let attr in defaultDecimal['_def']){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _digits[attr] = defaultDecimal['_def'][attr]['data']; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //获取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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for(let attr in defaultDecimal['_def']){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(defaultDecimal['_def'][attr]['editable'] && isDef(data[attr])){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rst[attr] = data[attr]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //获取小数位数panel里的数据 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -82,8 +114,6 @@ function m_getDecimalData(inputs){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             rst[attrs[0]] = parseInt($(inputs[i]).val()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //set process 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    rst['process'] = decimalObj.default.process; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return rst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,16 +125,16 @@ function v_initPanel(data){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $(jqs).attr('min', defaultDecimal.min); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    $(jqs).attr('max', defaultDecimal.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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $(jqs).attr('min', defaultDecimal.min); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                $(jqs).attr('max', defaultDecimal.max); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -136,7 +166,9 @@ function e_bindCof(btn){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     btn.bind('click', function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //获取更新的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let updateDecimal = m_getDecimalData($('input', '#poj-settings-decimal')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        a_updateDigits(updateDecimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(toUpdateDecimal(decimalObj, updateDecimal)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            a_updateDigits(updateDecimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,23 +194,23 @@ function a_updateDigits(updateDecimal){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         setDecimal(decimalObj, updateDecimal); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let v_data = m_getInitData(decimalObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         v_initPanel(v_data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log(decimalObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let errCaller = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         alert('更新小数位数失败!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let v_data = m_getInitData(decimalObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        v_initPanel(v_data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#poj-set').on('shown.bs.modal', function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let v_data = m_getInitData(decimalObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         v_initPanel(v_data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    $('#tab_poj-settings-decimal').on('hidden.bs.tab', function (e) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        e_unbindCof($('#property_ok')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //绑定确定按钮 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e_bindCof($('#property_ok')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //绑定小数位数输入控制 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    e_validIn($('input', '#poj-settings-decimal')); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 |