Authored by 陈峰

重构尺码选择框完成

... ... @@ -24,8 +24,6 @@
</div>
</div>
{{/ productList}}
<div class="chose-panel-top"></div>
<div class="chose-panel"></div>
{{# bundleInfo}}
<div class="bundle-bar clearfix">
{{#if @root.isApp}}
... ...
... ... @@ -10,17 +10,10 @@ const isProduction = process.env.NODE_ENV === 'production';
const isTest = process.env.NODE_ENV === 'test';
const domains = {
// api: 'http://api.yoho.cn/',
// service: 'http://service.yoho.cn/',
api: 'http://api-test3.yohops.com:9999/',
service: 'http://service-test3.yohops.com:9999/',
liveApi: 'http://testapi.live.yohops.com:9999/',
singleApi: 'http://api-test3.yohops.com:9999/',
api: 'http://dev-api.yohops.com:9999/',
service: 'http://service-test3.yohops.com:9999/',
// liveApi: 'http://api.live.yoho.cn/',
// singleApi: 'http://single.yoho.cn/',
imSocket: 'wss://imsocket.yohobuy.com:443',
imCs: 'https://imhttp.yohobuy.com/api',
imServer: 'https://imhttp.yohobuy.com/server'
... ...
... ... @@ -10,7 +10,7 @@ var $ = require('yoho-jquery'),
Hammer = require('yoho-hammer'),
tip = require('../plugin/tip'),
loading = require('../plugin/loading'),
chosePanel = require('./chose-panel');
chosePanel = require('common/chose-panel-new');
var $page = $('.gift-advance-page'),
queryString = $.queryString();
... ... @@ -31,27 +31,46 @@ function getProductInfo(skn, promotionId) {
tip.show('网络错误');
return;
}
let html = require('common/chose-panel.hbs')(data);
if (queryString.edit) {
// 删掉页面上原有的pannel
chosePanel.remove();
$(html).appendTo('#chose-panel');
chosePanel.init();
chosePanel.setEditModeWithSknId(skn, true, true);
chosePanel.disableNumEdit();
chosePanel.show('', function() {
window.location.href = '/cart/index/index';
});
} else {
chosePanel.show(html, function() {
window.location.href = '/cart/index/index';
});
}
chosePanel.show({
data,
disableNum: queryString.edit
}).then(result => {
if (result && result.sku) {
let goodData,
url;
if (queryString.edit) {
url = '/cart/index/new/modifyPriceGift';
goodData = {
new_product_sku: result.sku.skuId,
new_product_skn: result.skn,
buy_number: result.buyNum,
selected: true,
promotionId,
isEdit: 1
};
} else {
url = '/cart/index/add';
goodData = {
productSku: result.sku.skuId,
new_product_skn: skn,
buyNumber: result.buyNum,
promotionId
};
}
$.ajax({
method: 'POST',
url: url,
data: goodData
}).done(function(res) {
if (res && res.code === 200) {
window.location.href = '/cart/index/index';
}
}).fail(function() {
tip.show('网络出了点问题~');
});
}
});
}, function() {
tip.show('网络错误');
}).always(function() {
... ...
... ... @@ -8,7 +8,7 @@
let $ = require('yoho-jquery'),
tip = require('plugin/tip'),
chosePanel = require('../chose-panel'),
chosePanel = require('common/chose-panel-new'),
loading = require('plugin/loading'),
dialog = require('plugin/dialog');
... ... @@ -303,35 +303,47 @@ let goodObj = {
}));
},
showEditPannelWithSku(html, id, isSelected, isEditNum, isGift, e) {
showEditPannelWithSku(data, id, isSelected, isEditNum, promotionId, e) {
let self = this;
if (html.length < 2) {
tip.show('出错啦!');
return false;
}
// 删掉页面上原有的pannel
chosePanel.remove();
$(html).appendTo('#chose-panel');
chosePanel.init();
chosePanel.setEditModeWithSknId(id, isSelected, isGift);
if (!isEditNum) {
chosePanel.disableNumEdit();
}
chosePanel.show('', (cartGoodData) => {
$(e.delegateTarget).data('id', cartGoodData.new_product_sku);
let goodNum = parseInt($(e.delegateTarget).find('.good-num').val(), 10);
let max = parseInt($(e.delegateTarget).find('.good-num').data('max'), 10);
if (!$(e.delegateTarget).find('.chk.select').hasClass('checked') && goodNum <= max) {
self.selectGood($(e.delegateTarget).find('.chk.select'));
} else {
self.handle.refreshPage();
chosePanel.show({
data,
disableNum: !isEditNum,
buttonText: '确认'
}).then(result => {
if (result && result.sku) {
let goodData = {
new_product_sku: result.sku.skuId,
new_product_skn: result.skn,
old_product_sku: id,
buy_number: result.buyNum,
selected: isSelected,
promotionId,
isEdit: 1
},
url;
if (promotionId) {
url = '/cart/index/new/modifyPriceGift';
} else {
url = '/cart/index/new/modify';
}
$.ajax({
method: 'POST',
url: url,
data: goodData
}).done(function(res) {
if (res && res.code === 200) {
$(e.delegateTarget).data('id', result.sku.skuId);
if (!$(e.delegateTarget).find('.chk.select').hasClass('checked')) {
self.selectGood($(e.delegateTarget).find('.chk.select'));
} else {
self.handle.refreshPage();
}
}
}).fail(function() {
tip.show('网络出了点问题~');
});
}
});
},
... ... @@ -451,9 +463,7 @@ let goodObj = {
},
type: 'POST',
success: function(data) {
let html = require('common/chose-panel.hbs')(data);
self.showEditPannelWithSku(html, id, isSelected, canEditNum, isGift, e);
self.showEditPannelWithSku(data, id, isSelected, canEditNum, promotionId, e);
},
error: function(err) {
tip.show(err.responseJSON ? err.responseJSON.message : '网络异常');
... ...
... ... @@ -33,6 +33,9 @@ let $yohoPage = $('.yoho-page'),
class ChosePanel {
constructor() {
if (!window.cookie) {
require('../common');
}
this.C_ID = window._ChannelVary[window.cookie('_Channel')];
this._regEvents();
}
... ... @@ -199,6 +202,8 @@ class ChosePanel {
if (selectSku) {
this._resolve({
sku: selectSku,
skn: this.data.cartInfo.productSkn,
productId: this.data.cartInfo.productId,
buyNum: this.buyNum,
modes: this.modes
});
... ...
... ... @@ -10,8 +10,7 @@ let $ = require('yoho-jquery'),
require('common');
let share = require('common/share');
let chosePanelRender = require('common/chose-panel'),
chosePanel = require('cart/chose-panel');
let chosePanel = require('common/chose-panel-new');
let $selectBtn = $('.select-btn'),
$buyNowBtn = $('#bundle-buy-now');
... ... @@ -50,14 +49,17 @@ $selectBtn.on('touchend', function() {
id: self.data('id'),
productSkn: self.data('skn')
}, function(data) {
chosePanelRender(data);
chosePanel.init();
chosePanel.setBundleModeWithSknId(self.data('skn'));
chosePanel.show('', (productData) => {
var product = $('#gskn-' + productData.skn);
product.data('sku', productData.sku);
product.html('颜色:' + productData.color + ' 尺码:' + productData.size);
chosePanel.show({
data,
disableNum: true,
buttonText: '确认'
}).then(result => {
if (result && result.sku) {
let product = $('#gskn-' + self.data('skn'));
product.data('sku', result.sku.skuId);
product.html('颜色:' + result.sku.prop.color.valName + ' 尺码:' + result.sku.prop.size.valName);
}
});
});
});
... ...
... ... @@ -158,7 +158,7 @@ setTimeout(() => {
chosePanel.show({
data: data,
disableNum: productCode
}).then((result) => {
}).then(result => {
$('.cart-bar').show();
if (result && result.sku) {
if (result.modes.tickets) {
... ...
... ... @@ -212,7 +212,7 @@ const formatPromotion = (promo) => {
*/
const procGoodsDetail = (productData, num) => {
let data = {};
let sizeInfo = productProcess.processSizeInfo(productData);
let sizeInfo = productProcess.processSkusInfo(productData);
Object.assign(data, sizeInfo);
data.productSkn = productData.product_skn;
... ...