Authored by 梁志锋

Merge remote-tracking branch 'origin/master' into master2

Showing 57 changed files with 488 additions and 160 deletions
... ... @@ -26,22 +26,17 @@ const _processListData = (list) => {
let listKey = [];
// console.log(list)
_.forEach(list.data.allList, function(value, index) {
_.forEach(value, function(data) {
data.brandDomain = `${config.siteUrl}/product/shop/${data.brandDomain}`;
});
if (index === '0~9') {
index = '0-9';
} else {
if (index !== '0~9') {
listKey.push(index);
}
// listData.push({
// key: index,
// brands: value
// });
});
listKey.sort();
... ... @@ -49,8 +44,14 @@ const _processListData = (list) => {
listKey.push('0-9');
_.forEach(listKey, function(key) {
let keyName = key;
if (key === '0-9') {
key = '0~9';
}
listData.push({
key: key,
key: keyName,
brands: list.data.allList[key]
});
});
... ...
... ... @@ -507,6 +507,151 @@ const content = [
]
}
]
},
{
id: '5',
content: [
{
bigTitle: 'YOHO!BLK 隐私条款'
},
{
normal: [
{normalData: '欢迎访问YOHO!BLK 网站!我们以本隐私申明声明对访问者隐私保护的许诺。'}
]
},
{
stepTitle: 'YOHO!BLK的信息收集与使用'
},
{
steps: [
{stepData: 'YOHO!BLK收集用户提交的个人识别信息(下称“个人识别信息”), 一旦注册,YOHO!BLK用户即可以建立由一页' +
'或多页网页组成的含有用户信息的用户档案。我们将收集用户发布在其用户档案中的数据,包括但不限于: 会员信息,联系信' +
'息,购物&着装习惯和喜爱品牌(合称为“用户档案信息”),我们使用这些信息来获得用户的统计资料。我们将会用这些统计数' +
'据来给我们的用户分类,以便有针对性地向我们的用户提供新的服务。我们会通过您的邮件地址来通知您这些新的服务。'}
]
},
{
steps: [
{stepData: '我们同样从用户处收集其他非个人识别信息(下称“非个人识别信息”),包括IP地址、集合的用户数据和浏览器' +
'类型。该等数据会被用来管理YOHO!BLK,跟踪使用记录,改进YOHO!BLK的服务。该等非个人识别信息通常被用于下列目的' +
':研究和分析站点的使用情况,订制您浏览的广告和内容,满足您对服务的要求,以及改进我们的服务。出于安全和监管的目的' +
',用户的IP地址将会被记录。'}
]
},
{
steps: [
{stepData: '我们或其商业伙伴可能在YOHO!BLK上不时地进行促销或者抽奖。用户可能会被要求提供个人识别信息,包括姓' +
'名,电子邮件地址或家庭住址。因进行促销或者抽奖而收集个人识别信息时,您将清楚地被告知个人识别信息的收集方以及' +
'适用的隐私政策。'}
]
},
{
stepTitle: 'YOHO!BLK收集信息的共享与披露'
},
{
steps: [
{stepData: '除本隐私政策另有规定,我们不会在未经您同意的情况下在YOHO!BLK及其母公司、子公司或者关联公司(' +
'为本隐私政策之目的,包括遵守本隐私政策的技术提供者)之外泄露您的个人识别信息或者用户档案信息,除非我们认为这' +
'种披露是有必要的:(1)为遵守法律的要求或者回应我们收到的传票、搜查令或者其他法律程序,而不论该等回应是否为适' +
'用法律所要求的;(2)为回应主管政府部门的要求;(3)为了保护公众和服务用户的安全;或者(4)为了维护我们的法律权' +
'利和利益。'},
{stepData: '当我们出售YOHO!BLK或其全部资产时,我们保留向其继任者转让个人识别信息和用户档案信息的权利。'},
{stepData: '我们也可以向某些您明确同意接收其信息的广告合作伙伴转让您的个人识别信息和用户档案信息。因此进行个' +
'人识别信息的收集时,您将清楚地被告知适用的隐私政策。'}
]
},
{
stepTitle: '用户名和密码'
}, {
steps: [
{stepData: 'YOHO!BLK用户账号通过用户创设的密码确保其安全性。您应当对您密码的保密负全部责任。请不要和他人' +
'分享此信息。如果您泄漏了密码,您可能丢失了您的个人识别信息,并且有可能导致对您不利的司法行为。如果您和他人共' +
'享一台电脑,您应该在离开YOHO!BLK时退出系统以保证您的信息不被后来使用该电脑者获取。'},
{stepData: '因此不管任何原因使您的密码安全受到危及,您应该立即通过我们的客服热线:400-889-9646和我们取得联系 。'}
]
},
{
stepTitle: '您的交易行为'
},
{
steps: [
{stepData: '我们跟踪IP地址仅仅只是为了安全的必要。如果我们没有发现任何安全问题,我们会及时删除我们收集到的' +
'IP地址。我们还跟踪全天的页面访问数据。全天页面访问数据被用来反映网站的流量,我们可以为未来的发展制定计划(' +
'例如,增加服务器)。'}
]
},
{
stepTitle: '邮件 / 短信 / 会刊服务'
},
{
steps: [
{stepData: '我们保留通过邮件、短信、邮寄会刊的形式,对本网站注册、购物用户发送订单信息、促销活动等告知服务的' +
'权利。如果您在YOHO!BLK注册、购物,表明您已默示同意接受此项服务。如果您不想接收来自我们的邮件、短信或会刊,' +
'您可以向我们的客服提出退阅申请,并注明您的E-mail地址、手机号或相关地址信息,我们会在收到申请后为您办理退阅。'}
]
},
{
stepTitle: 'Cookies 的使用'
},
{
steps: [
{stepData: '我们使用cookies来储存用户的喜好和记录活动信息以确保用户不会重复收到同样的广告和定制的时事通讯' +
'、广告以及基于浏览器类型和用户档案信息的网页内容。我们不会把在cookies中保存的信息与您在我们网站上提交的任何' +
'个人识别信息相连接。您可以通过设置您的浏览器以接受或者拒绝全部或部分的cookies,或要求在cookies被设置时通知' +
'您。由于每个浏览器是不同的,请查看浏览器的“帮助”菜单来了解如何更改您的cookies选择参数。但是,您应允许来自YO' +
'HO!BLK的cookies以使您可以使用网站的更多的功能。'}
]
},
{
stepTitle: '外部链接'
},
{
steps: [
{stepData: 'YOHO!BLK包含其他网站的链接。但我们不对其他网站上的隐私政策和/或其执行承担责任。当链接到其他网' +
'站时,用户应该阅读该网站贴示的隐私政策。我们的隐私政策仅适用于自YOHO!BLK收集的信息。'}
]
},
{
stepTitle: '第三方广告'
},
{
steps: [
{stepData: '我们可能会通过与第三方合作向用户提供服务。因此,我们可能向该第三方提供您通过YOHO!BLK提交给我们' +
'的个人识别信息和用户档案信息;但该第三方应同意承担与我们相同的责任以保护用户的隐私。另外,在不会披露用户的个' +
'人识别信息和用户档案信息的前提下,我们可以对集合的用户个人识别信息和用户档案进行分析和商业性使用。'}
]
},
{
stepTitle: '安全'
},
{
steps: [
{stepData: '我们会采取合理措施保护存储在我们数据库中的用户个人识别信息和用户档案信息,并且对那些需要履行其' +
'工作职责的雇员,比如我们的客户服务人员和技术人员,获取用户个人识别信息和用户档案信息进行限制。请注意,我们无' +
'法保证用户个人识别信息和用户档案信息的安全性。未授权的登陆或使用、硬件或软件的故障、以及其他因素均可能在任何时' +
'候危及用户个人识别信息的安全性。'}
]
},
{
stepTitle: '隐私政策的变更'
},
{
steps: [
{stepData: '我们可能对本隐私政策不时进行修改。如果我们进行任何修改,我们将在YOHO!BLK主页上发布为期30天的通知' +
'以使用户知道被修改内容的类型以及指示用户审阅更新的隐私政策。如果您在对本隐私政策任何细微修改发布后继续使用网' +
'站,则表示您同意遵守任何该等修改。'}
]
},
{
stepTitle: '联系我们'
},
{
steps: [
{stepData: '如果您就本隐私政策有任何疑问,请与我们客服联系客服热线:400-889-9646。'}
]
}
]
}
];
... ...
... ... @@ -57,6 +57,10 @@ const menuData = ()=> {
text: '退换货政策'
}
]
},
{
id: '5',
text: '服务条款'
}
]
};
... ...
... ... @@ -44,7 +44,6 @@ const favorite = {
* @returns {*}
*/
getFavoriteEditoreial(param) {
param.app_type = 1;
return ServiceAPI.get('guang/api/*/favorite/getUserFavArticleList', param);
},
... ...
... ... @@ -26,13 +26,18 @@ const getMeThumb = () => {
cache: true,
code: 200
}).then(result => {
const obj = _.get(result, 'data.list[0].data[0]', {});
let thumb = {
banner: result.data.list[0].data[0].src,
url: result.data.list[0].data[0].url
if (result.data) {
return {
banner: result.data.list[0].data[0].src,
url: result.data.list[0].data[0].url
};
}
return {
banner: obj.src || '',
url: obj.url || ''
};
return thumb;
});
};
... ...
... ... @@ -96,19 +96,19 @@ const statusMap = {
1: {
value: 1,
valueStr: '备货中',
step: 1,
step: 2,
btns: btnMap.edit
},
2: {
value: 1,
valueStr: '备货中',
step: 1,
step: 2,
btns: btnMap.edit
},
3: {
value: 1,
valueStr: '备货中',
step: 1,
step: 2,
btns: btnMap.edit
},
4: {
... ... @@ -135,9 +135,9 @@ const statusMap = {
// 订单类型为手机的订单
const isMobileOrder = {
3: true,
4: true,
6: true
18: true,
19: true,
21: true
};
// 转换时间戳
... ...
... ... @@ -156,7 +156,6 @@ const _calcStatusRate = (num, total) => {
*/
const submitChange = (data, uid) => {
return returnsAPI.changeSubmitAsync(data, uid).then(result => {
console.log(result);
return result;
});
};
... ... @@ -731,7 +730,6 @@ const getExchangeDetailData = (id, uid) => {
if (result[0] && result[0].data) {
let data = result[0].data;
// console.log(data)
_.forEach(data.goods_list, function(value) {
_.forEach(value.evidence_images, function(list, index) {
value.evidence_images[index] = list.substring(0, list.indexOf('?'));
... ...
... ... @@ -11,7 +11,7 @@
</div>
<div class="brand-info" data-id="{{brandId}}">
<div class="brand-icon">
<img src="{{image brandIco 145 126}}" alt="">
<img src="{{image brandIco 145 126}}" alt="" width="145" height="126">
</div>
<div class="brand-name">
{{brandName}}
... ...
... ... @@ -31,10 +31,13 @@
{{intro}}
</p>
<!--<div class="editorial-tags">-->
<!--<span>户外</span>-->
<!--<span>学院</span>-->
<!--</div>-->
<div class="editorial-tags">
<div class="tags-wrap">
{{#each tags}}
<span>{{name}}</span>
{{/each}}
</div>
</div>
</div>
<div class="fav-cancel">
<span class="iconfont">&#xe614;</span>
... ...
... ... @@ -26,7 +26,8 @@
{{/stateText}}
</div>
<div class="desc">
<span class="name">{{productName}}</span>
<div class="brand-name">{{brandName}}</div>
<div class="product-name">{{productName}}</div>
<p class="price">¥{{round salesPrice 2}}</p>
</div>
... ...
... ... @@ -5,8 +5,8 @@
</div>
<div class="inline-block total-yohocoin">
<div class="current-yohocoin">目前可用YOHO币:<span class="blue">{{num.yohocoin_num}}</span></div>
<div class="left-yohocoin">{{currentYear}}年12月31日即将过期:<span class="blue">{{num.nearExpCoinNum}}</span></div>
<div class="current-yohocoin">目前可用YOHO币:<span class="blue">{{num.yohocoin_num}}</span></div>
<div class="left-yohocoin">{{currentYear}}年12月31日即将过期:<span class="blue">{{num.nearExpCoinNum}}</span></div>
</div>
</div>
{{> currency/nav}}
... ...
... ... @@ -142,7 +142,7 @@
<div class="info">
<p class="good-name">{{productName}}</p>
<p>颜色:{{colorName}}&nbsp;尺码:{{sizeName}}</p>
<p>×{{num}}</p>
<p>{{num}}</p>
</div>
</div>
<div class="common special-border">
... ...
... ... @@ -2,6 +2,6 @@
<li class="content">下单时间:{{createTime}}</li>
<li class="content">订单编号:{{orderCode}}</li>
{{#if showMobile}}
<li class="content">手机订单</li>
<li class="content"><span class="iconfont">&#xe62f;</span>手机订单</li>
{{/if}}
</ul>
... ...
... ... @@ -42,7 +42,7 @@ const getProductBaseAsync = (productId, uid, skn) => {
*/
const getUserIsFav = (uid, productId) => {
return SingleAPI.get('', {
method: 'app.favorite.isFavorite',
method: 'app.favorite.isFavoriteNew',
id: productId,
uid: uid,
type: 'product'
... ...
... ... @@ -729,9 +729,9 @@ const setSizeData = (sizeInfo) => {
// 判断是否显示参考尺码
if (boyReference && (gender === 1 || gender === 3) && showReference) {
sizes.push(value.boyReferSize.referenceName || ' ');
sizes.push(_.get(value, 'boyReferSize.referenceName', ' '));
} else if (girlReference && (gender === 2 || gender === 3) && showReference) {
sizes.push(value.girlReferSize.referenceName || ' ');
sizes.push(_.get(value, 'girlReferSize.referenceName', ' '));
} else {
if (sizeTable.thead[1] && showReference) {
sizeTable.thead[1] = {};
... ... @@ -756,7 +756,7 @@ const setSizeData = (sizeInfo) => {
size.param = sizeTable;
}
if (_.isEmpty(_.get(size, 'param.sizeTable.tbody', ''))) {
if (_.isEmpty(_.get(size, 'param.tbody', ''))) {
return {}; // 无尺码信息则不显示该块
}
... ...
... ... @@ -18,7 +18,11 @@
{{!-- 新品banner --}}
{{#if banner.src}}
<div class="banner-img"
style="height: 200px;margin-bottom:30px; background:url({{image banner.src 850 200 2}}) no-repeat top center;"></div>
style="height: 200px;margin-bottom:30px;">
<a href="{{banner.url}}" target="_blank">
<img src="{{image banner.src 850 200 1}}" alt="{{banner.alt}}" width="850" height="200">
</a>
</div>
{{/if}}
{{!-- 已选中条件 --}}
{{#filter}}
... ...
... ... @@ -43,7 +43,7 @@
{{#each newProducts}}
<div class="goods-info" data-skn="{{productSkn}}">
<a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank">
<img class="lazy thumb" data-original="{{src}}" style="display: block;">
<img class="lazy thumb" data-original="{{src}}">
</a>
<div class="desc">
<a class="name" href="" target="_blank">{{productName}}</a>
... ... @@ -56,7 +56,7 @@
{{/if}}
{{#if hotProducts}}
<div class="center-content clearfix hot-product-warp">
<div class="center-content clearfix new-arrival-warp">
<div class="floor-header clearfix">
<h2 class="floor-title en-size">HOT</h2>
<p class="floor-title zh-size">人气单品</p>
... ... @@ -67,7 +67,7 @@
{{#each hotProducts}}
<div class="goods-info" data-skn="{{productSkn}}">
<a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank">
<img class="lazy thumb" data-original="{{src}}" style="display: block;">
<img class="lazy thumb" data-original="{{src}}">
</a>
<div class="desc-cover"></div>
<div class="desc">
... ...
... ... @@ -88,7 +88,7 @@
</div>
<div class="brand-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn large cancel">取消</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
</div>
... ... @@ -180,7 +180,7 @@
</div>
<div class="style-btns">
<span class="btn disable large confirm">确定</span>
<span class="btn large cancel">取消</span>
<span class="btn white large cancel">取消</span>
</div>
</div>
{{/if}}
... ...
... ... @@ -3,7 +3,7 @@
<div class="goods" data-id="{{productId}}" data-url="{{url}}">
<div class="goods-img">
<a href="{{url}}" target="_blank">
<img class="lazy" data-original="{{image defaultImages 263 344}}" width="263" height="344" alt="">
<img class="lazy" data-original="{{image defaultImages 267 354}}" width="267" height="354" alt="">
</a>
</div>
{{#if showBrand}}
... ... @@ -22,7 +22,7 @@
</div>
<div class="goods-list hide">
{{#each goodsList}}
<i data-url="{{url}}">{{image imagesUrl 256 343}}</i>
<i data-url="{{url}}">{{image imagesUrl 267 354}}</i>
{{/each}}
</div>
</div>
... ...
... ... @@ -32,7 +32,7 @@ const online = (req, res, next) => {
_.forEach(promotion, p => {
if (p.promotion === 'YOHO币') {
coin = parseInt(parseFloat(p.promotionAmount.substring(2, p.promotionAmount.length)) * 100);
coin = parseInt(parseFloat(p.promotionAmount.substring(2, p.promotionAmount.length)) * 100, 10);
}
});
... ... @@ -111,7 +111,7 @@ const callback = (req, res) => {
_.forEach(promotion, p => {
if (p.promotion === 'YOHO币') {
coin = _.toNumber(p.promotionAmount.substring(2, p.promotionAmount.length)) * 100;
coin = parseInt(parseFloat(p.promotionAmount.substring(2, p.promotionAmount.length)) * 100, 10);
}
});
... ...
... ... @@ -8,15 +8,15 @@
</div>
<div class="footer">
<span class="desc pay-notice left">{{../username}}如果<span class="blue">2小时</span>内您无法完成付款,系统会将您的订单取消</span>
<span id="order-detail-ctrl" class="right order-detail-ctrl shrink">
<em>展开详情</em>
<span id="order-detail-ctrl" class="right order-detail-ctrl">
<em>收起详情</em>
<i class="iconfont down">&#xe616;</i>
<i class="iconfont up">&#xe617;</i>
</span>
</div>
</div>
<div class="order-detail hide">
<div class="order-detail">
<div class="row">
<div class="item">
<span class="label"> 收货地址:</span>
... ...
... ... @@ -93,7 +93,7 @@ exports.createPagination = function(pagination, options) {
// ========= Previous Button ===============
if (page - 1) {
n = page - 1;
template = template + '<a href="?page=' + n + queryParams + '">' + leftText + '</a>';
template = template + '<a class="pre-page" href="?page=' + n + queryParams + '">' + leftText + '</a>';
}
// ========= Page Numbers Middle ===============
... ... @@ -159,7 +159,7 @@ exports.createPagination = function(pagination, options) {
// ========= Next page ===============
if (pageCount - page) {
n = page + 1;
template = template + '<a href="?page=' + n + queryParams + '">' + rightText + '</a>';
template = template + '<a class="next-page" href="?page=' + n + queryParams + '">' + rightText + '</a>';
}
template = template + '</div>';
... ...
... ... @@ -13,6 +13,8 @@ module.exports = (req, res, next) => {
let refer = '';
if (req.method === 'GET') {
refer = req.getUrl();
} else {
refer = req.get('Referer');
}
... ...
... ... @@ -3,6 +3,6 @@
<div class="tips">
<span class="tip">哎呀,您访问的页面走丢了...</span>
<span class="tips-english">404 File Not Found, Sorry</span>
<span>建议您:<a href="javascript:location.reload()">刷新该网页/ </a><a href="javascript:history.go(-1)">返回上一页/</a> <a href="">去首页看看</a></span>
<span>建议您:<a href="javascript:location.reload()">刷新该网页/ </a><a href="javascript:history.go(-1)">返回上一页/</a> <a href="http://www.yohoblk.com">去首页看看</a></span>
</div>
</div>
\ No newline at end of file
... ...
... ... @@ -3,6 +3,6 @@
<div class="tips">
<span class="tip">哎呀,程序出错了...</span>
<span class="tips-english">500-Server Internal Error</span>
<span>建议您:<a href="javascript:location.reload()">刷新该网页/ </a><a href="javascript:history.go(-1)">返回上一页/</a> <a href="">去首页看看</a></span>
<span>建议您:<a href="javascript:location.reload()">刷新该网页/ </a><a href="javascript:history.go(-1)">返回上一页/</a> <a href="http://www.yohoblk.com">去首页看看</a></span>
</div>
</div>
\ No newline at end of file
... ...
... ... @@ -94,7 +94,7 @@ $('#collect-btn').click(function() {
new _alert(data.message).show();
$this.toggleClass('collected');
} else if (data.code === 400) {
window.location.href = 'http://www.yohobuy.com/passport/login';
window.location.href = 'http://www.yohoblk.com/passport/login';
} else {
new _alert(data.message).show();
}
... ... @@ -144,7 +144,7 @@ function comment() {
// clear comment-text
$('#comment-info').val('').keyup();
} else if (data.code === 400) {
window.location.href = 'http://www.yohobuy.com/passport/login';
window.location.href = 'http://www.yohoblk.com/passport/login';
} else {
new _alert(data.message).show();
}
... ... @@ -174,13 +174,16 @@ $('#comment-info').keyup(function() {
if (len === 0) {
$wordCountTip.html('');
$commentBtn.removeClass('able');
$commentBtn.addClass('disable');
} else {
if (len - MAX_COMMENTS_WORDS <= 0) {
showTxt = '还可以输入' + (MAX_COMMENTS_WORDS - len) + '字';
$commentBtn.removeClass('disable');
$commentBtn.addClass('able');
} else {
showTxt = '已超过<span class="exceed-count">' + (len - MAX_COMMENTS_WORDS) + '</span>字';
$commentBtn.removeClass('able');
$commentBtn.addClass('disable');
}
}
... ... @@ -251,3 +254,5 @@ if ($('.chapter-left').find('a').text() === '') {
if ($('.chapter-right').find('a').text() === '') {
$('.chapter-right').hide();
}
$('.comments-list').find('li:last').css('border-bottom', 'none');
... ...
... ... @@ -144,6 +144,11 @@ function bindSizeEvent() {
var id = $this.data('size');
var $s = $this.closest('.group.size').find('.size-text');
if ($this.hasClass('disable')) {
return false;
}
$this.parent().find('.active').removeClass('active');
$this.addClass('active');
... ...
... ... @@ -2,6 +2,8 @@ var dialog = require('../../plugins/dialog');
var _dialog = dialog.Dialog;
var _alert = dialog.Alert;
var validate = require('../../me/order/validation');
require('../../common/foreach-polyfill');
... ... @@ -29,10 +31,26 @@ function getTpl(data) {
}
// 取消订单
function cancelOrder(code, onCancel) {
function cancelOrder(code, onCancel, w) {
var $checked = $('.reason .row .checked');
var reason = $checked.next('.reason-text').text();
var reasonId = $checked.parent().data('value');
var pass = true;
if (reason === '其它' || reason === '其他') {
reason = $checked.siblings('.input').val();
pass = validate.start('#other-reason', {
maxLength: 50,
errMsg: '原因最多50个字符'
});
}
if (!pass) {
return false;
}
w.close();
$.ajax({
url: '/me/cancelOrder',
... ... @@ -82,8 +100,7 @@ function showDiaglog(tpl, code, onCancel) {
btnClass: ['confirm'],
name: '确定并取消订单',
cb: function() {
cancelOrder(code, onCancel);
tip.close();
cancelOrder(code, onCancel, tip);
}
},
{
... ... @@ -104,7 +121,7 @@ function showDiaglog(tpl, code, onCancel) {
var $ele = $(ele);
var $input = $('.cancel-dialog .reason input');
if (checked && $ele.parent('.other').length) {
if (checked && $ele.hasClass('other')) {
$input.prop('disabled', false);
$input.focus();
} else {
... ... @@ -131,6 +148,13 @@ function getCancelReason(code, onCancel) {
if (idx === 0) {
d[0].checked = true;
}
d.forEach(function(r) {
if (r.reason === '其他' || r.reason === '其它') {
r.isOther = true;
}
});
reasons.push({
subReasons: d
});
... ...
... ... @@ -272,7 +272,11 @@ $applyBtn.click(function() {
var $tip = $applyBtn.siblings('.apply-tip'),
param = packApplyInfo();
if (!param) {
if ($(this).hasClass('disable')) {
return;
}
if (!param || !param.goods) {
$tip.removeClass('hide');
return;
} else {
... ...
... ... @@ -59,6 +59,15 @@ function changeThumb($dom) {
}
}
function chooseDefaultSize() {
var $item = $sizeList.not('.hide').children();
if ($colorItem && $colorItem.length === 1 &&
$item && $item.length === 1) {
$item.trigger('click');
}
}
function getBuyProduct() {
var sku;
... ... @@ -324,3 +333,5 @@ $sizeInfo.on('click', '.show-img', function() {
btns: []
}).show();
});
chooseDefaultSize(); // 如果size只有一个则默认选中
... ...
... ... @@ -324,7 +324,7 @@ var YohoListPage = {
},
openStyleMulit: function() {
$('.style-btns', this.rootDoc).removeClass('hide');
$('.style-btns', this.rootDoc).show();
$('.style-body .input-radio', this.rootDoc).check({
type: 'checkbox'
});
... ... @@ -333,7 +333,7 @@ var YohoListPage = {
},
closeStyleMulit: function() {
$('.style-btns', this.rootDoc).addClass('hide');
$('.style-btns', this.rootDoc).hide();
$('.style-body .input-radio', this.rootDoc).check('unCheckAll');
$('.style-body .input-radio', this.rootDoc).check({
type: 'radio'
... ...
... ... @@ -343,15 +343,23 @@ Cart = {
content: msg,
cb: function() {
dialog.close();
Util.ajax({
// 未使用Util.ajax统一处理,此处需要特殊处理
$.ajax({
url: '/shopping/cart/product/send_to_favorite',
type: 'POST',
data: {skuList: JSON.stringify(products)},
success: function(res) {
Util.refreshCart(res, function() {
Stepper.init();
});
data: {skuList: JSON.stringify(products)}
}).then(function(res) {
// 未登录情况下跳转登录页
if (res.code === 400) {
location.href = res.data.refer;
return;
}
Util.refreshCart(res, function() {
Stepper.init();
});
});
}
}).show();
... ...
... ... @@ -248,7 +248,7 @@ $('.print-price-radio').check({
group: 'print-price',
onChange: function(el, checked, value) {
if (checked) {
$printPrice.isPrintPrice = value === 1 ? 'Y' : 'N';
$printPrice.printPrice = value === 1 ? 'Y' : 'N';
}
}
});
... ...
.brand-text-box {
$size: 18px;
$size: 14px;
$line-height: 1.8;
$lines-to-show: 3;
... ... @@ -13,7 +13,7 @@
h4 {
height: 18px;
line-height: 18px;
padding-right: 10px;
padding-right: 20px;
display: -webkit-box;
font-size: 16px;
font-weight: bold;
... ... @@ -26,7 +26,7 @@
display: -webkit-box;
height: calc($size*$line-height*$lines-to-show);
margin: 25px 0;
padding-right: 25px;
padding-right: 20px;
font-size: $size;
line-height: $line-height;
overflow: hidden;
... ...
... ... @@ -33,7 +33,7 @@
min-height: 50px;
padding: $space;
position: absolute;
bottom: 2px;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
color: #fff;
font-size: 14px;
... ...
... ... @@ -25,7 +25,7 @@
@extend .cursor-pointer;
padding-bottom: 3px;
border-bottom: 1px solid #000;
border-bottom: 2px solid #000;
&.top {
line-height: 30px;
... ...
... ... @@ -51,7 +51,6 @@
margin: 15px 0;
padding-right: $space;
font-size: $size;
font-weight: bold;
line-height: $line-height;
overflow: hidden;
-webkit-line-clamp: $lines-to-show;
... ...
... ... @@ -26,7 +26,7 @@
&:hover {
height: 50px;
> * {
> a {
color: #9a9a9a;
}
... ... @@ -62,6 +62,10 @@
float: left;
padding: 0 2px;
margin: 0 12px;
> a:hover {
color: #9a9a9a;
}
}
.tag-phone,
... ... @@ -264,6 +268,10 @@
.cur > a {
color: #1b1b1b;
}
li:hover > a {
color: #1b1b1b;
}
}
.main-logo {
... ... @@ -308,7 +316,9 @@
li:hover > a {
display: inline-block;
height: 40px;
border-bottom: 2px solid #fff;
color: #219dd6;
/* border-bottom: 2px solid #fff; */
}
}
... ... @@ -399,7 +409,7 @@
dl {
float: left;
height: 330px;
height: 384px;
line-height: 1;
box-sizing: border-box;
border-left: 1px solid #eee;
... ... @@ -412,7 +422,7 @@
> * {
width: 230px;
height: 35px;
height: 40px;
}
a {
... ...
div.blk-pagination {
.blk-pagination {
width: 500px;
padding: 0;
text-align: center;
... ... @@ -6,11 +6,11 @@ div.blk-pagination {
a {
display: inline-block;
font-size: 14px;
line-height: 22px;
padding: 0 9px;
line-height: 28px;
width: 26px;
height: 26px;
&:first-child {
padding: 0 5px;
margin-right: 10px;
border: 1px solid #333;
... ... @@ -22,7 +22,6 @@ div.blk-pagination {
}
&:last-child {
padding: 0 5px;
margin-left: 10px;
border: 1px solid #333;
... ... @@ -40,7 +39,11 @@ div.blk-pagination {
}
i {
font-size: 14px;
line-height: 22px;
font-size: 12px;
}
.pre-page,
.next-page {
line-height: 24px;
}
}
... ...
... ... @@ -7,6 +7,11 @@
a {
text-decoration: none;
color: #666;
}
a:hover {
color: #1b1b1b;
}
}
... ...
... ... @@ -21,8 +21,6 @@
img {
width: 100%;
height: 100%;
margin-top: -1px;
margin-left: 0.1px;
}
}
... ... @@ -35,7 +33,7 @@
}
&.cur .icon-round {
color: #1d1d1d;
color: #1b1b1b;
font-weight: bold;
}
}
... ...
... ... @@ -448,12 +448,20 @@
text-align: center;
color: #fff;
font-size: 14px;
background: #999;
background: #000;
cursor: pointer;
&:hover {
/* &:hover {
background: #000;
}
}*/
}
.disable {
background: #999;
}
.able {
background: #000;
}
.comments-wrap {
... ...
... ... @@ -242,7 +242,7 @@
img {
float: left;
width: 70px;
height: 90px;
height: 70px;
margin-right: 10px;
}
... ...
... ... @@ -97,14 +97,18 @@
height: 18px;
line-height: 18px;
}
}
.editorial-tags {
position: absolute;
bottom: 0;
.tags-wrap {
position: relative;
height: 25px;
overflow: hidden;
}
span {
background-color: #bbb;
color: #fff;
... ... @@ -112,6 +116,7 @@
padding: 5px 10px;
font-size: 14px;
margin-right: 10px;
margin-bottom: 5px;
}
}
... ... @@ -128,8 +133,6 @@
margin-right: 30px;
color: #999;
}
}
}
}
... ...
.favorite-products {
margin-top: 20px;
.products-cates {
font-size: 14px;
background-color: #eee;
... ... @@ -14,7 +12,6 @@
a {
color: #bbb;
}
}
.label.focus {
... ... @@ -28,7 +25,6 @@
}
.product-list {
margin: 0 -10px;
padding-bottom: 30px;
border-bottom: 1px solid #eee;
... ... @@ -86,13 +82,28 @@
padding: 0 15px;
}
.brand-name {
padding: 10px 0;
font-size: 14px;
font-weight: 700;
}
.product-name {
padding: 5px 0;
font-size: 14px;
}
.price {
padding: 13px;
font-size: 14px;
}
.thumb {
width: 216px;
height: 293px;
}
.tool-area {
text-align: center;
margin-top: 15px;
height: 26px;
... ... @@ -103,7 +114,6 @@
color: #666;
border-color: #666;
}
}
}
... ... @@ -122,5 +132,4 @@
}
}
}
}
... ...
... ... @@ -57,7 +57,7 @@
}
&.cancel-dialog {
min-width: 490px;
min-width: 660px;
* {
text-align: left;
... ... @@ -79,22 +79,32 @@
.tip-item {
height: $space;
margin-bottom: $smallSpace;
line-height: $space;
font-size: $normalSize;
}
.radio {
color: #ccc !important;
&.checked {
color: #1b1b1b !important;
}
}
.row {
height: $bigSpace;
line-height: $bigSpace;
&.other {
.other {
width: 90%;
p {
width: 20%;
}
input {
height: 25px;
width: 30%;
width: 50%;
padding: 5px;
}
}
... ...
... ... @@ -123,12 +123,13 @@
}
.good-info {
width: 377px;
height: 154px;
display: inline-block;
box-sizing: border-box;
border: 1px solid $borderColor;
border-top: none;
font-weight: normal;
width: 377px;
.iconfont {
font-weight: normal;
... ...
... ... @@ -230,6 +230,12 @@
color: #fff;
border-color: #1b1b1b;
}
&.disable {
background-color: #d1d1d1;
color: #fff;
cursor: not-allowed;
}
}
}
}
... ...
... ... @@ -193,6 +193,7 @@
.remark {
padding-bottom: 15px;
line-height: 2;
}
.evidence-img {
... ...
... ... @@ -31,7 +31,7 @@
.nano > .nano-pane {
background: #eee;
position: absolute;
width: 5px;
width: 3px;
right: 0;
top: 0;
bottom: 0;
... ...
.product-item-page {
.brand-fav.coll {
color: #fc0d1b !important;
}
.thumbs {
width: 596px;
height: 643px;
... ...
.yoho-product-list {
@import "order-area";
font-size: 14px;
.btn {
... ... @@ -10,10 +11,12 @@
.left {
width: 250px;
}
.right {
width: 850px;
}
}
.input-radio {
padding: 10px 1px;
cursor: pointer;
... ... @@ -21,6 +24,17 @@
white-space: nowrap;
overflow: hidden;
.radio {
margin-left: 0;
font-size: 14px;
display: inline-block;
color: #999;
}
.checked {
color: #1b1b1b;
}
.round-color {
width: 22px;
height: 21px;
... ... @@ -35,14 +49,10 @@
}
}
}
.input-radio span {
margin-left: 0;
font-size: 14px;
display: inline-block;
}
.input-radio label {
font-size: 14px;
font-weight: 700;
font-weight: normal;
margin-left: 10px;
cursor: pointer;
}
... ... @@ -50,9 +60,11 @@
.input-radio label.round-color {
margin-left: 0;
}
.blank-div {
height: 70px;
}
.title {
font-size: 14px;
font-weight: 700;
... ... @@ -69,6 +81,7 @@
max-height: 240px;
overflow-y: auto;
}
.style-body {
max-height: 240px;
overflow-y: auto;
... ... @@ -90,8 +103,10 @@
color: #111;
}
}
.brand-body {
margin: 5px 0;
.brand-search {
border: 0;
background-color: #eae9e9;
... ... @@ -102,10 +117,12 @@
font-weight: 700;
}
}
.brand-letter-items {
margin: 15px 0;
font-size: 12px;
font-weight: bolder;
span {
padding: 5px 0;
margin: 5px 11px 5px 0;
... ... @@ -123,26 +140,36 @@
cursor: pointer;
}
}
.brand-btns,
.style-btns {
text-align: center;
margin-top: 10px;
display: none;
height: 38px;
.btn {
margin: 0 10px;
width: auto;
padding: 0 42px;
float: left;
}
.btn.cancel {
float: right;
}
}
.btn {
display: inline-block;
}
.btn.large {
height: 38px;
line-height: 38px;
font-size: 14px;
}
.price-btns {
.price-btns {
.price-input {
background-color: #eee;
width: 72px;
... ... @@ -175,6 +202,7 @@
margin-left: 4px;
}
}
.yoho-ui-accordion {
h3 {
font-size: 14px;
... ... @@ -185,12 +213,14 @@
display: block;
cursor: pointer;
position: relative;
.ui-accordion-header-icon {
position: absolute;
right: 0.5em;
top: 50%;
margin-top: -20px;
}
.ui-accordion-header-icon:after {
font-family: "iconfont" !important;
display: inline-block;
... ... @@ -205,6 +235,7 @@
content: "\e617";
}
}
> .body {
padding: 10px 0;
border-bottom: 1px solid #eee;
... ... @@ -224,7 +255,7 @@
label.cancel {
float: right;
color: #878787;
margin: 22px 20px 0 0;
margin: 27px 20px 0 0;
cursor: pointer;
}
... ... @@ -270,12 +301,11 @@
}
.goods-area {
margin: 0 -12px;
position: relative;
.goods {
margin: 10px 0;
margin: 10px 0 26px;
padding: 10px;
float: left;
text-align: center;
... ... @@ -294,8 +324,8 @@
.goods-img {
position: relative;
overflow: hidden;
width: 265px;
height: 344px;
width: 267px;
height: 354px;
img {
margin: 0;
... ... @@ -312,8 +342,9 @@
color: #fff;
}
}
.goods-name {
padding: 10px;
padding: 4px 10px 10px;
width: 265px;
overflow: hidden;
text-overflow: ellipsis;
... ... @@ -350,7 +381,7 @@
}
.goods-img-list {
margin: 2px 13px;
margin: 2px 10px;
float: left;
.goods-img-col {
... ... @@ -363,7 +394,6 @@
margin: 8px 0;
cursor: pointer;
}
}
}
}
... ... @@ -386,7 +416,6 @@
}
.yoho-list-empty {
height: 800px;
.tip-search {
... ...
... ... @@ -38,6 +38,7 @@
.iconfont.up {
top: -2px;
}
.iconfont.down {
top: 8px;
}
... ... @@ -50,9 +51,11 @@
.order-page {
height: 24px;
line-height: 24px;
margin-top: 12px;
margin-top: 14px;
float: right;
label {
line-height: 24px;
color: #1b1b1b;
font-weight: 700;
display: inline-block;
... ... @@ -80,5 +83,13 @@
color: #878787;
border: 2px solid #878787;
}
.page.page-next {
line-height: 20px;
}
.page.page-pre {
line-height: 20px;
}
}
}
... ...
... ... @@ -89,26 +89,30 @@ $hoverColor: #379ed6;
width: 342px;
padding-left: 42px;
font-size: 12px;
}
.brand-name {
display: block;
font-size: 18px;
font-weight: bold;
line-height: 50px;
.brand-name {
display: block;
font-size: 18px;
font-weight: bold;
line-height: 50px;
overflow: hidden;
text-overflow: ellipsis !important;
white-space: nowrap !important;
max-width: 300px;
}
overflow: hidden;
text-overflow: ellipsis !important;
white-space: nowrap !important;
max-width: 300px;
.size {
margin-bottom: 13px;
&:hover {
color: #379ed6;
}
}
.published-at {
margin-bottom: 13px;
}
.size {
margin-bottom: 13px;
}
.published-at {
margin-bottom: 13px;
}
.pro-name {
... ... @@ -117,6 +121,7 @@ $hoverColor: #379ed6;
word-wrap: break-word;
margin-bottom: 5px;
overflow: hidden;
:hover {
cursor: pointer;
color: #379ed6;
... ... @@ -124,7 +129,7 @@ $hoverColor: #379ed6;
}
.pro-name > a {
height: 100%;
height: 36px;
display: block;
line-height: 18px;
}
... ... @@ -260,10 +265,8 @@ $hoverColor: #379ed6;
}
}
.action {
&:hover {
cursor: pointer;
color: #379ed6;
}
.action:hover {
cursor: pointer;
color: #379ed6;
}
}
... ...
... ... @@ -30,7 +30,15 @@ $fontColor: #616161;
font-size: 14px;
cursor: pointer;
/* 默认情况为收起状态 箭头方向为上 */
.up {
display: none;
}
.down {
display: inline-block;
}
/* 默认情况为展开状态 箭头方向为下 */
&.shrink {
.up {
... ... @@ -42,14 +50,6 @@ $fontColor: #616161;
}
}
.up {
display: none;
}
.down {
display: inline-block;
}
.iconfont {
font-size: 12px;
margin-left: 10px;
... ...
... ... @@ -4,10 +4,19 @@
{{# reasons}}
<div class="row">
{{# subReasons}}
<p data-value="{{id}}">
{{#if isOther}}
<br>
{{/if}}
<p data-value="{{id}}" {{#if isOther}}class="other"{{/if}}>
<span class="iconfont raido {{#if checked}}checked{{/if}}">{{#if checked}}&#xe603;{{^}}&#xe604;{{/if}}</span>
<span class="reason-text">{{reason}}</span>
{{#if isOther}}
<input type="text" class="input" id="other-reason" placeholder="50个字符以内">
{{/if}}
</p>
{{#if isOther}}
<br>
{{/if}}
{{/ subReasons}}
</div>
{{/ reasons}}
... ...
... ... @@ -2,7 +2,7 @@
{{#goodsList}}
<div class="{{#unless @first}}hide{{/unless}} size-list" data-index="{{@index}}">
{{#sizeList}}
<span data-size="{{sizeName}}" data-sku="{{productSku}}" data-id="{{goodsId}}">{{sizeName}}</span>
<span data-size="{{sizeName}}" data-sku="{{productSku}}" data-id="{{goodsId}}" {{#unless storageNumber}}class="disable"{{/unless}}>{{sizeName}}</span>
{{/sizeList}}
</div>
{{/goodsList}}
... ...