595 lines
16 KiB
JavaScript
595 lines
16 KiB
JavaScript
function render (templateId, templateData, target) {
|
|
var html = template(templateId, templateData);
|
|
target.innerHTML += html;
|
|
}
|
|
|
|
function dateFormat (date, fmt) {
|
|
date = new Date(date);
|
|
var o = {
|
|
'M+': date.getMonth() + 1,
|
|
'd+': date.getDate(),
|
|
'h+': date.getHours(),
|
|
'm+': date.getMinutes(),
|
|
's+': date.getSeconds()
|
|
};
|
|
|
|
// 补全0
|
|
function padLeftZero (str) {
|
|
return ('00' + str).substr(str.length);
|
|
}
|
|
|
|
// 年份
|
|
if (/(y+)/.test(fmt)) {
|
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
|
}
|
|
|
|
// 月日时分秒
|
|
for (var k in o) {
|
|
if (new RegExp('(' + k + ')').test(fmt)) {
|
|
var str = o[k] + '';
|
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
|
|
}
|
|
}
|
|
|
|
date = o = padLeftZero = null;
|
|
return fmt;
|
|
}
|
|
|
|
function convert (_url) {
|
|
var patt = /\d+/;
|
|
var num = _url.match(patt);
|
|
var rs = {};
|
|
rs.uid = num[0];
|
|
return rs;
|
|
}
|
|
|
|
// 传递分享信息给客户端,showUrl为分享的页面链接,为空时表示不分享
|
|
// function shareInfo () {
|
|
// var _url = 'https://api.kawayisound.xyz/modules/bonus/fight.html';
|
|
// var res = EnvCheck();
|
|
// if (res == 'test'){
|
|
// _url = 'http://apibeta.kawayisound.xyz/modules/bonus/fight.html';
|
|
// }
|
|
// var info = {
|
|
// title: '轻寻与你一起红',
|
|
// imgUrl: 'https://img.erbanyy.com/qingxunlogo-256.png',
|
|
// desc: '登录即送20红包,每天还有分享红包,邀请红包,分成红包,四重红包大礼等你来拿',
|
|
// showUrl: _url
|
|
// };
|
|
// return JSON.stringify(info);
|
|
// }
|
|
|
|
// 根据域名适配环境
|
|
function EnvCheck () {
|
|
if (window.location.href) {
|
|
var _url = window.location.href;
|
|
var res = _url.match(/beta/);
|
|
if (res) {
|
|
return 'test';
|
|
} else {
|
|
return 'live';
|
|
}
|
|
}
|
|
}
|
|
|
|
// 根据域名判断是本地打开还是服务器打开
|
|
function locateJudge () {
|
|
if (window.location.href) {
|
|
var _url = window.location.href;
|
|
var res = _url.match(/test|localhost/);
|
|
if (res) {
|
|
return '/api';
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取地址栏参数
|
|
function getQueryString () {
|
|
var _url = location.search;
|
|
var theRequest = new Object();
|
|
if (_url.indexOf('?') != -1) {
|
|
var str = _url.substr(1);
|
|
strs = str.split('&');
|
|
for (var i in strs) {
|
|
theRequest[strs[i].split('=')[0]] = decodeURI(strs[i].split('=')[1]);
|
|
}
|
|
}
|
|
return theRequest;
|
|
}
|
|
|
|
// 判断浏览器内核,手机类型
|
|
function checkVersion () {
|
|
var u = navigator.userAgent,
|
|
app = navigator.appVersion;
|
|
return {
|
|
trident: u.indexOf('Trident') > -1, //IE内核
|
|
presto: u.indexOf('Presto') > -1, //opera内核
|
|
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
|
|
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
|
|
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
|
|
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
|
|
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
|
|
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
|
|
iPad: u.indexOf('iPad') > -1, //是否iPad
|
|
webApp: u.indexOf('Safari') > -1, //是否web应该程序,没有头部与底部
|
|
weixin: u.indexOf('MicroMessenger') > -1, //是否微信
|
|
qq: u.match(/\sQQ/i) == " qq", //是否QQ
|
|
tutuApp: u.match('tutuApp'),
|
|
app: u.match('tutuApp') //是否在app内
|
|
};
|
|
}
|
|
|
|
// 图片预加载
|
|
function preloadImage (obj) {
|
|
console.log(obj)
|
|
var loadLength = 0,
|
|
newImages = [];
|
|
for (var i = 0; i < obj.imageArr.length; i++) {
|
|
newImages[i] = new Image();
|
|
newImages[i].src = obj.imageArr[i];
|
|
newImages[i].onload = newImages[i].onerror = function () {
|
|
loadLength++;
|
|
typeof obj.preloadPreFunc === 'function' && obj.preloadPreFunc(loadLength);
|
|
if (loadLength == obj.imageArr.length) {
|
|
typeof obj.doneFunc === 'function' && obj.doneFunc();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// 判断是否在App内
|
|
function isApp () {
|
|
var androidBol = false;
|
|
var osBol = false;
|
|
if (window.androidJsObj && typeof window.androidJsObj === 'object') {
|
|
androidBol = true;
|
|
}
|
|
if (window.webkit) {
|
|
console.log(window.webkit);
|
|
osBol = true;
|
|
}
|
|
return (androidBol || osBol);
|
|
|
|
}
|
|
|
|
function UrlSearch () {
|
|
var name, value;
|
|
var str = location.href;
|
|
var num = str.indexOf("?")
|
|
str = str.substr(num + 1);
|
|
var arr = str.split("&");
|
|
for (var i = 0; i < arr.length; i++) {
|
|
num = arr[i].indexOf("=");
|
|
if (num > 0) {
|
|
name = arr[i].substring(0, num);
|
|
value = arr[i].substr(num + 1);
|
|
this[name] = value;
|
|
}
|
|
}
|
|
return value;
|
|
}
|
|
|
|
function erbanMask (channel, tags, params) {
|
|
//此函数用于一般的轻寻底层面罩
|
|
var browser = checkVersion();
|
|
var env = EnvCheck();
|
|
// params = params? params:0;
|
|
var bol = $.isEmptyObject(params);
|
|
var keyId = "978cd79c98264f836450afda1228762e";
|
|
if (browser.ios) {
|
|
if (env == 'test') {
|
|
keyId = '33f560a83c9c40d465711c0038653ca0'
|
|
}
|
|
console.log('ios_linkedme_keyId:', keyId)
|
|
}
|
|
var jsonStr = '';
|
|
if (!bol) {
|
|
jsonStr = JSON.stringify(params);
|
|
}
|
|
if (!browser.app) {
|
|
$('#mask').css('display', 'flex');
|
|
var linkData = {
|
|
type: env,
|
|
channel: channel,
|
|
tags: tags,
|
|
// ios_custom_url: "https://itunes.apple.com/cn/app/id1252542069?mt=8",
|
|
params: jsonStr
|
|
};
|
|
|
|
linkedme.init(keyId, {
|
|
type: env
|
|
}, null);
|
|
|
|
linkedme.link(linkData, function (err, response) {
|
|
if (err) {
|
|
// 生成深度链接失败,返回错误对象err
|
|
console.log('err:', err);
|
|
} else {
|
|
console.log(response);
|
|
$('#download a').attr("href", response.url);
|
|
$('.download a').attr('href', response.url);
|
|
}
|
|
}, false);
|
|
} else {
|
|
$('#mask').hide();
|
|
}
|
|
}
|
|
|
|
function wxConfig () {
|
|
var wxurl = encodeURIComponent(location.href.split('#')[0]);
|
|
var data = "url=" + wxurl;
|
|
console.log(data);
|
|
$.ajax({
|
|
type: 'GET',
|
|
url: '/wx/config',
|
|
data: data,
|
|
asyc: true,
|
|
success: function (data) {
|
|
if (data.code = 200) {
|
|
wx.config({
|
|
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
|
|
appId: 'wx009d793f92c24eec', // 必填,公众号的唯一标识
|
|
timestamp: data.data.timestamp, // 必填,生成签名的时间戳
|
|
nonceStr: data.data.nonceStr, // 必填,生成签名的随机串
|
|
signature: data.data.signature, // 必填,签名,见附录1
|
|
jsApiList: data.data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
|
|
});
|
|
wx.error(function (res) {
|
|
console.log('config error,msg:' + res);
|
|
});
|
|
}
|
|
},
|
|
error: function (res) {
|
|
console.log('config error,msg:' + res);
|
|
}
|
|
})
|
|
}
|
|
|
|
function refreshWeb () {
|
|
window.location.href = window.location.href;
|
|
}
|
|
|
|
function shareInfo (urlMsg) {
|
|
if (urlMsg) {
|
|
var env = EnvCheck();
|
|
if (env == 'test') {
|
|
return 'http://apibeta.kawayisound.xyz/' + urlMsg;
|
|
} else {
|
|
return 'https://api.kawayisound.xyz/' + urlMsg;
|
|
}
|
|
}
|
|
}
|
|
|
|
function initNav (obj) {
|
|
if ($.isEmptyObject(obj)) {
|
|
return;
|
|
}
|
|
var browser = checkVersion();
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
window.webkit.messageHandlers.initNav.postMessage(obj);
|
|
} else if (browser.android) {
|
|
var json = JSON.stringify(obj);
|
|
window.androidJsObj.initNav(json);
|
|
}
|
|
}
|
|
}
|
|
|
|
var tools = {
|
|
cookieUtils: {
|
|
set: function (key, val, time) {
|
|
var date = new Date();
|
|
var expiresDays = time;
|
|
date.setTime(date.getTime() + expiresDays * 24 * 3600 * 1000);
|
|
document.cookie = key + '=' + val + ';expires=' + date.toGMTString();
|
|
},
|
|
|
|
get: function (key) {
|
|
var getCookie = document.cookie.replace(/[ ]/g, "");
|
|
var arrCookie = getCookie.split(';');
|
|
var val;
|
|
for (var i = 0; i < arrCookie.length; i++) {
|
|
var arr = arrCookie[i].split('=');
|
|
if (key === arr[0]) {
|
|
val = arr[1];
|
|
break;
|
|
}
|
|
}
|
|
return val;
|
|
},
|
|
|
|
delete: function (key) {
|
|
// var date = new Date();
|
|
// date.setTime(date.getTime() - 10000);
|
|
// document.cookie = key + "+v; expires =" + date.toGMTString();
|
|
var date = new Date();
|
|
date.setTime(date.getTime() - 10000);
|
|
var cVal = this.get(key);
|
|
document.cookie = key + "=" + cVal + "; expires =" + date.toGMTString();
|
|
}
|
|
},
|
|
|
|
nativeUtils: {
|
|
jumpAppointPage: function (type, val) {
|
|
// routerType 跳转名称
|
|
// routerVal 跳转需要传的参数
|
|
|
|
var browser = checkVersion();
|
|
var jumpObj = {};
|
|
jumpObj.routerType = routeTypeConstant[type];
|
|
if (val || val === 0) {
|
|
jumpObj.routerVal = val;
|
|
}
|
|
console.log(jumpObj);
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
if (type.indexOf('_') > -1) {
|
|
window.webkit.messageHandlers.jumpAppointPage.postMessage(jumpObj);
|
|
} else {
|
|
if (val) {
|
|
window.webkit.messageHandlers.type.postMessage(val);
|
|
} else {
|
|
window.webkit.messageHandlers.type.postMessage(null);
|
|
}
|
|
}
|
|
} else if (browser.android) {
|
|
if (androidJsObj && typeof androidJsObj === 'object') {
|
|
if (type.indexOf('_') > -1) {
|
|
window.androidJsObj.jumpAppointPage(JSON.stringify(jumpObj));
|
|
} else {
|
|
if (val) {
|
|
window.androidJsObj.type(val);
|
|
} else {
|
|
window.androidJsObj.type();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
getUid: function () {
|
|
var browser = checkVersion();
|
|
console.log(browser);
|
|
var val;
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
val = tools.cookieUtils.get('uid');
|
|
} else if (browser.android) {
|
|
if (androidJsObj && typeof androidJsObj === 'object') {
|
|
val = parseInt(window.androidJsObj.getUid());
|
|
}
|
|
}
|
|
} else {
|
|
var locate = getQueryString();
|
|
if (!locate.uid && !locate.shareUid) {
|
|
val = 901189;
|
|
} else {
|
|
if (locate.shareUid) {
|
|
val = locate.shareUid;
|
|
} else {
|
|
val = locate.uid;
|
|
}
|
|
}
|
|
}
|
|
return val;
|
|
|
|
},
|
|
|
|
getTicket: function () {
|
|
var browser = checkVersion();
|
|
var val;
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
val = window.webkit.messageHandlers.getTicket.postMessage(null);
|
|
} else if (browser.android) {
|
|
if (androidJsObj && typeof androidJsObj === 'object') {
|
|
val = window.androidJsObj.getTicket();
|
|
}
|
|
}
|
|
} else {
|
|
val = 'app外'
|
|
}
|
|
return val;
|
|
},
|
|
getAppVersion: function () {
|
|
var browser = checkVersion();
|
|
var val
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
val = window.webkit.messageHandlers.getAppVersion.postMessage(null);
|
|
} else {
|
|
val = window.androidJsObj.getAppVersion();
|
|
}
|
|
}
|
|
return val
|
|
},
|
|
close: function () {
|
|
var browser = checkVersion();
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
window.webkit.messageHandlers.closeDialogWebView.postMessage(null)
|
|
} else if (browser.android) {
|
|
if (androidJsObj && typeof androidJsObj === 'object') {
|
|
window.androidJsObj.closeDialogWebView()
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
//关闭浏览器
|
|
closeWebView: function () {
|
|
var browser = checkVersion();
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
window.webkit.messageHandlers.closeWebView.postMessage(null);
|
|
} else {
|
|
window.androidJsObj.closeWebView();
|
|
}
|
|
}
|
|
},
|
|
userLoginOut: function () {
|
|
var browser = checkVersion();
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
window.webkit.messageHandlers.userLoginOut.postMessage(null);
|
|
} else if (browser.android && androidJsObj && typeof androidJsObj === 'object') {
|
|
window.androidJsObj.userLoginOut();
|
|
}
|
|
}
|
|
},
|
|
getDeviceInfo: function () {
|
|
var browser = checkVersion();
|
|
var val
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
val = window.webkit.messageHandlers.getDeviceInfo.postMessage(null);
|
|
} else {
|
|
val = window.androidJsObj.getDeviceInfo();
|
|
}
|
|
}
|
|
return val
|
|
},
|
|
getDeviceId: function () {
|
|
var browser = checkVersion();
|
|
var val
|
|
if (browser.app) {
|
|
if (browser.ios) {
|
|
val = window.webkit.messageHandlers.getDeviceId.postMessage(null);
|
|
} else {
|
|
val = window.androidJsObj.getDeviceId();
|
|
}
|
|
}
|
|
return val
|
|
}
|
|
}
|
|
}
|
|
|
|
// 透明loading层
|
|
var $Loading = {
|
|
count: 0,
|
|
isFadeOut: false,
|
|
show: function () {
|
|
this.count++;
|
|
if ($('#loadingToast').length >= 1) {
|
|
if (this.isFadeOut) {
|
|
this.isFadeOut = false;
|
|
$('#loadingToast').stop(true).fadeTo(0, 1);
|
|
}
|
|
} else {
|
|
$('body').append('<div id="loadingToast" style="display: none; position: fixed; left: 0; top: 0; width: 100%; height: 100%; z-index: 9999;"></div>')
|
|
$('#loadingToast').fadeIn(100);
|
|
}
|
|
},
|
|
hide: function () {
|
|
this.count--;
|
|
if (this.count === 0) {
|
|
this.isFadeOut = true;
|
|
$('#loadingToast').fadeOut(200, function () {
|
|
$Loading.isFadeOut = false;
|
|
$(this).remove();
|
|
});
|
|
}
|
|
}
|
|
};
|
|
var requestBaseUrl = locateJudge();
|
|
// ajax
|
|
function request (type, option) {
|
|
return $.ajax({
|
|
type: type,
|
|
url: requestBaseUrl + option.url,
|
|
data: option.data,
|
|
headers: option.headers,
|
|
beforeSend: function (xhr) {
|
|
!option.isHideLoading && $Loading.show();
|
|
},
|
|
success: function (res, status, xhr) {
|
|
!option.isHideLoading && $Loading.hide();
|
|
typeof option.success === 'function' && option.success(res, status, xhr);
|
|
},
|
|
error: function (xhr, status, error) {
|
|
!option.isHideLoading && $Loading.hide();
|
|
typeof option.error === 'function' && option.error(xhr, status, error);
|
|
}
|
|
})
|
|
}
|
|
// ajax get
|
|
function getJSON (option) {
|
|
request('get', option)
|
|
}
|
|
// ajax post
|
|
function postJSON (option) {
|
|
request('post', option);
|
|
}
|
|
|
|
function wb__formatNumber (n) {
|
|
n = n.toString();
|
|
return n[1] ? n : '0' + n;
|
|
}
|
|
|
|
function wb__dateFormat (value, format) { // 时间的转换
|
|
if (!value) return ''
|
|
format = format || 'Y-M-D h:m:s'
|
|
var dateFormat = value
|
|
if (typeof value === 'string') {
|
|
dateFormat = value.match(/\d+-\d+-\d+|\d+\/\d+\/\d+|\d+:\d+:\d+/g).join(" ").replace(/-/g, '/');
|
|
}
|
|
|
|
var date = new Date(dateFormat);
|
|
var formateArr = ['Y', 'M', 'D', 'h', 'm', 's'];
|
|
var dateArr = [];
|
|
|
|
dateArr.push(date.getFullYear());
|
|
dateArr.push(wb__formatNumber(date.getMonth() + 1));
|
|
dateArr.push(wb__formatNumber(date.getDate()));
|
|
|
|
dateArr.push(wb__formatNumber(date.getHours()));
|
|
dateArr.push(wb__formatNumber(date.getMinutes()));
|
|
dateArr.push(wb__formatNumber(date.getSeconds()));
|
|
|
|
for (var i in dateArr) {
|
|
format = format.replace(formateArr[i], dateArr[i]);
|
|
}
|
|
return format;
|
|
}
|
|
|
|
function get_config_adminHandle () {
|
|
var api = locateJudge();
|
|
$.ajax({
|
|
type: 'POST',
|
|
url: api + '/app/getContactInfo',
|
|
data: {
|
|
app: 'qingxun'
|
|
},
|
|
success: function (res) {
|
|
var code = res.code
|
|
var data = res.data
|
|
if (code == 200) {
|
|
var obj = {
|
|
'contactEmail': $('._config_contactEmail'),
|
|
'contactWx': $('._config_contactWx'),
|
|
'qqGroup': $('._config_qqGroup'),
|
|
'qq': $('._config_qq'),
|
|
'mobile': $('._config_mobile'),
|
|
'contactPhone': $('._config_contactPhone'),
|
|
'address': $('._config_address')
|
|
}
|
|
|
|
for (var key in obj) {
|
|
var jqDom = obj[key]
|
|
var val = data[key] || jqDom.html()
|
|
jqDom.html(val)
|
|
|
|
var href = jqDom.attr('href') || ''
|
|
if (href.indexOf('tel:') != -1) {
|
|
jqDom.attr('href', 'tel: ' + val)
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
})
|
|
|
|
} |