/** * 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')); }) });