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;