Authored by htoooth

fix remove file

/**
* Created by yoho on 2017-01-05.
*/
var $ = require('yoho-jquery'),
dialog = require('../common/dialog'),
Alert = dialog.Alert,
CART_ITEM_DEL_URL = '/cart/cart/remove',
CART_ITEM_FAV_URL = '/cart/cart/fav',
cartItemNumChg,
cartListTpl = require('mix/cart/cart-list.hbs');
// 设置全选按钮的状态
function isCheckAll() {
var isAllCheck = true;
$('[data-role=pitem] [data-role=cart-item-check]').each(function() {
var $chk = $(this);
// 有一个没选中,跳出循环
if (!$(this).hasClass('cart-item-checked') && !$chk.data('tipnostore')) {
isAllCheck = false;
return false;
}
});
if (isAllCheck) {
// 头部全选
$('.cart-title .cart-item-check').addClass('cart-item-checked');
// 底部全选
$('#cbSelAllGoods').addClass('cart-item-checked');
}
}
// 预售商品是否全选
function isPreCheckAll() {
var isAllCheck = true;
$('[data-role=advance] [data-role=pitem] [data-role=cart-item-check]').each(function() {
var $chk = $(this);
// 有一个没选中,跳出循环
if (!$(this).hasClass('cart-item-checked') && !$chk.data('tipnostore')) {
isAllCheck = false;
return false;
}
});
if (isAllCheck) {
// 头部全选
$('.pre-sell-title .cart-item-check').addClass('cart-item-checked');
}
}
// 普通商品是否全选
function isOrdCheckAll() {
var isAllCheck = true;
$('[data-role=ordinary] [data-role=pitem] [data-role=cart-item-check]').each(function() {
var $chk = $(this);
// 有一个没选中,跳出循环
if (!$(this).hasClass('cart-item-checked') && !$chk.data('tipnostore')) {
isAllCheck = false;
return false;
}
});
if (isAllCheck) {
$('.ord-sell-title .cart-item-check').addClass('cart-item-checked');
}
}
// 判断商品是否已收藏,是否全选
function isCheckFav() {
var pidArray = [];
var $sellBox = $('.cart-table .pre-sell-box');
$sellBox.each(function() {
pidArray.push($(this).data('pid'));
});
$.ajax({
type: 'POST',
url: '/cart/cart/checkFav',
data: {
pidList: pidArray.join(',')
}
}).done(function(result) {
$.each(result.data, function(pid, obj) {
if (obj.code !== 200) {
return false;
}
if (obj.data) {
$sellBox.each(function() {
if (String($(this).data('pid')) === String(pid)) {
$(this).find('.cart-col-btn').addClass('has-col-btn').html('已收藏');
return false;
}
});
}
});
});
}
// 初始化全选,是否收藏等
function cartInit() {
var $itemChecked = $('[data-role=pitem] .cart-item-checked');
if ($itemChecked.length === 0) {
$('#Y_SubmitBtn').addClass('btn-account-disable');
}
$('#Y_CartSelectDialog .side-img-dd').each(function() {
$(this).slider2({
shownum: 5,
isCircle: true
});
});
isCheckAll();
isPreCheckAll();
isOrdCheckAll();
isCheckFav();
}
function refreshCart(data) {
$('#Y_CartListWrap').html(cartListTpl(data));
cartInit();
}
// checkbox提交ajax
function choiceOut(items) {
var skuList = $.isArray(items) ? items : [items];
var hasPromotion = false;
$.each(skuList, function(idx, it) {
if (it.promotion_id) {
hasPromotion = true;
return false;
}
});
return $.ajax({
type: 'POST',
dataType: 'json',
url: '/cart/cart/select',
data: {
skuList: JSON.stringify(skuList),
hasPromotion: hasPromotion
},
beforeSend: function() {
$('.loading').show();
}
}).then(function(d) {
if (d.code === 200) {
// window.history.go(0);
refreshCart(d.data);
}
}).always(function() {
$('.loading').hide();
});
}
/*
* 1. 删除购物车商品,把删除的商品移入cookie中
* 2. 移到收藏夹
* data: 数据
* tpe: true - 删除,默认 移入收藏夹
*/
function cartItemDel(items, type, cookieList, isReFav) {
var selList = $.isArray(items) ? items : [items];
var hasPromotion = false;
$.each(selList, function(idx, it) {
if (it.promotion_id) {
hasPromotion = true;
return false;
}
});
return $.ajax({
type: 'POST',
dataType: 'json',
url: type === true ? CART_ITEM_DEL_URL : CART_ITEM_FAV_URL,
data: {
skuList: JSON.stringify(selList),
hasPromotion: hasPromotion,
cartDelList: JSON.stringify(cookieList),
isReFav: isReFav || false
},
beforeSend: function() {
$('.loading').show();
}
}).then(function(d) {
if (d.code === 200) {
/* if (cookieList) {
window.setCookie('cart-del-list', JSON.stringify(cookieList), {
domain: '.yohobuy.com',
path: '/'
});
}*/
// window.history.go(0);
refreshCart(d.data);
} else if (d.code === 300) {
new Alert(d.message).show();
} else if (d.code === 403) {
if (d.data.url) {
window.location = d.data.url;
}
}
}).always(function() {
$('.loading').hide();
});
}
// 购物车商品增减
cartItemNumChg = (function() {
var countBusy = false; // 保证一次只请求完成前不能再次发起
return function(data) {
if (countBusy) {
return;
}
countBusy = true;
return $.ajax({
type: 'POST',
dataType: 'json',
url: '/cart/cart/modifyNum',
data: data
}).then(function(d) {
if (d.code === 200) {
// window.history.go(0);
refreshCart(d.data);
} else {
new Alert(d.message === '' ? '加入购物车失败哦~~' : d.message).show();
}
countBusy = false;
});
};
}());
function getProductInfo(pid, skn) {
return $.ajax({
type: 'GET',
url: '/cart/cart/getProductData', // '/product/item/getProductInfo',
data: {
productId: pid,
skn: skn
}
}).done(function(res) {
return res;
});
}
// 加入购物车,弹出框中加入购物车
function addcart(data, cookieList) {
return $.ajax({
type: 'POST',
url: '/cart/cart/add',
data: data
}).then(function(d) {
if (d.code === 200) {
// window.history.go(0);
refreshCart(d.data);
if (cookieList) {
window.setCookie('cart-del-list', JSON.stringify(cookieList), {
domain: '.yohobuy.com',
path: '/'
});
}
} else {
new Alert(!d.message ? '加入购物车失败哦~~' : d.message).show();
}
});
}
function parseProductInfo(productInfo, defaultInfo) {
var index = 0;
var colors;
var colorsLen;
var color;
// 前端处理后的集合
var filterSet = [];
var sizeIdx;
var curColor;
var curSize;
var hasActiveColor = false;
var defaultColor = defaultInfo.color;
var defaultSize = defaultInfo.size;
var defaultImg;
// 没有res.code
if (productInfo.colors) {
// 获取成功
colors = productInfo.colors;
colorsLen = colors.length;
for (index; index < colorsLen; index++) {
color = colors[index];
// 迭代每一种颜色
filterSet.push({
pid: productInfo.productId,
skn: productInfo.skn,
name: color.name,
src: color.src,
focus: color.focus,
title: color.title,
sizes: color.size,
pic: color.thumbs[0].shower,
selectable: color.total > 0
});
}
}
// 默认选中用户选择的sku,若已售罄或下架,则选中列表中第一个非售罄的sku
for (index = 0; index < filterSet.length; index++) {
curColor = filterSet[index];
if (!hasActiveColor && String(curColor.name) === String(defaultInfo.color)) {
curColor.active = true;
curColor.hasActiveColor = hasActiveColor = true;
defaultImg = curColor.pic;
}
curSize = curColor.sizes;
for (sizeIdx = 0; sizeIdx < curSize.length; sizeIdx++) {
if (curColor.hasActiveColor && curSize[sizeIdx].sku === defaultInfo.sku) {
// console.log(curSize[sizeIdx]);
curSize[sizeIdx].sizeActive = true;
break;
}
}
}
// 若无对应颜色,则选中第一个颜色
if (!hasActiveColor) {
filterSet[0].active = true;
defaultColor = filterSet[0].color;
defaultImg = filterSet[0].pic;
}
return {
skn: productInfo.skn,
colors: filterSet,
defaultColor: defaultColor,
defaultSize: defaultSize,
defaultImg: defaultImg
};
}
function updateCartItem(newSku, oldSku) {
return $.ajax({
type: 'POST',
url: '/cart/cart/updateProduct',
data: {
swapData: JSON.stringify([{
buy_number: '1',
selected: 'Y',
new_product_sku: newSku,
old_product_sku: oldSku
}])
}
}).then(function(d) {
if (d.code === 200) {
// window.history.go(0);
refreshCart(d.data);
} else {
new Alert(d.message === '' ? '修改商品失败哦~~' : d.message).show();
}
});
}
function updateCartGiftItem(promotionId, newSkn, newSku) {
return $.ajax({
type: 'POST',
url: '/cart/cart/swapGift',
data: {
promotionId: promotionId,
newSkn: newSkn,
newSku: newSku
}
}).then(function(d) {
if (d.code === 200) {
// window.history.go(0);
refreshCart(d.data);
} else {
new Alert(d.message === '' ? '修改商品失败哦~~' : d.message).show();
}
});
}
function getProductByPromotionId(promotionId) {
return $.ajax({
type: 'GET',
url: '/cart/cart/queryPromotionGift',
data: {
promotionId: promotionId
}
}).done(function(res) {
return res;
});
}
function getFineProduct(page) {
return $.ajax({
type: 'GET',
dataType: 'json',
url: '/cart/cart/recommendProduct',
data: {
page: page
}
}).then(function(d) {
// 为您优选埋点
/* if ($obj.hasClass('givePoint')) {
$.each(d.data.item, function(key, val) {
PRDID.push(val.id);
});
window.givePoint({
'REC_POSE': 120003,
'PRD_ID': PRDID.join(','),
'PRD_NUM': d.data.item.length,
'ACTION_ID': 0,
'page_num': page && page.page ? page.page : 1
});
$('.givePoint ul a').unbind('click').bind('click', function() {
window.givePoint({
'REC_POSE': 120003,
'PRD_ID': $(this).closest('li').find('.btn_view_s').data('id'),
'PRD_NUM': $(this).closest('li').index() + 1,
'ACTION_ID': 1,
'page_num': page && page.page ? page.page : 1
});
return true;
});
}*/
return d;
});
}
function getTogetherProduct(page) {
// var PRDID = [];
return $.ajax({
type: 'GET',
dataType: 'json',
url: '/cart/cart/togetherProduct',
data: page
}).then(function(d) {
return d;
/* if (d.code === 200 && d.data.item.length > 0) {
$obj.html(' ');
togetherProductStr = togetherProductTemplate(d.data);
$obj.append($(togetherProductStr));
$('#orderProduct li:last').addClass('end');
$('.gift').removeClass('none');
//为您优选埋点
if ($obj.hasClass('givePoint')) {
$.each(d.data.item, function(key, val) {
PRDID.push(val.id);
});
window.givePoint({
'REC_POSE': 120003,
'PRD_ID': PRDID.join(','),
'PRD_NUM': d.data.item.length,
'ACTION_ID': 0,
'page_num': page && page.page ? page.page : 1
});
$('.givePoint ul a').unbind('click').bind('click', function() {
window.givePoint({
'REC_POSE': 120003,
'PRD_ID': $(this).closest('li').find('.btn_view_s').data('id'),
'PRD_NUM': $(this).closest('li').index() + 1,
'ACTION_ID': 1,
'page_num': page && page.page ? page.page : 1
});
return true;
});
}
}*/
});
}
function productCollect(pid, isCancel) {
return $.ajax({
type: 'POST',
dataType: 'json',
url: '/product/item/togglecollect',
data: {
productId: pid,
type: isCancel ? 'cancel' : 'add'
}
});
}
function showMDialog(id) {
$(id).show();
$('body').addClass('mmodal-body');
}
function hideMDialog(id) {
$(id).hide();
$('body').removeClass('mmodal-body');
}
// 关闭按钮
$('body').on('click', '[data-role=mdialog] [data-role=mdialog-close]', function() {
hideMDialog($(this).closest('[data-role=mdialog]'));
});
module.exports = {
addcart: addcart,
getProductInfo: getProductInfo,
choiceOut: choiceOut,
cartItemDel: cartItemDel,
cartItemNumChg: cartItemNumChg,
parseProductInfo: parseProductInfo,
updateCartItem: updateCartItem,
updateCartGiftItem: updateCartGiftItem,
getProductByPromotionId: getProductByPromotionId,
getFineProduct: getFineProduct,
getTogetherProduct: getTogetherProduct,
showMDialog: showMDialog,
hideMDialog: hideMDialog,
productCollect: productCollect,
cartInit: cartInit
};
... ...