【javascript】common js

  1 function Common() { };
  2 Common.prototype = function () {
  3     //基于layer的框架(loading和alert部分是使用的layer弹层)
  4     return {
  5         alert: function (msg) {
  6             layer.msg(msg, { time: 1000 });
  7         },
  8         confirm: function (msg, succ, cancel) {
  9             layer.confirm(msg, {
 10                 btn: ['确定', '取消'] //按钮
 11             }, succ, cancel);
 12         },
 13         //加载中。。。
 14         loading: function (msg) {
 15             if (window.layer) {
 16                 layer.load()
 17             }
 18         },
 19         //关闭当前加载
 20         closeloading: function () {
 21             layer.closeAll();
 22         },
 23         //基于jquery的ajax
 24         ajax: function (setting) {
 25             if (!setting.dataType) setting.dataType = "json";
 26             if (!setting.type) setting.type = "post";
 27             $.ajax({
 28                 url: setting.url,
 29                 type: setting.type,
 30                 dataType: setting.dataType,
 31                 data: setting.data,
 32                 success: function (data) {
 33                     if (setting.success)
 34                         setting.success(data);
 35                 },
 36                 error: setting.error
 37             })
 38         },
 39         //httprequest ajax H5使用
 40         //setting参数
 41         //beforeSend(xhr)发送之前,xhr为xmlhttprequest
 42         //success 发送成功
 43         //error
 44         ajaxHttp: function (setting) {
 45             if (!setting) return;
 46             var xhr = new XMLHttpRequest();
 47             xhr.onreadystatechange = function () {
 48                 if (xhr.readyState == 4) {
 49                     if (xhr.status == 200) {
 50                         setting.success(xhr.responseText);
 51                     } else {
 52                         setting.error(xhr.responseText);
 53                     }
 54                 }
 55             }
 56             if (!setting.type) setting.type = "post";
 57             xhr.open(setting.type, setting.url);
 58             xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
 59             if (setting.beforeSend) setting.beforeSend(xhr);//
 60             if (setting.data)
 61                 xhr.send(a(setting.data));
 62             else
 63                 xhr.send();
 64             //格式化数据
 65             function a(data) {
 66                 var param = function (obj) {
 67                     var query = '';
 68                     var name, value, fullSubName, subName, subValue, innerObj, i;
 69 
 70                     for (name in obj) {
 71                         value = obj[name];
 72 
 73                         if (value instanceof Array) {
 74                             for (i = 0; i < value.length; ++i) {
 75                                 subValue = value[i];
 76                                 fullSubName = name + '[' + i + ']';
 77                                 innerObj = {};
 78                                 innerObj[fullSubName] = subValue;
 79                                 query += param(innerObj) + '&';
 80                             }
 81                         } else if (value instanceof Object) {
 82                             for (subName in value) {
 83                                 subValue = value[subName];
 84                                 fullSubName = name + '[' + subName + ']';
 85                                 innerObj = {};
 86                                 innerObj[fullSubName] = subValue;
 87                                 query += param(innerObj) + '&';
 88                             }
 89                         } else if (value !== undefined && value !== null) {
 90                             query += encodeURIComponent(name) + '='
 91                                 + encodeURIComponent(value) + '&';
 92                         }
 93                     }
 94 
 95                     return query.length ? query.substr(0, query.length - 1) : query;
 96                 };
 97                 return param(data);
 98             }
 99         },
100         query: function (name) {
101             var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
102             var s = window.location.search||window.location.hash.substr(1);//这块兼容了 angularjs 的#?a=xxx&b=xxx 的参数规则
103             var r = s.substr(1).match(reg);
104             if (r != null)
105                return unescape(r[2]);
106             return null;
107         },
108         ///相当于jquery的ready
109         ready: function (a) {
110             document.onreadystatechange = function () {
111                 if (document.readyState == "complete") {
112                     if (a) a();
113                 }
114             }
115         },
116     }
117 }();
118 //基于jq的通用部分
119 Common.prototype.jquery = function () {
120     return {
121         //调用示例
122         exp: function () {
123             com.jquery.initFileUpload({
124                 a: $file,
125                 b: function (pic, pic_2, pic_4, pic_6) {//上传成功后返回 4中格式的图片
126                     setTimeout(function () {
127                         $file.prev().prop("src", pic);
128                         com.closeloading();
129                     }, 1000)
130                 },
131                 c: function (a, b) {//图片选择完毕之后,b.submit()就是把图片上传的意思
132                     com.loading();
133                     b.submit();
134                 }
135             });
136         },
137         initFileUpload: function (setting) {
138             if (!setting) com.alert("缺少参数setting");
139             if (!setting.a) com.alert("缺少参数file input");
140             var a = setting.a;
141             var b = setting.b;//success
142             var c = setting.c;
143             var url = "http://114.112.101.70:91/api/uploadimage/eggworld_product_0_0_0_true";
144             var fp = a.fileupload({
145                 url: url,
146                 dataType: 'json',
147                 forceIframeTransport: true,
148                 autoUpload: setting.autoUpload ? setting.autoUpload : true,
149                 redirect: setting.redirect ? setting.redirect : "http://" + window.location.host + "/Scripts/result.html",//这个是fileupload插件的一个支持跨域的html
150                 add: function (e, data) {//文件选择完毕
151                     if (c) c(e, data);
152                     else {
153                         if (e.isDefaultPrevented()) {
154                             return false;
155                         }
156                         if (data.autoUpload || (data.autoUpload !== false &&
157                                 $(this).fileupload('option', 'autoUpload'))) {
158                             data.process().done(function () {
159                                 data.submit();
160                             });
161                         }
162                     }
163                 },
164                 done: function (e, res) {//文件上传完毕
165                     console.log(res)
166                     if (res.result.Code == 200) {
167                         var suffix = res.result.Datas[0].ImgUrl.substring(res.result.Datas[0].ImgUrl.lastIndexOf('.'));
168                         var picUrl = res.result.Datas[0].ImgUrl.replace(suffix, suffix);
169                         var picUrl_6 = res.result.Datas[0].ImgUrl.replace(suffix, '_6' + suffix);
170                         var picUrl_4 = res.result.Datas[0].ImgUrl.replace(suffix, '_4' + suffix);
171                         var picUrl_2 = res.result.Datas[0].ImgUrl.replace(suffix, '_2' + suffix);
172                         if (b) b(picUrl, picUrl_2, picUrl_4, picUrl_6, setting.tag);
173                     }
174                 },
175                 fail: function () {
176                     if (setting.d) setting.d();
177                 },
178             });//end fileupload
179         },
180     };
181 }();
182 //数据绑定模板
183 Common.prototype.tmpl = function () {
184     return {
185         //普通参数直接绑定{createtime}
186         //表达式支持函数调用{model.getDate($createtime,$updatetiem)}
187         //a 模板的html
188         //b list.item
189         getTmpl: function (a, b) {
190             //console.log(b)
191             var regKK = new RegExp("{(.*?)}", "g");
192             var c = a.match(regKK);
193 
194             for (var i = 0; i < c.length; i++) {
195                 c[i] = c[i].replace(/{/g, "").replace(/}/g, "");
196             }
197             for (var i = 0; i < c.length; i++) {
198                 var tempRegItem = c[i];
199                 //var regFuc = new RegExp(".+?((d+?))", "g");
200                 var regFuc = new RegExp("\((.| )+?\)", "g");
201                 if (regFuc.test(tempRegItem)) {
202                     //function 
203                     var ar1 = tempRegItem.split("(")[0];//function name
204                     //console.log(tempRegItem);
205                     var parastr = tempRegItem.split("(")[1].split(")")[0];
206                     var ar2 = parastr.split(",");//参数数组
207 
208                     for (var aritem in ar2) {
209                         aritem = ar2[aritem];
210                         var treg = new RegExp("\" + aritem, "g");
211                         if (b[aritem.replace(/$/g, "")]) {
212                             parastr = parastr.replace(treg, "'" + b[aritem.replace(/$/g, "")] + "'");
213                         } else {
214                             parastr = parastr.replace(treg, "''");
215                         }
216                     }
217                     var fucstr = ar1 + "(" + parastr + ")";
218                     //console.log(fucstr);
219                     var r = eval(fucstr);
220                     a = a.replace("{" + tempRegItem + "}", r);
221                 }
222                 else if (b[tempRegItem]) {
223                     var reg = new RegExp("{" + tempRegItem + "}", "g");
224                     a = a.replace(reg, b[tempRegItem]);
225                 } else {
226                     var reg = new RegExp("{" + tempRegItem + "}", "g");
227                     a = a.replace(reg, " ");
228                 }
229             }
230             return a;
231         },
232         getTmpls: function (a, b) {
233             var str = "";
234             for (var i = 0; i < b.length; i++) {
235                 str += this.getTmpl(a, b[i]);
236             }
237             return str;
238         }
239     }
240 }();
241 
242 Common.prototype.word = function () {
243     return {
244         errorMsg: "网络错误,请稍后再试"
245     };
246 }();
247 
248 Common.prototype.modelPage = function () {
249     return {//分页控件
250         //调用示例
251         codeExp: function () {
252             common.modelPage.initPage({
253                 pagerowcount: 215,//数据总共多少条
254                 pageindex: 1,//当前第几页
255                 pagesize: 10,//一页多少条
256                 domid: 'pageid',
257                 pageclick: function (pageindex) { }//分页点击事件
258             })
259         },
260         //分页 配合梅珍写的样式使用
261         initPage: function (setting) {
262             if (setting.pagerowcount <= setting.pageindex * setting.pagesize) {
263                 return;
264             }
265             this.pagecontent(setting);
266         },
267         pagecontent: function (setting) {
268             if (!setting.pageindex) setting.pageindex = 1;
269             if (!setting.pagesize) setting.pagesize = 10;
270             if (!setting.showcount) setting.showcount = 5;
271             if (!setting.pagerowcount) alert("缺少参数pagerowcount");
272             if (!setting.domid) alert("缺少参数domid");
273             if (!setting.pageclick) alert("缺少回调函数pageclick");
274 
275             if (setting.pagerowcount) {
276                 setting.pagecount = parseInt(setting.pagerowcount % setting.pagesize > 0 ? (setting.pagerowcount / setting.pagesize) + 1 : setting.pagerowcount / setting.pagesize);
277             }
278             var itemthis = this;
279             var div_page = document.createElement("div");
280             div_page.className = "page";
281             div_page.id = setting.domid;
282             var div_pageIn = document.createElement("div");
283             div_pageIn.className = "pageIn";
284 
285             this.pageset(setting, div_pageIn, itemthis);
286 
287             div_page.appendChild(div_pageIn);
288             var dom = document.getElementById(setting.domid);
289             dom.parentElement.replaceChild(div_page, dom);
290         },
291         pageset: function (setting, div_pageIn, itemthis) {
292             /*处理分页参数*/
293             if (setting.pageindex > 1) {
294                 var link_a = document.createElement("a");
295                 link_a.innerText = "首页";
296                 link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, 1); };
297                 div_pageIn.appendChild(link_a);
298                 var link_a = document.createElement("a");
299                 link_a.innerText = "上一页";
300                 if (setting.pageindex <= 1) link_a.disabled = "disabled";
301                 else
302                     link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pageindex - 1); };
303                 div_pageIn.appendChild(link_a);
304             }
305 
306             //var tempshowcount = setting.pagecount < setting.showcount ? setting.pagecount : setting.showcount;
307             for (var i = 1; i <= setting.showcount; i++) {
308                 var link_a = document.createElement("a");
309                 link_a.innerText = parseInt((setting.pageindex - 1) / setting.showcount) * setting.showcount + i;
310                 if (link_a.innerText > setting.pagecount) break;
311                 if (link_a.innerText == setting.pageindex) {
312                     link_a.className = "now";
313                 }
314 
315                 var pageitem = this;
316 
317                 link_a.onclick = function (pagei) {
318                     return function () {
319                         itemthis.pageclick.call(itemthis, setting, pagei);
320                     }
321                 }(link_a.innerText);
322                 div_pageIn.appendChild(link_a);
323             }
324 
325             if (setting.pageindex < setting.pagecount) {
326                 var link_a = document.createElement("a");
327                 link_a.innerText = "下一页";
328                 if (setting.pageindex >= setting.pagecount) link_a.disabled = "disabled";
329                 else link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pageindex + 1); };
330                 div_pageIn.appendChild(link_a);
331 
332                 var link_a = document.createElement("a");
333                 link_a.innerText = "最后一页";
334                 link_a.onclick = function () { itemthis.pageclick.call(itemthis, setting, setting.pagecount); };
335                 div_pageIn.appendChild(link_a);
336             }
337             /*处理分页参数END*/
338         },
339         pageclick: function (setting, page) {
340             page = parseInt(page);
341             setting.pageindex = page;
342             this.pagecontent(setting);
343             setting.pageclick(page);
344         },
345         loadCss: function () {
346             var dom = document.createElement("style");
347             dom.type = "text/css";
348             dom.innerText = ".page{100%;height:auto;margin-top:20px}.page .pageIn{620px;margin:0 auto}.page .pageIn a{display:inline-block;padding:0 15px;height:40px;border:1px solid #ccc;margin-right:3px;line-height:40px;color:#555;font-size:14px}.page .pageIn .now{background:#2dc3e8;border:1px solid #2dc3e8;color:#fff}";
349             window.document.body.appendChild(dom);
350         },
351     }
352 }();
353 
354 //返回
355 Common.prototype.rtModel = function () {
356     return {
357         rtuname: "ReturnUrl",
358         rtuvalue: function () {
359             return com.query(this.rtuname);
360         },
361         back: function (url) {
362             if (this.rtuvalue()) {
363                 window.location = this.rtuvalue();
364             } else if (url) {
365                 window.location = url;
366             } else {
367                 window.history.back();
368             }
369         }
370     };
371 }();
372 var Com = new Common();
373 var com = Com;
374 var common = Com;
375 com.queryString = com.query;
原文地址:https://www.cnblogs.com/zspbolg/p/6268645.html