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