Blame view

js/common.js 8.87 KB
f9cd3bb6   liuqimichale   初始化项目
1
2
3
4
  /*
   state
  */
  var appState = {
9931d316   liuqimichale   格式化代码
5
6
7
8
9
    defaultTime: 120,//默认2分钟倒计时
    countDownTime_timer: null,//支付倒计时
    codeNullTip: "微信授权失败,请您尝试重新扫码 !",//code获取失败提示语
    expandField_1: null,//扩展字段1-备用
    expandObj_1: null,//扩展字段1-备用
f9cd3bb6   liuqimichale   初始化项目
10
11
12
13
  }
  
  /*自定义异步请求*/
  function ajax() {
9931d316   liuqimichale   格式化代码
14
15
16
17
18
19
20
21
22
23
24
25
    var ajaxData = {
      type: (arguments[0].type || "GET").toUpperCase(),
      url: arguments[0].url || "",
      async: arguments[0].async || "true",
      data: arguments[0].data || null,
      dataType: arguments[0].dataType || "json",
      contentType: arguments[0].contentType || "application/json; charset=utf-8",
      beforeSend: arguments[0].beforeSend || function () {
      },
      success: arguments[0].success || function () {
      },
      error: arguments[0].error || function () {
f9cd3bb6   liuqimichale   初始化项目
26
      }
9931d316   liuqimichale   格式化代码
27
    }
f9cd3bb6   liuqimichale   初始化项目
28
  
9931d316   liuqimichale   格式化代码
29
30
31
    ajaxData.beforeSend()
    var xhr = createxmlHttpRequest();
    xhr.responseType = ajaxData.dataType;
f9cd3bb6   liuqimichale   初始化项目
32
  
9931d316   liuqimichale   格式化代码
33
34
35
    xhr.open(ajaxData.type, ajaxData.url, ajaxData.async);
    xhr.setRequestHeader("Content-Type", ajaxData.contentType);
    xhr.send(convertData(ajaxData.data));
f9cd3bb6   liuqimichale   初始化项目
36
  
9931d316   liuqimichale   格式化代码
37
38
39
40
41
42
43
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4) {
        if (xhr.status == 200) {
          ajaxData.success(xhr.response)
        } else {
          ajaxData.error()
        }
f9cd3bb6   liuqimichale   初始化项目
44
      }
9931d316   liuqimichale   格式化代码
45
    }
f9cd3bb6   liuqimichale   初始化项目
46
47
48
  }
  
  function createxmlHttpRequest() {
9931d316   liuqimichale   格式化代码
49
50
51
52
53
    if (window.ActiveXObject) {
      return new ActiveXObject("Microsoft.XMLHTTP");
    } else if (window.XMLHttpRequest) {
      return new XMLHttpRequest();
    }
f9cd3bb6   liuqimichale   初始化项目
54
55
56
  }
  
  function convertData(data) {
9931d316   liuqimichale   格式化代码
57
58
59
60
    if (typeof data === 'object') {
      var convertResult = "";
      for (var c in data) {
        convertResult += c + "=" + data[c] + "&";
f9cd3bb6   liuqimichale   初始化项目
61
      }
9931d316   liuqimichale   格式化代码
62
63
64
65
66
      convertResult = convertResult.substring(0, convertResult.length - 1)
      return convertResult;
    } else {
      return data;
    }
f9cd3bb6   liuqimichale   初始化项目
67
  }
9931d316   liuqimichale   格式化代码
68
  
f9cd3bb6   liuqimichale   初始化项目
69
70
71
72
73
74
75
76
77
78
79
  ////////////////////////////////demo
  //ajax({
  //    type: "POST",
  //    url: "ajax.php",
  //    dataType: "json",
  //    data: {
  //        "name": "abc",
  //        "age": 123,
  //        "id": "456"
  //    },
  //    beforeSend: function () {
afc9e308   liuqimichale   银联支付
80
  //        //some js code
