jswx.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. QOM='xinhuwx_'
  2. js.wx={};
  3. js.wx.alert=function(msg,fun,tit, cof1){
  4. $('#weui_dialog_alert_div').remove();
  5. var s='';
  6. if(!tit)tit='系统提示';
  7. s+='<div id="weui_dialog_alert_div" class="weui_dialog_alert" >';
  8. s+='<div class="weui_mask"></div>';
  9. s+='<div class="weui_dialog">';
  10. s+=' <div class="weui_dialog_hd"><strong class="weui_dialog_title">'+tit+'</strong></div>';
  11. s+=' <div class="weui_dialog_bd">'+msg+'</div>';
  12. s+=' <div class="weui_dialog_ft">';
  13. s+=' <a href="javascript:;" id="confirm_btn" sattr="yes" class="weui_btn_dialog primary">确定</a>';
  14. if(cof1==1)s+=' <a href="javascript:;" id="confirm_btn1" sattr="no" class="weui_btn_dialog default">取消</a>';
  15. s+=' </div>';
  16. s+='</div>';
  17. s+='</div>';
  18. $('body').append(s);
  19. function backl(e){
  20. var jg = $(this).attr('sattr');
  21. if(typeof(fun)=='function')fun(jg,this);
  22. $('#weui_dialog_alert_div').remove();
  23. return false;
  24. }
  25. $('#confirm_btn1').click(backl);
  26. $('#confirm_btn').click(backl);
  27. }
  28. js.wx.confirm=function(msg,fun,tit){
  29. this.alert(msg,fun,tit, 1);
  30. }
  31. js.wx.prompt=function(tit,msg,fun,nr){
  32. if(!nr)nr='';
  33. if(apicloud){
  34. api.prompt({
  35. buttons: ['确定', '取消'],
  36. text:nr,title:tit,msg:msg
  37. }, function(ret, err) {
  38. var index = ret.buttonIndex;
  39. if(index==1)fun(ret.text);
  40. });
  41. return;
  42. }
  43. function func(lx){
  44. if(lx=='yes')fun(get('prompttxt').value);
  45. }
  46. var msg = '<div align="left">'+msg+'</div><div align="left"><input autocomplete="off" value="'+nr+'" class="r-input" id="prompttxt" type="text"></div>';
  47. this.alert(msg,func,tit, 1);
  48. }
  49. js.apiurl = function(m,a,cans){
  50. var url=''+apiurl+'api.php?m='+m+'&a='+a+'';
  51. var cfrom='mweb';
  52. if(adminid)url+='&adminid='+adminid+'';
  53. if(device)url+='&device='+device+'';
  54. url+='&cfrom='+cfrom+'';
  55. if(token)url+='&token='+token+'';
  56. if(!cans)cans={};
  57. for(var i in cans)url+='&'+i+'='+cans[i]+'';
  58. return url;
  59. }
  60. js.ajax = function(m,a,d,funs, mod,checs, erfs, glx){
  61. if(js.ajaxbool && !js.ajaxwurbo)return;
  62. clearTimeout(js.ajax_time);
  63. var url = js.apiurl(m,a);
  64. js.ajaxbool = true;
  65. if(!mod)mod='mode';
  66. if(typeof(erfs)!='function')erfs=function(){};
  67. if(typeof(funs)!='function')funs=function(){};
  68. if(!checs)checs=function(){};
  69. var bs = checs(d);
  70. if(typeof(bs)=='string'&&bs!=''){
  71. js.msg('msg', bs);
  72. return;
  73. }
  74. if(typeof(bs)=='object')d=js.apply(d,bs);
  75. var tsnr = '努力处理中...';
  76. if(mod=='wait')js.msg(mod, tsnr);
  77. if(mod=='mode')js.wx.load(tsnr);
  78. function errsoers(ts, ds){
  79. js.wx.unload();
  80. js.setmsg(ts);
  81. js.msg('msg',ts);
  82. js.ajaxbool = false;
  83. erfs(ts, ds);
  84. }
  85. var type=(!d)?'get':'post';if(glx)type=glx;
  86. var ajaxcan={
  87. type:type,dataType:'json',data:d,url:url,
  88. success:function(ret){
  89. js.ajaxbool=false;
  90. js.wx.unload();
  91. clearTimeout(js.ajax_time);
  92. if(ret.code==199){
  93. js.wx.alert(ret.msg, function(){
  94. js.location('?d=we&m=login&backurl='+jm.base64encode(location.href)+'');
  95. });
  96. return;
  97. }
  98. if(ret.code!=200){
  99. errsoers(ret.msg, ret);
  100. }else{
  101. js.setmsg('');
  102. js.msg('none');
  103. funs(ret.data);
  104. }
  105. },
  106. error:function(e){
  107. errsoers('内部出错:'+e.responseText+'');
  108. }
  109. };
  110. $.ajax(ajaxcan);
  111. js.ajax_time = setTimeout(function(){
  112. if(js.ajaxbool){
  113. errsoers('Error:请求超时?');
  114. }
  115. }, 1000*30);
  116. }
  117. js.wx.load=function(txt){
  118. this.unload();
  119. if(txt=='none')return;
  120. if(!txt)txt='加载中...';
  121. var s='';
  122. var t = winHb()-150;
  123. s+='<div id="loadingToastsss" class="weui_loading_toast">'+
  124. '<div class="weui_mask_transparent"></div>'+
  125. '<div class="weui_toast" style="top:'+(t*0.5)+'px">'+
  126. ' <div class="weui_loading">'+
  127. ' <div class="weui_loading_leaf weui_loading_leaf_0"></div>'+
  128. ' <div class="weui_loading_leaf weui_loading_leaf_1"></div>'+
  129. ' <div class="weui_loading_leaf weui_loading_leaf_2"></div>'+
  130. ' <div class="weui_loading_leaf weui_loading_leaf_3"></div>'+
  131. ' <div class="weui_loading_leaf weui_loading_leaf_4"></div>'+
  132. ' <div class="weui_loading_leaf weui_loading_leaf_5"></div>'+
  133. ' <div class="weui_loading_leaf weui_loading_leaf_6"></div>'+
  134. ' <div class="weui_loading_leaf weui_loading_leaf_7"></div>'+
  135. ' <div class="weui_loading_leaf weui_loading_leaf_8"></div>'+
  136. ' <div class="weui_loading_leaf weui_loading_leaf_9"></div>'+
  137. ' <div class="weui_loading_leaf weui_loading_leaf_10"></div>'+
  138. ' <div class="weui_loading_leaf weui_loading_leaf_11"></div>'+
  139. ' </div>'+
  140. ' <p class="weui_toast_content">'+txt+'</p>'+
  141. '</div>'+
  142. '</div>';
  143. $('body').append(s);
  144. }
  145. js.wx.unload=function(){
  146. $('#loadingToastsss').remove();
  147. }
  148. js.loading=function(txt){
  149. this.wx.load(txt);
  150. }
  151. js.unloading=function(){
  152. this.wx.unload();
  153. }
  154. js.wx.msgok=function(txt,fun,ms){
  155. $('#toastssss').remove();
  156. clearTimeout(this.msgtime);
  157. if(txt=='none')return;
  158. if(!ms)ms=3;
  159. var t = winHb()-150;
  160. var s='<div id="toastssss">';
  161. s+='<div class="weui_mask_transparent"></div>';
  162. s+= '<div class="weui_toast" style="top:'+(t*0.5)+'px">';
  163. s+= '<i class="weui_icon_toast"></i>';
  164. s+= '<p class="weui_toast_content">'+txt+'</p>';
  165. s+= '</div>';
  166. s+='</div>';
  167. $('body').append(s);
  168. this.msgtime=setTimeout(function(){
  169. $('#toastssss').remove();
  170. if(typeof(fun)=='function')fun();
  171. }, ms*1000);
  172. }
  173. js.showmenu=function(d){
  174. $('#menulistshow').remove();
  175. var d=js.apply({width:200,top:'50%',renderer:function(){},align:'center',onclick:function(){},oncancel:function(){}},d);
  176. var a=d.data;
  177. if(!a)return;
  178. var h1=$(window).height(),h2=document.body.scrollHeight,s1;
  179. if(h2>h1)h1=h2;
  180. var col='',oix;
  181. var s='<div align="center" id="menulistshow" style="background:rgba(0,0,0,0.6);height:'+h1+'px;width:100%;position:absolute;left:0px;top:0px;z-index:198;" oncontextmenu="return false">';
  182. s+='<div id="menulistshow_s" style="width:'+d.width+'px;margin-top:'+d.top+';position:fixed;-webkit-overflow-scrolling:touch;" class="menulist">';
  183. for(var i=0;i<a.length;i++){
  184. oix = '0';
  185. if(i>0)oix='0.5';
  186. s+='<div oi="'+i+'" style="text-align:'+d.align+';color:'+a[i].color+';border-top:'+oix+'px solid #dddddd">';
  187. s1=d.renderer(a[i]);
  188. if(s1){s+=s1}else{s+=''+a[i].name+'';}
  189. s+='</div>';
  190. }
  191. s+='</div>';
  192. s+='</div>';
  193. $('body').append(s);
  194. var mh = $(window).height();
  195. var l=($(window).width()-d.width)*0.5,o1 = $('#menulistshow_s'),t = (mh-o1.height()-10)*0.5;
  196. if(t<10){
  197. t = 10;
  198. o1.css({height:''+(mh-20)+'px','overflow':'auto'});
  199. }
  200. o1.css({'left':''+l+'px','margin-top':''+t+'px'});
  201. $('#menulistshow div[oi]').click(function(){
  202. var oi=parseFloat($(this).attr('oi'));
  203. d.onclick(a[oi],oi);
  204. });
  205. $('#menulistshow').click(function(){
  206. $(this).remove();
  207. try{d.oncancel();}catch(e){}
  208. });
  209. };
  210. js.wx.actionsheet=function(d){
  211. $('#actionsheetshow').remove();
  212. var d=js.apply({onclick:function(){},oncancel:function(){}},d);
  213. var a=d.data,s='';
  214. if(!a)return;
  215. s+='<div onclick="$(this).remove();" id="actionsheetshow">';
  216. s+='<div class="weui_mask_transition weui_fade_toggle" style="display:block"></div>';
  217. s+='<div class="weui_actionsheet weui_actionsheet_toggle" >';
  218. s+=' <div class="weui_actionsheet_menu">';
  219. for(var i=0;i<a.length;i++){
  220. s+='<div oi="'+i+'" style="color:'+a[i].color+'" class="weui_actionsheet_cell">'+a[i].name+'</div>';
  221. }
  222. s+=' </div>';
  223. s+=' <div class="weui_actionsheet_action"><div class="weui_actionsheet_cell" id="actionsheet_cancel">取消</div></div>';
  224. s+='</div>';
  225. s+='</div>';
  226. $('body').append(s);
  227. $('#actionsheetshow div[oi]').click(function(){
  228. var oi=parseFloat($(this).attr('oi'));
  229. d.onclick(a[oi],oi);
  230. });
  231. $('#actionsheetshow').click(function(){
  232. $(this).remove();
  233. try{d.oncancel();}catch(e){}
  234. });
  235. }
  236. js.isqywx=false;
  237. js.iswxbo=function(){
  238. var bo = true;
  239. var ua = navigator.userAgent.toLowerCase();
  240. if(ua.indexOf('micromessenger')<0)bo=false;
  241. if(bo && ua.indexOf('wxwork')>0)js.isqywx=true;
  242. return bo;
  243. }
  244. js.jssdkcall = function(bo){
  245. }
  246. js.jssdkstate = 0;
  247. js.jssdkwixin = function(qxlist,afe){
  248. if(!js.iswxbo())return js.jssdkcall(false);
  249. //if(js.isqywx)var wxurl = 'https://res.wx.qq.com/open/js/jweixin-1.1.0.js';
  250. var wxurl = 'https://res.wx.qq.com/open/js/jweixin-1.2.0.js';
  251. if(!afe)$.getScript(wxurl, function(){
  252. js.jssdkwixin(qxlist, true);
  253. });
  254. if(!afe)return;
  255. var surl= location.href;
  256. if(!qxlist)qxlist= ['openLocation','getLocation','chooseImage','getLocalImgData','previewImage'];
  257. js.ajax('weixin','getsign',{url:jm.base64encode(surl),agentid:js.request('agentid')},function(ret){
  258. if(!ret.appId)return js.jssdkcall(false);
  259. wx.config({
  260. debug: false,
  261. appId: ret.appId,
  262. timestamp:ret.timestamp,
  263. nonceStr: ret.nonceStr,
  264. signature: ret.signature,
  265. jsApiList:qxlist
  266. });
  267. wx.ready(function(){
  268. if(js.jssdkstate==0)js.jssdkstate = 1;
  269. js.jssdkcall(true);
  270. });
  271. wx.error(function(res){
  272. js.jssdkstate = 2;
  273. });
  274. });
  275. }
  276. /**
  277. * 微信公众号jssdk授权
  278. */
  279. js.jssdkwxgzh = function(qxlist,afe){
  280. if(!js.iswxbo())return js.jssdkcall(false);
  281. var wxurl = 'https://res.wx.qq.com/open/js/jweixin-1.2.0.js';
  282. if(!afe)$.getScript(wxurl, function(){
  283. js.jssdkwxgzh(qxlist, true);
  284. });
  285. if(!afe)return;
  286. var surl= location.href;
  287. if(!qxlist)qxlist= ['openLocation','getLocation','chooseImage','getLocalImgData','previewImage'];
  288. js.ajax('wxgzh','getsign',{url:jm.base64encode(surl)},function(ret){
  289. if(!ret.appId)return js.jssdkcall(false);
  290. wx.config({
  291. debug: false,
  292. appId: ret.appId,
  293. timestamp:ret.timestamp,
  294. nonceStr: ret.nonceStr,
  295. signature: ret.signature,
  296. jsApiList:qxlist
  297. });
  298. wx.ready(function(){
  299. if(js.jssdkstate==0)js.jssdkstate = 1;
  300. js.jssdkcall(true);
  301. });
  302. wx.error(function(res){
  303. js.jssdkstate = 2;
  304. });
  305. });
  306. }
  307. //长按处理
  308. function touchclass(cans){
  309. var me = this;
  310. this.onlongclick = function(){}
  311. this.onclick = function(){}
  312. this.onlongmenu = function(){}
  313. this.initbool = false;
  314. this.islongbool = false;
  315. for(var i in cans)this[i]=cans[i];
  316. this.touchstart=function(o1,evt){
  317. touchnowobj = this;
  318. this.islongbool = false;
  319. if(!this.initbool){
  320. o1.addEventListener('click', function(){
  321. me.onclicks(this, event);
  322. }, false);
  323. }
  324. this.obj = o1;
  325. this.initbool = true;
  326. clearTimeout(this.touchtime);
  327. this.touchtime = setTimeout('touchnowobj=false',1000);
  328. return true;
  329. }
  330. this.ismobile=function(){
  331. var llq = navigator.userAgent;
  332. llq = llq.toLowerCase();
  333. var sarr= ['micromessenger','android','mobile','iphone'],bo=false,i;
  334. for(i=0;i<sarr.length;i++){
  335. if(llq.indexOf(sarr[i])>-1){
  336. bo=true;
  337. break;
  338. }
  339. }
  340. return bo;
  341. }
  342. this.onclicks=function(o1, evt){
  343. var lx = evt.target.nodeName.toLowerCase();
  344. if(!this.islongbool && lx!='a')this.onclick(o1, evt);
  345. }
  346. this.touchstring=function(){
  347. var rnd = 'a'+js.getrand();
  348. touchnowoba[rnd] = this;
  349. var str = ' ontouchstart="return touchnowoba.'+rnd+'.touchstart(this,event)"';
  350. if(!this.ismobile()){
  351. str = ' onmouseover="touchnowoba.'+rnd+'.touchstart(this,event)"';
  352. str+= ' oncontextmenu="touchnowoba.'+rnd+'.onlongclick();return false;"';
  353. }
  354. return str;
  355. }
  356. this.reglongmenu=function(){
  357. touchnowobj = false;
  358. touchnowoba = {};
  359. document.addEventListener('touchstart', function(){
  360. clearTimeout(me.longtapv);
  361. me.longtapv = setTimeout(function(){me.longmenu();},300);
  362. }, false);
  363. document.addEventListener('touchmove', function(){
  364. clearTimeout(me.longtapv);
  365. }, false);
  366. document.addEventListener('touchend', function(){
  367. clearTimeout(me.longtapv);
  368. }, false);
  369. }
  370. this.longmenu = function(){
  371. setTimeout('touchnowobj=false',200);
  372. if(!touchnowobj)return;
  373. touchnowobj.islongbool = true;
  374. touchnowobj.onlongclick();
  375. this.onlongmenu();
  376. }
  377. }