var coreServer = $("#coreServer").val();
var spiServer = $("#spiServer").val();
var isPC = ($(window).width()>768);
var globalUserData = '';
var GLOBAL_TOKEN = 'X-Token';
var GLOBAL_USER_ID = 0;
var GLOBAL_USER_IDENTITY = 0;//2-会员机构;3-供应商;4-普通机构
var GLOBAL_SHOP_ID = 0;
if(localStorage.getItem('userInfo')){
globalUserData = JSON.parse(localStorage.getItem('userInfo'));
GLOBAL_TOKEN = globalUserData.token;
GLOBAL_USER_ID = globalUserData.userId*1;
GLOBAL_USER_IDENTITY = globalUserData.userIdentity*1;
GLOBAL_SHOP_ID = globalUserData.shopId*1;
if (GLOBAL_USER_ID === 5261 || GLOBAL_USER_ID === 10947 || GLOBAL_USER_ID === 11579) {
GLOBAL_USER_IDENTITY = 1;
}
} else {
var pathname = window.location.pathname;
var weChatLoginFlag = (Number(getBaseCookie("weChatAutoLogin"))===1 || Number(getBaseCookie("weChatAutoLogin"))===2);
if(pathname.indexOf('/product/auth/') === -1 && !weChatLoginFlag ){
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.match(/MicroMessenger/i)) {
// 微信浏览器自动授权登录
var urlForWeChat = 'https://www.caimei365.com/we_chat/redirect_uri.html';
$.get(spiServer+'/user/authorizationLink?mode=1&redirectUri='+urlForWeChat, function(r){
if(r.code===0 && r.data){
setBaseCookie("weChatAutoLogin", 1);
setBeforeUrl();
window.location.href = r.data;
}
});
}
}
}
// 头部
var globalHead = new Vue({
el: '#globalHead',
data: {
loginStatus: false,
userData: {},
classify: [],
headCart: {
cartList: [],
cartCount: 0,
productCount: 0,
priceTotal: 0
},
shopId:'',
userIdentity:'',
articleType: '',
isFiexd:false,
classifyIndex:1,
nav_linkName:''
},
methods: {
changeClassify: function(value){
this.classifyIndex=value;
},
// 初始化分类菜单效果
initClassufyTab: function(){
if(isPC){
setTimeout(function(){
$('#mainClassify').slide({
mainCell:".clsCon",
titCell:".clsTab a",
trigger: "mouseover"
});
$('#mainClassify_1').slide({
mainCell:".tabItem_right",
titCell:".tabItem_lift a",
trigger: "mouseover"
});
$('#mainClassify_2').slide({
mainCell:".tabItem_right",
titCell:".tabItem_lift a",
trigger: "mouseover"
});
$("#mainClassify_2 .tabItem_lift a").eq(0).trigger("mouseover");
$("#mainClassify_1 .tabItem_lift a").eq(0).trigger("mouseover");
},500);
}else{
setTimeout(function(){
$('#mainClassify').slide({
mainCell:".clsCon",
titCell:".clsTab a",
trigger: "click"
});
$('#mainClassify_1').slide({
mainCell:".tabItem_right",
titCell:".tabItem_lift a",
trigger: "click"
});
$('#mainClassify_2').slide({
mainCell:".tabItem_right",
titCell:".tabItem_lift a",
trigger: "click"
});
$("#mainClassify_2 .tabItem_lift a").eq(0).trigger("click");
$("#mainClassify_1 .tabItem_lift a").eq(0).trigger("click");
},500);
}
},
// 头部购物车数据
getHeadCart: function(userId) {
var _self = this;
tokenAjax("get", "/shoppingCart/header/cart", {userId: userId},function (r) {
if (r.code === 0 && r.data) {
_self.headCart.cartList = r.data;
_self.headCart.cartCount = r.data.length;
_self.headCart.productCount = 0;
_self.headCart.priceTotal = 0;
r.data.map(function(item){
_self.headCart.productCount += item.number;
_self.headCart.priceTotal += item.number*item.price;
});
}else if(r.code== -99){
CAIMEI.Storage.clear();
location.href = "/login.html";
}
});
},
goCartsLinkFn:function(){
var _self = this;
if(_self.loginStatus){
window.location.href='/shopping/cart.html';
}else{
window.location.href='/login.html';
}
},
productDetailsFn:function(id){ // 跳转详情
window.location.href='/product-'+id+'.html';
},
DeleteCartProducts:function(id){ // 删除购物车
var _self = this;
ShoppingApi.DeleteCartProducts({userID: this.userData.userId, productIDs: id},function(response){
if(response.code === 0){
_self.getHeadCart(_self.userData.userId);
}else{
CAIMEI.Alert(response.msg,'确定',false);
}
});
},
pageLinkSupplier: function(){//预览商品
window.open('/supplier-'+this.shopId+'.html');
},
// 退出登录
userLogOut: function(){
localStorage.removeItem('userInfo');
delBaseCookie("loginBeforePath");
this.loginStatus = false;
window.location.href = "/index.html";
},
showGlobalMenu: function(){
if(!isPC){
$("#mGlobalMenu").show().find(".cShow").slideDown(500);
}
},
hideGlobalMenu: function(){
if(!isPC){
$("#mGlobalMenu").hide().find(".cShow").hide();
}
}
},
created: function () {
// 判断登录状态
if (globalUserData.token) {
this.loginStatus = true;
this.userData = globalUserData;
var userId = this.userData.userId;
if(userId){
var _self = this;
// 获取头部购物车数据
setTimeout(function(){
_self.getHeadCart(userId);
}, 1000);
}
}
// 信息中心
this.articleType = getUrlParam("type");
},
mounted:function(){
var _self = this;
// 初始化分类菜单效果
this.initClassufyTab();
var userData = JSON.parse(window.localStorage.getItem('userInfo'));
if(userData!=null) {
this.userIdentity = userData.userIdentity;
this.shopId = userData.shopId;
}
if($(window).width() > 1400){
$(window).on('scroll', function() {
var scrollTop = $(this).scrollTop();
if(scrollTop>200){
_self.isFiexd = true;
}else{
_self.isFiexd = false;
}
})
}
console.log('hello')
_self.nav_linkName = decodeURI(CAIMEI.getUrlParam('name'));
if(!_self.nav_linkName || _self.nav_linkName.length === 0 || _self.nav_linkName == "undefined") {
var paramsArr = window.location.pathname.split(".")[0].split("-");
if (paramsArr[0].indexOf('/product/type') >= 0) {
var pageId = paramsArr.length>=1 ? paramsArr[1] : '';
if (pageId*1 === 287) {
_self.nav_linkName = "产品";
} else if (pageId*1 === 286) {
_self.nav_linkName = "仪器";
}
} else if (paramsArr[0].indexOf('/info/center') >= 0){
_self.nav_linkName = "信息平台";
} else if (paramsArr[0].indexOf('/flea-market') >= 0 && (paramsArr.length>=1 && paramsArr[1].indexOf('market') >= 0)){
_self.nav_linkName = "二手市场";
} else if (paramsArr[0].indexOf('/investment') >= 0){
_self.nav_linkName = "品牌招商";
} else if (paramsArr[0].indexOf('/repair') >= 0){
_self.nav_linkName = "维修";
}
}
// _self.nav_linkName = window.localStorage.getItem('name');
setTimeout(function(){
$('.navBox li').each(function () {
var _thisName = $(this).find('a').text();
if(_self.nav_linkName == _thisName){
$(this).find('a').addClass('on')
}
});
},500);
}
});
// 初始化效果
$(function(){
// PC,H5切换时刷新
$(window).resize(function() {
var flag = (isPC && $(window).width()<=768) || (!isPC && $(window).width()>768);
if(flag){
window.location.reload();
}
});
// 导航分类
if(isPC){
jqClickShow(".baseHeadTop .cTab", ".baseHeadTop .cShow");
jqSelect(".jqSelect");
jqHoverShow(".classBtn", "#mainClassify");
}else{
jqMultipleShow("click", ".footLink .list", ".tab", ".con", true);
$('body').on('click', '.baseHeadCenter .mClassBtn',function () {
$('#mainClassify').show();
fixedBody();
}).on('click', '#mainClassify .close,#mainClassify .mClassBtn',function () {
$('#mainClassify').hide();
looseBody();
}).on('click', '#mainClassify',function (e) {
e.stopPropagation();
});
}
// 登录弹窗
function loginAert(content, btnTxt){
$.confirm({
useBootstrap: false,
boxWidth: (isPC?'338px':'74.6vw'),
title: false,
content:'
'+content+'
',
closeIcon: true,
animation: 'opacity',
closeAnimation: 'opacity',
animateFromElement: false,
scrollToPreviousElement: false,
buttons: {
login: {
text: btnTxt,
btnClass: 'btn-confirm-login',
action: function(){
setBeforeUrl();
window.location.href = '/login.html';
}
},
close: {
text: '取消',
btnClass: 'btn-cancel-login'
}
}
});
}
// 去登录弹窗
$('body').on("click", '.toLogin',function () {
//loginAert('你还未登录请登录后再进行购买', '去登录');
setBeforeUrl();
window.location.href = '/login.html';
});
// 退出登录
$('body').on("click", '.toLogOut',function () {
localStorage.removeItem('userInfo');
delBaseCookie("loginBeforePath");
globalHead.loginStatus = false;
window.location.href = "/index.html";
});
// 置顶
$('#scrollTop').on("click", '.toTop',function () {
$("html,body").animate({scrollTop:0},500);
});
// 热线
if(!isPC){
$('#scrollTop').on("click", '.phone',function () {
$('#scrollTop').find('.phoneHover').show();
fixedBody();
}).on("click", '.phoneHover div',function (e) {
e.stopPropagation();
}).on("click", '.phoneHover,.phoneHover .close',function () {
$('#scrollTop').find('.phoneHover').hide();
looseBody();
});
$('body').on("click", '#centerNav .home',function () {
if($('#centerNav').find('.home').hasClass("on")){
$('#centerNav').find('.home').removeClass("on");
$('#centerNav').find('.centerBox').slideUp();
looseBody();
}else{
$('#centerNav').find('.home').addClass("on");
$('#centerNav').find('.centerBox').slideDown();
fixedBody();
}
}).on("click", '#centerNav .wrap',function (e) {
e.stopPropagation();
}).on("click", '#centerNav .centerBox',function () {
$('#centerNav').find('.home').removeClass("on");
$('#centerNav').find('.centerBox').slideUp();
looseBody();
});
}
// 侧边栏滚动判断
$(window).scroll(function () {
if($('body').attr("style") && $('body').attr("style").indexOf('fixed')>0){
return false;
}
var scoll = Math.max($('html').scrollTop(), $('body').scrollTop());
if(scoll >200){
$('#scrollTop').show();
}else {
$('#scrollTop').hide();
}
});
// 顶部搜索框
$('#topSearch').on("click", '.searchBtn', function(){
var type = isPC ? $('#topSearch').find('[data-select]').attr("data-select")*1 : $('#topSearch').find('select').val()*1;
var keyword = $.trim($('#topSearch').find('.keyword').val());
// 商品
if (keyword.length < 2) {
$.confirm({
useBootstrap: false,
boxWidth: (isPC?'300px':'70%'),
title:'提示',
content:'请至少输入两个关键字!',
closeIcon: true,
animation: 'opacity',
closeAnimation: 'opacity',
animateFromElement: false,
buttons: {
close: {
text: '确定',
btnClass: 'btn-confirm'
}
}
});
return false;
}
if (type === 0) {
window.location.href = '/product/list.html?keyword='+encodeURIComponent(keyword);
} else if(type === 1) {
// 供应商
window.location.href = '/supplier/list.html?keyword='+encodeURIComponent(keyword);
} else if (type === 2) {
// 项目仪器
window.location.href = '/equipment/list.html?keyword=' + encodeURIComponent(keyword);
} else{
// 文章
window.location.href = '/info/search.html?keyword=' + encodeURIComponent(keyword);
}
}).on('keyup', '.keyword', function(event) {
// 搜索输入框 按回车键搜索
var keyCode = event.keyCode || event.which;
if(keyCode === 13){
$(this).parents('#topSearch').find('.searchBtn').trigger("click");
}
}).on("click", '.hotKey .word', function(){
// 点击热词 触发搜索
$(this).parents('#topSearch').find('.keyword').val($(this).text());
$(this).parents('#topSearch').find('.searchBtn').trigger("click");
});
// 支付弹框复制标识
$('body').on("click", '.payAlert .copy',function () {
var oInput = document.createElement('textarea');
oInput.value = $(this).parents('.payAlert').find('.no').text();
document.body.appendChild(oInput);
oInput.select(); // 选择对象
document.execCommand("Copy"); // 执行浏览器复制命令
document.body.removeChild(oInput);
CAIMEI.dialog('复制成功');
});
});
/*function uuid() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
s[8] = s[13] = s[18] = s[23] = "-";
return s.join("");
}*/
function setBeforeUrl(){
var baseUrl = window.location.href;
var flag = baseUrl.indexOf('/login.html')>0 || baseUrl.indexOf('/register.html')>0 || baseUrl.indexOf('/we_chat/redirect_uri.html')>0;
if(!flag){
setBaseCookie("loginBeforePath", baseUrl);
}
}
// 公共方法
function setBaseCookie(cname,cvalue,exdays){
if (exdays) {
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname+"="+cvalue+"; path=/; "+expires;
} else {
document.cookie = cname+"="+cvalue+"; path=/";
}
}
function getBaseCookie(cname){
if (document.cookie) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i'+$(options[i]).text()+'';
if($(options[i]).val()===select.val()){
$(this).find("[data-select]").text($(options[i]).text()).attr('data-select',$(options[i]).val());
}
}
$(this).find("ul").html(list);
$(this).find("ul").slideToggle("fast");
}).on("click", selectBox + " li", function(e){
e.stopPropagation();
$(this).parent().prev().attr('data-select',$(this).attr("data-id")).text($(this).text());
$(this).parents("pc").next().val($(this).attr("data-id"));
$(this).parent().slideUp("fast");
}).on("click", function(){
$(selectBox).find("ul").slideUp("fast");
});
}
//解决移动端滚动穿透
function fixedBody(){
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
setTimeout(function(){
document.body.style.cssText += 'position:fixed;top:-'+scrollTop+'px;';
},10);
}
function looseBody() {
var body = document.body;
body.style.position = '';
var top = body.style.top;
document.body.scrollTop = document.documentElement.scrollTop = -parseInt(top);
body.style.top = '';
}
//url参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = decodeURIComponent(window.location.search).substr(1).match(reg);
if (r != null) {
return (r[2])
}
return null;
}
function updateUrlParam(params) {
var loca = window.location;
var baseUrl = loca.origin + loca.pathname + "?";
var query = loca.search.substr(1).toLowerCase();
var queryArr = query.split("&");
var keys = Object.keys(params);
if (keys.length > 0) {
var obj = {};
for (var i = 0; i < queryArr.length; i++) {
queryArr[i] = queryArr[i].split("=");
obj[queryArr[i][0]] = queryArr[i][1]
}
for (var k = 0; k < keys.length; k++) {
var name = keys[k];
var value = params[name];
obj[name.toLowerCase()] = value;
}
var url = baseUrl + JSON.stringify(obj).replace(/["\{\}]/g, "").replace(/\:/g, "=").replace(/\,/g, "&");
return url;
}
}
function tokenAjax(type, url, params, callback, errorBack){
$.ajax({
type: type,
url: spiServer + url,
xhrFields: {
withCredentials: true
},
data: params,
headers:{
'Content-Type': type=='post'?'application/x-www-form-urlencoded':'application/json;charset=utf8',
'X-Token':GLOBAL_TOKEN
},
success : function (res) {
if(res.code === -99){
localStorage.removeItem('userInfo');
delBaseCookie("loginBeforePath");
// window.location.href ='/login.html';
}else{
callback(res);
}
},
error : function (res) {
alertInfo("网络连接超时,请重试!",function (res) {
console.log(res)
});
}
});
}
function setSearchProductList(list, userId, callback) {//处理搜索
var productIdArr = [];
var resultData = [];
list.map(function (item) {
resultData.push({
productId: item.productId,
name: item.name,
image: item.image,
unit: item.unit,
brandName: item.brandName,
priceFlag: item.priceFlag,
priceGrade: item.priceGrade,
actStatus: 0,
priceLoaded: false,
beautyActFlag:item.beautyActFlag
});
// 0公开价格 1不公开价格 2仅对会员机构公开
if (item.priceFlag !== 1) {
productIdArr.push(item.productId)
}
});
if (userId && userId > 0) {
setProductPrice(resultData, productIdArr.join(","), userId, callback);
}else {
setProductPrice(resultData, productIdArr.join(","), 0, callback);
}
return resultData;
}
function setProductPrice(productList, productIds, userId, callback){
$.getJSON(coreServer+"/commodity/price/list",{
userId: userId,
productIds: productIds
}).done(function (r) {
if (r.code === 0 && r.data) {
var priceList = r.data;
productList.map(function(product){
priceList.map(function(item){
if(product.productId*1 === item.productId){
product.shopId = item.shopId;
product.userIdentity = item.userIdentity;
product.price = item.price;
product.originalPrice = item.originalPrice;
product.priceLoaded = true;
product.ladderPriceFlag = item.ladderPriceFlag;
product.actStatus =item.actStatus;
product.promotions =item.promotions;
}
});
});
}
return callback();
}).fail(function(){
return callback();
})
}
// 登录后返回登录前页面
function toBeforePath(){
var loginBeforePath = getBaseCookie("loginBeforePath");
if (loginBeforePath && loginBeforePath!='undefined' && loginBeforePath.indexOf('.html')>0) {
delBaseCookie("loginBeforePath");
window.location.href = loginBeforePath;
}
window.location.href = '/index.html';
}
function toLogin() {//去登录
setBeforeUrl();
window.location.href = '/login.html';
}
function upgrade () { //升级会员
window.location.href='';
}
function toLogOut() {//登出
localStorage.removeItem('userInfo');
delBaseCookie("loginBeforePath");
this.loginStatus = false;
window.location.href = "/index.html";
}
/**
* 至少保留两位小数
* 10 => "10.00"
* @param {number} num
*/
function toFloat(num) {
var temp = String(num).split('.');
if (temp.length === 1 || temp[1].length < 2) {
return Number(num).toFixed(2);
}else{
return Number(num);
}
}
/** 表单输入框校验 */
function verifyHandle(obj){
if ($(obj).is(":hidden")) { return false; }
var v = $.trim($(obj).val()).replace(/\s+/g,"");
var reg = $(obj).attr("rule");
var errorTxt = $(obj).siblings('.errTips').attr("tips");
if ($.trim(v) === '') {
if ($(obj).attr("placeholder") && $(obj).attr("placeholder").indexOf("请输入")>=0) {
errorTxt = $(obj).attr("placeholder").split("请输入")[1]+'不能为空';
} else {
errorTxt = '不能为空';
}
setErrorTxt(obj, errorTxt);
return false;
}else if (typeof reg != "undefined") {
reg = new RegExp(reg);
if (!reg.test(v)) {
setErrorTxt(obj, errorTxt);
return false;
}
}
clearErrorTxt(obj);
}
function setErrorTxt(obj, txt) {
$(obj).parent().addClass("error").find('.checked').removeClass("show");
$(obj).siblings('.errTips').text(txt).addClass("show");
}
function clearErrorTxt(obj) {
$(obj).siblings('.errTips').removeClass("show");
$(obj).parent().removeClass("error").find('.checked').addClass("show");
}
// 提交时验证表单
function verifyForm() {
$("[needverify]:visible").each(function (index, ele) {
if (!$(ele).siblings('.checked').hasClass("show")) {
verifyHandle(ele);
}
});
var len = $('.errTips.show:visible').length;
return (len === 0);
}
// 单个验证表单
function verifyCheack(ele) {
if (!$(ele).siblings('.checked').hasClass("show")) {
verifyHandle(ele);
}
var len = $(ele).siblings('.errTips.show:visible').length;
return (len === 0);
}
// 公共信息提示弹框
function alertInfo(txt,callback) {
$.confirm({
useBootstrap: false,
boxWidth: (isPC?'300px':'70%'),
title:'提示',
content: txt,
closeIcon: true,
animation: 'opacity',
closeAnimation: 'opacity',
animateFromElement: false,
buttons: {
close: {
text: '确定',
btnClass: 'btn-confirm',
action: function () {
callback()
}
}
}
});
}
//公共吐司
function dialog(txt,callback) {
$.confirm({
title: false,
content: txt,
boxWidth: (isPC?'300px':'70%'),
autoClose: 'close|2000',
useBootstrap:false,
buttons: {
close:{
isHidden: true,
action: function () {
callback()
}
}
}
});
}
// 加入购物车
function addShoppingCart(userId, productId, count, callback){
tokenAjax("post", "/shoppingCart/addCart", {
userID: userId,
productID: productId,
productCount: count
},function (res) {
if(res && res.code*1 === 0){
globalHead.getHeadCart(userId);
$.confirm({
useBootstrap: false,
boxWidth: (isPC?'338px':'74.6vw'),
title: false,
content:'商品已成功加入购物车!
当前购物车共'+res.data+'种商品
',
closeIcon: true,
animation: 'opacity',
closeAnimation: 'opacity',
animateFromElement: false,
scrollToPreviousElement: false,
buttons: {
login: {
text: '去结算',
btnClass: 'btn-to-cart',
action: function(){
window.location.href = '/shopping/cart.html';
}
},
close: {
text: '继续购物',
btnClass: 'btn-to-goon',
action: callback?callback():function(){}
}
}
});
} else {
dialog("加入购物车失败!");
}
});
}