f9cd3bb6   liuqimichale   初始化项目
81
82
83
84
85
86
87
88
89
  //    },
  //    success: function (msg) {
  //        console.log(msg)
  //    },
  //    error: function () {
  //        console.log("error")
  //    }
  //})
  /*******common*********/
9931d316   liuqimichale   格式化代码
90
  
f9cd3bb6   liuqimichale   初始化项目
91
  /*统一请求接口*/
9931d316   liuqimichale   格式化代码
92
93
94
95
96
97
98
99
100
101
102
103
104
  function postRequest(url, params, successCallback, errorCallback) {
    ajax({
      type: "POST",
      url: url,
      dataType: "json",
      data: JSON.stringify(params),
      beforeSend: function () {
        //some js code
      },
      success: function (msg) {
        successCallback(msg);
        //var res = msg;
        //if (res.code == 0) {//进场
f9cd3bb6   liuqimichale   初始化项目
105
  
9931d316   liuqimichale   格式化代码
106
107
108
109
110
111
112
113
114
        //} else {//其他情况如【该卡号场内已存在】
        //    console.log(res.message);
        //}
      },
      error: function (err) {
        errorCallback(err);
        //console.log("网络地址出错...")
      }
    })
f9cd3bb6   liuqimichale   初始化项目
115
116
117
118
  }
  
  /*获取URL?参数*/
  function getQueryString(location) {
9931d316   liuqimichale   格式化代码
119
120
121
122
123
124
125
126
    //var url = location.search; //获取url中"?"符后的字串
    var url = location.search;
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
      var str = url.substr(1);
      strs = str.split("&");
      for (var i = 0; i < strs.length; i++) {
        theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
f9cd3bb6   liuqimichale   初始化项目
127
      }
9931d316   liuqimichale   格式化代码
128
129
130
131
    } else {
      theRequest = null;
    }
    return theRequest;
f9cd3bb6   liuqimichale   初始化项目
132
133
134
135
  }
  
  /*统一提示信息*/
  window.alertMsg = function (txt) {
9931d316   liuqimichale   格式化代码
136
137
138
139
140
141
142
143
144
145
146
147
148
    var alertFram = document.createElement("DIV");
    alertFram.id = "alertFram";
    alertFram.style.position = "fixed";
    alertFram.style.width = "100%";
    alertFram.style.textAlign = "center";
    alertFram.style.top = "40%";
    alertFram.style.zIndex = "10001";
    strHtml = " <span style=\"font-family: 微软雅黑;display:inline-block;background:#333;color:#fff;padding:0 20px;line-height:36px;border-radius:6px; \">" + txt + "</span>";
    alertFram.innerHTML = strHtml;
    document.body.appendChild(alertFram);
    setTimeout((function () {
      alertFram.style.display = "none";
    }), 2500);
f9cd3bb6   liuqimichale   初始化项目
149
150
151
152
  };
  
  //四舍五入保留2位小数(不够位数,则用0替补)
  function keepTwoDecimalFull(num) {
9931d316   liuqimichale   格式化代码
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
    var result = parseFloat(num);
    if (isNaN(result)) {
      alert('传递参数错误,请检查!');
      return false;
    }
    result = Math.round(num * 100) / 100;
    var s_x = result.toString();
    var pos_decimal = s_x.indexOf('.');
    if (pos_decimal < 0) {
      pos_decimal = s_x.length;
      s_x += '.';
    }
    while (s_x.length <= pos_decimal + 2) {
      s_x += '0';
    }
    return s_x;
f9cd3bb6   liuqimichale   初始化项目
169
170
  }
  
