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{width:100%;height:auto;margin-top:20px}.page .pageIn{width: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;