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