afc9e308   liuqimichale   银联支付
171
172
173
174
175
176
  /**
   * param 将要转为URL参数字符串的对象
   * key URL参数字符串的前缀
   * encode true/false 是否进行URL编码,默认为true
   *
   * return URL参数字符串
f9cd3bb6   liuqimichale   初始化项目
177
178
   */
  var parseParams = function (data) {
9931d316   liuqimichale   格式化代码
179
180
181
182
183
184
    try {
      var tempArr = [];
      for (var i in data) {
        var key = (i);
        var value = encodeURIComponent(data[i]);//decodeURIComponent
        tempArr.push(key + '=' + value);
f9cd3bb6   liuqimichale   初始化项目
185
      }
9931d316   liuqimichale   格式化代码
186
187
188
189
190
      var urlParamsStr = tempArr.join('&');
      return urlParamsStr;
    } catch (err) {
      return '';
    }
f9cd3bb6   liuqimichale   初始化项目
191
192
  };
  
f9cd3bb6   liuqimichale   初始化项目
193
194
  /*获取对象*/
  function getObjectByID(id) {
9931d316   liuqimichale   格式化代码
195
    return document.getElementById(id);
f9cd3bb6   liuqimichale   初始化项目
196
197
  }
  
f9cd3bb6   liuqimichale   初始化项目
198
199
  /*秒转时分*/
  function formatSeconds(value) {
9931d316   liuqimichale   格式化代码
200
201
202
203
204
205
206
207
208
209
210
211
212
213
    var secondTime = parseInt(value);// 秒
    var minuteTime = 0;// 分
    var hourTime = 0;// 小时
    if (secondTime > 60) {//如果秒数大于60,将秒数转换成整数
      //获取分钟,除以60取整数,得到整数分钟
      minuteTime = parseInt(secondTime / 60);
      //获取秒数,秒数取佘,得到整数秒数
      secondTime = parseInt(secondTime % 60);
      //如果分钟大于60,将分钟转换成小时
      if (minuteTime > 60) {
        //获取小时,获取分钟除以60,得到整数小时
        hourTime = parseInt(minuteTime / 60);
        //获取小时后取佘的分,获取分钟除以60取佘的分
        minuteTime = parseInt(minuteTime % 60);
f9cd3bb6   liuqimichale   初始化项目
214
      }
9931d316   liuqimichale   格式化代码
215
216
    }
    var result = "" + parseInt(secondTime) + "秒";
f9cd3bb6   liuqimichale   初始化项目
217
  
9931d316   liuqimichale   格式化代码
218
219
220
221
222
223
224
    if (minuteTime > 0) {
      result = "" + parseInt(minuteTime) + "分" + result;
    }
    if (hourTime > 0) {
      result = "" + parseInt(hourTime) + "小时" + result;
    }
    return result;
f9cd3bb6   liuqimichale   初始化项目
225
226
227
228
  }
  
  /*只能输入数字加字母*/
  function checkCharAndNumber(ev) {
9931d316   liuqimichale   格式化代码
229
230
231
    //this.value = this.value.toUpperCase();
    var tmpValue = this.value.replace(/[^\d|chun]/g, '');
    this.value = this.value.toUpperCase();
f9cd3bb6   liuqimichale   初始化项目
232
233
234
235
  }
  
  /*检测当前app浏览器*/
  function clientBrowserEx() {
9931d316   liuqimichale   格式化代码
236
237
238
239
240
241
242
243
244
245
246
247
248
249
    var state = "other";//default
    if (/MicroMessenger/.test(window.navigator.userAgent)) {
      console.log("微信客户端");
      //this.switchShow("wxPay");
      state = "wxPay";
    } else if (/AlipayClient/.test(window.navigator.userAgent)) {
      console.log("支付宝客户端");
      //this.switchShow("aliPay");
      state = "aliPay";
    } else {
      console.log("其他浏览器");
      state = "other";
    }
    return state;
f9cd3bb6   liuqimichale   初始化项目
250
251
  }
  
f9cd3bb6   liuqimichale   初始化项目
252
253
  /*支付倒计时 @id*/
  function countDownTime(id) {
9931d316   liuqimichale   格式化代码
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
    $obj = getObjectByID(id);
    getObjectByID("headTip").style.display = "block";
    var count = appState.defaultTime;
    appState.countDownTime_timer = setInterval(function () {
      if (count == 0) {
        clearInterval(appState.countDownTime_timer);
        appState.countDownTime_timer = null;
        $obj.innerHTML = count + "秒";
        //删除code后刷新
        window.location.href = funcUrlDel("code");
      } else {
        --count;
        $obj.innerHTML = count + "秒";
      }
    }, 1000);
f9cd3bb6   liuqimichale   初始化项目
269
270
271
272
  }
  
  /*删除url中某个参数*/
  function funcUrlDel(name) {
9931d316   liuqimichale   格式化代码
273
274
275
276
277
278
279
280
281
    var loca = window.location;
    var baseUrl = loca.origin + loca.pathname + "?";
    var query = loca.search.substr(1);
    if (query.indexOf(name) > -1) {
      var obj = {}
      var arr = query.split("&");
      for (var i = 0; i < arr.length; i++) {
        arr[i] = arr[i].split("=");
        obj[arr[i][0]] = arr[i][1];
f9cd3bb6   liuqimichale   初始化项目
282
      }
9931d316   liuqimichale   格式化代码
283
284
285
286
287
288
289
      ;
      delete obj[name];
      var url = baseUrl + JSON.stringify(obj).replace(/[\"\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");
      return url
    } else {
      return loca.href;
    }
f9cd3bb6   liuqimichale   初始化项目
290
  }
9931d316   liuqimichale   格式化代码
291
  
afc9e308   liuqimichale   银联支付
292
293
294
  var userAgent = navigator.userAgent;
  var isAndroid = userAgent.indexOf('Android') > -1 || userAgent.indexOf('Adr') > -1; //android终端
  
9931d316   liuqimichale   格式化代码
295
296
  function utilParams(val, orderID, openId) {
    var _orderTotalFee = Number($('#due').text()) * 100 //总金额
afc9e308   liuqimichale   银联支付
297
298
    var fee = $('#discountFee').text()
    var _fee = fee.substring(0, fee.length - 1);
9931d316   liuqimichale   格式化代码
299
    var _orderDicountFee = Number(_fee) * 100  //优惠了多少钱
afc9e308   liuqimichale   银联支付
300
301
    var _orderActFee = _orderTotalFee - _orderDicountFee  //实收多少钱
    var jsondata;
9931d316   liuqimichale   格式化代码
302
    if (_orderDicountFee > 0) {
afc9e308   liuqimichale   银联支付
303
      jsondata = {
9931d316   liuqimichale   格式化代码
304
305
306
307
308
309
310
311
312
313
314
315
        orderBigType: 100,
        payOrderType: 101,
        rltOrderId: orderID,
        payType: val,
        terminalSource: 7,
        orderActFee: _orderActFee,
        orderTotalFee: _orderTotalFee,
        orderDicountFee: _orderDicountFee,
        payUserId: openId,
        terminalOS: isAndroid ? 'AND' : 'IOS',
        couponType: 1, //优惠类型
        couponCode: $('#discountBox').val(),
afc9e308   liuqimichale   银联支付
316
      };
9931d316   liuqimichale   格式化代码
317
    } else {
afc9e308   liuqimichale   银联支付
318
      jsondata = {
9931d316   liuqimichale   格式化代码
319
320
321
322
323
324
325
326
327
        orderBigType: 100,
        payOrderType: 101,
        rltOrderId: orderID,
        payType: val,
        terminalSource: 7,
        orderActFee: _orderActFee,
        orderTotalFee: _orderTotalFee,
        payUserId: openId,
        terminalOS: isAndroid ? 'AND' : 'IOS',
afc9e308   liuqimichale   银联支付
328
329
330
331
      };
    }
    return jsondata
  }
f9cd3bb6   liuqimichale   初始化项目