Authored by 梁志锋

Merge branch 'develop/wap' of http://git.dev.yoho.cn/web/yohobuy into develop/wap

... ... @@ -11,7 +11,7 @@ var $ = require('jquery'),
var productId = $('#productId').val();
var skn = $('#preferenceUrl').val().split('?')[1].split('&')[0].split('=')[1],
var skn = $('#productSkn').val(),
productCode = $('#limitProductCode').val();
$('#likeBtn').on('touchstart', function() {
... ...
... ... @@ -256,9 +256,11 @@ $basicBtnC:#eb0313;
}
.limit-sale {
height: 48px;
position: absolute;
right: 84px;
top: 24px;
top: 50%;
margin-top: -24px;
color: #d0021b;
border: 2PX solid #d0021b;
background-color: #fff;
... ...
... ... @@ -3,12 +3,12 @@
color: #444;
.top {
font-size: 0.6rem;
height: 2rem;
line-height: 2.2rem;
margin-bottom: 0.1rem;
font-size: 24px;
height: 80px;
line-height: 88px;
margin-bottom: 4px;
background-color: #fff;
padding: 0.2rem 0 0.2rem 0.5rem;
padding: 8px 0 8px 20px;
div {
... ... @@ -16,9 +16,9 @@
display: inline-block;
float: left;
img {
width: 1.5rem;
width: 60px;
position: relative;
top: 0.25rem;
top: 10px;
}
}
... ... @@ -31,60 +31,62 @@
.detail {
background-color: #fff;
padding: 0.6rem 0.8rem;
border-bottom: 1px solid #e6e6e6;
padding: 24px 32px;
border-bottom: 1PX solid #e6e6e6;
margin-bottom: 1rem;
.name {
font-size: 0.9rem;
margin-bottom: 0.5rem;
font-size: 36px;
margin-bottom: 20px;
}
.sale-info {
height: 1rem;
line-height: 1rem;
height: 40px;
line-height: 40px;
}
.price {
font-size: 0.8rem;
font-size: 32px;
color: #d0021b;
float: left;
}
.date {
font-size: 0.6rem;
font-size: 24px;
float: right;
.text {
position: relative;
top: 0.08rem;
top: 3.2px;
}
}
}
.goodDesc {
margin-top: 1rem;
padding: 0.5rem;
border-top: 1px solid #e6e6e6;
padding: 20px;
border-top: 1PX solid #e6e6e6;
background-color: #fff;
p {
font-size: 0.6rem;
line-height: 1rem;
font-size: 24px;
line-height: 40px;
text-indent: 2em;
}
img {
margin: 0.3rem 0;
margin: 12px 0;
max-width: 100%;
}
}
.bottom {
background-color: #fff;
padding: 0.5rem 2rem 2rem 2rem;
height: 3rem;
width: 12rem;
padding: 20px 80px 80px 80px;
height: 120px;
width: 480px;
margin: 0 auto;
.logo {
width: 100;
height: 2.5rem;
height: 100px;
background-image: resolve('logo-bottom.png');
background-size: 100%;
... ... @@ -93,11 +95,11 @@
}
.btn {
font-size: 0.8rem;
font-size: 32px;
background-color: #fff;
border: 1px solid #444;
border-radius: 0.2rem;
padding: 0.3rem 0.6rem;
border: 1PX solid #444;
border-radius: 8px;
padding: 12px 24px;
}
.btn:active {
... ... @@ -115,7 +117,7 @@
.right {
width: 60%;
font-size: 0.65rem;
font-size: 26px;
span {
display: block;
... ...
... ... @@ -35,6 +35,7 @@
background-color: #fff;
padding: 0.6rem 0.8rem;
border-bottom: 1px solid #e6e6e6;
margin-bottom: 1rem;
.name {
font-size: 0.9rem;
... ... @@ -62,15 +63,19 @@
}
.goodDesc {
margin-top: 1rem;
padding: 0.5rem;
border-top: 1px solid #e6e6e6;
background-color: #fff;
p {
font-size: 0.6rem;
line-height: 1rem;
text-indent: 2em;
}
img {
margin: 0.3rem 0;
max-width: 100%;
}
}
... ...
... ... @@ -287,9 +287,11 @@ $basicBtnC:#eb0313;
}
.limit-sale {
height: pxToRem(48px);
position: absolute;
right: pxToRem(84px);
top: pxToRem(24px);
top: 50%;
margin-top: pxToRem(-24px);
color: #d0021b;
border: 2px solid #d0021b;
background-color: #fff;
... ...
... ... @@ -35,6 +35,7 @@
background-color: #fff;
padding: 0.6rem 0.8rem;
border-bottom: 1px solid #e6e6e6;
margin-bottom: 1rem;
.name {
font-size: 0.9rem;
... ... @@ -62,7 +63,6 @@
}
.goodDesc {
margin-top: 1rem;
padding: 0.5rem;
border-top: 1px solid #e6e6e6;
background-color: #fff;
... ... @@ -70,10 +70,12 @@
p {
font-size: 0.6rem;
line-height: 1rem;
text-indent: 2em;
}
img {
margin: 0.3rem 0;
max-width: 100%;
}
}
... ...
{{!-- APP 如何获得限购码 --}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>如何获得限购码</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta http-equiv="cleartype" content="on">
<meta content="telephone=no" name="format-detection" />
<script type="text/javascript">
(function(doc, win) {
var docEl = doc.documentElement;
(function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) {
return;
}
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
}());
})(document, window);
</script>
<style>
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video, .yoho-header .nav-back, .yoho-header .nav-home, .yoho-header .nav-btn {
margin: 0;
padding: 0;
border: 0;
font: inherit;
font-size: 100%;
vertical-align: baseline;
}
html {
line-height: 1;
}
ol, ul {
list-style: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
caption, th, td {
text-align: left;
font-weight: normal;
vertical-align: middle;
}
q, blockquote {
quotes: none;
}
q:before, q:after, blockquote:before, blockquote:after {
content: "";
content: none;
}
a img {
border: none;
}
article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary, .yoho-header .nav-back, .yoho-header .nav-home, .yoho-header .nav-btn {
display: block;
}
/*Reset End*/
.clearfix:after{
content: '';
display: table;
clear: both;
}
* {
-webkit-tap-highlight-color: rgba(0,0,0,0);
-moz-tap-highlight-color: rgba(0,0,0,0);
tap-highlight-color: rgba(0,0,0,0);
}
html, body {
font-family: helvetica,Arial,"黑体";
width: 100%;
font-size: 12PX;
line-height: 1.4;
}
button, input, select, textarea {
font-size: 100%;
margin: 0;
}
img {
max-width: 100%;
display: block;
border: 0;
margin: 0 auto;
}
a {
text-decoration: none;
outline: none;
color: #000
}
a:link, a:visited, a:hover, a:actived{
color: #000;
}
*:focus {
outline: none;
}
.hide {
display: none;
}
.overflow-hidden {
overflow: hidden;
}
@font-face {
font-family: "iconfont";
src: url('../font/iconfont.eot'); /* IE9*/
src: url('../font/iconfont.eot?#iefix') format('embedded-opentype'),
url('../font/iconfont.woff') format('woff'),
url('../font/iconfont.ttf') format('truetype'),
url('../font/iconfont.svg#iconfont') format('svg'); /* iOS 4.1- */
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16PX;
font-style: normal;
text-decoration: none;
-webkit-font-smoothing: antialiased;
-webkit-text-stroke-width: 0.2PX;
-moz-osx-font-smoothing: grayscale;
}
.limit-help-page{
padding: 0.7rem;
color: #444;
}
.limit-help-page h2{
font-size: 0.75rem;
font-weight: bold;
}
.limit-help-page .method{
display: block;
width: 2.3rem;
height: 0.875rem;
line-height: 0.9rem;
background-color: #444;
color: #fff;
border-radius: 0.5rem;
text-align: center;
margin: 0.5rem 0;
}
.limit-help-page li{
font-size: 0.6rem;
}
.limit-help-page .intro-img{
width: 100%;
height: 5.5rem;
background-size: 100%;
background-repeat: no-repeat;
margin: 0.5rem 0;
}
.limit-help-page .method-1 li:nth-child(1) .intro-img{
background-image: url('../assets/img/product/help/1.png');
}
.limit-help-page .method-1 li:nth-child(2) .intro-img{
background-image: url('../assets/img/product/help/2.png');
}
.limit-help-page .method-1 li:nth-child(3) .intro-img{
background-image: url('../assets/img/product/help/3.png');
}
.limit-help-page .method-2 li:nth-child(1) .intro-img{
background-image: url('../assets/img/product/help/4.png');
}
.limit-help-page .method-2 li:nth-child(2) .intro-img{
background-image: url('../assets/img/product/help/5.png');
}
.limit-help-page .method-2 li:nth-child(3) .intro-img{
background-image: url('../assets/img/product/help/6.png');
}
.limit-help-page .method-2 li:nth-child(4) .intro-img{
background-image: url('../assets/img/product/help/7.png');
}
.limit-help-page .how li:nth-child(1) .intro-img{
background-image: url('../assets/img/product/help/8.png');
}
.limit-help-page .how li:nth-child(2) .intro-img{
background-image: url('../assets/img/product/help/9.png');
margin-bottom: 0;
}
</style>
</head>
<body>
<div class="limit-help-page yoho-page">
<ul class="method-2">
<li>1.在限定发售详情页点击参加排队赢取限购码图标。
<div class="intro-img"></div>
</li>
<li>2.进入限定发售排队页面,点击参加排队。
<div class="intro-img"></div>
</li>
<li>3.排队成功后凭排队序列号作为抽奖凭证,等待开奖时间。
<div class="intro-img"></div>
</li>
<li>4.开奖后,排队页面会公布中奖名单,限购码会直接发送至账户。
<div class="intro-img"></div>
</li>
</ul>
<h2>查看和使用限购码</h2>
<ul class="how">
<li>1.从个人中心进入我的限购码页面,可查看所获取的限购码。
<div class="intro-img"></div>
</li>
<li>2.商品开售后,可凭此限购码购买对应商品。
<div class="intro-img"></div>
</li>
</ul>
</div>
</body>
</html>
... ...
... ... @@ -24,8 +24,19 @@
padding: 0;
font-family: helvetica,Arial,"黑体";
}
div {
padding: 0.7rem
body {
background-color: #ccc;
}
.container {
padding: 0.7rem;
background-color: #fff;
}
.row {
border-bottom: 1px solid #b4b4b4;
padding-bottom: 0.2rem;
}
.block {
margin-bottom: 0.5rem
}
p {
font-size: 0.7rem;
... ... @@ -33,32 +44,32 @@
margin: 0.3rem 0;
line-height: 1rem;
}
span {
font-weight: bold;
}
</style>
</head>
<body>
<div>
<p>
<span>介绍:</span>
限购码是指用于删除商品的一种权利,达到一定条件即可获得。
</p>
<p>
<span>优势:</span>
限定商品购买权
</p>
<p>
<span>用户:</span>
Yoho!Buy有货忠实用户
</p>
<p>
<span>如何使用:</span>
相关商品开放购买的时候,页面会出现使用限购码的按钮,点击购买即可。
<br>
限购码对应的商品是唯一的,一个码只可买一个商品。
</p>
<div class="container">
<p> 1.当稀缺商品上架,同一用户账号在一定时间段内,仅支持购买1件该商品。 </p>
<p> 2.可通过分享或其他活动获得该商品的限购码,每个商品仅可获得1次限购码。 </p>
<p> 3.若下单未付款导致交易取消,不会扣限购额度。已付款状态下,无论是否退款则扣除限购额度。 </p>
<br>
<div class="block">
<p class="row">
Q:限购码可以送给我的朋友吗?
</p>
<p>
A:限购码不可赠送,只能自己账号使用。可以把活动告诉朋友,参与即可获得限购码。
</p>
</div>
<div>
<p class="row">
Q:下单发现买错码数了,取消订单后我还能再买吗?
</p>
<p>
A:尚未付款的订单取消后,可以再次购买。
</p>
</div>
</div>
</body>
</html>
... ...
... ... @@ -177,6 +177,8 @@
<input id="preferenceUrl" type="hidden" value="{{preferenceUrl}}">
{{/if}}
<input id="productSkn" type="hidden" value="{{productSkn}}">
{{#loginUrl}}
<input type="hidden" name="loginUrl" id="loginUrl" value="{{.}}">
{{/loginUrl}}
... ...
... ... @@ -59,6 +59,8 @@ class SideModel
// 如果存在子菜单,就输出子菜单
if (isset($value['sub']) && !empty($value['sub'])) {
unset($group[$groupKey]['url']);
$subs = array(
array(
'textCn' => $group[$groupKey]['textCn'],
... ...
... ... @@ -169,6 +169,8 @@ class DetailModel
$result['preferenceUrl'] = Helpers::url('/product/detail/preference', array('productSkn' => $baseInfo['erpProductId'], 'brandId' => $baseInfo['brand']['id']), '');
}
$result['productSkn'] = $baseInfo['erpProductId'];
// 商品信息
if (!empty($baseInfo['goodsList'])) {
$colorGroup = array();
... ... @@ -214,10 +216,10 @@ class DetailModel
'sizeNum' => $size['goodsSizeStorageNum'],
);
$sizeName = $size['sizeName'];
// 所有尺码列表,赋值用于前端展示默认尺码的时候 判断出没有库存则显示灰色
$allSizeList[$sizeName] = empty($allSizeList[$sizeName]['storage'])
? array('storage' => $size['goodsSizeStorageNum'], 'id' => $size['id'])
$allSizeList[$sizeName] = empty($allSizeList[$sizeName]['storage'])
? array('storage' => $size['goodsSizeStorageNum'], 'id' => $size['id'])
: $allSizeList[$sizeName];
$colorStorageNum += intval($size['goodsSizeStorageNum']);
$colorStorageGroup[ $value['productSkc'] ][$sizeName] = intval($size['goodsSizeStorageNum']);
... ... @@ -239,7 +241,7 @@ class DetailModel
// 商品库存总数
$totalStorageNum += $colorStorageNum;
}
// 遍历所有尺码,构建颜色显示数据
$i = 1;
foreach ($allSizeList as $sizeName => $value) {
... ... @@ -256,7 +258,7 @@ class DetailModel
$colorGroup[$i]['color'][] = $colorArr;
}
$colorGroup[$i]['id'] = $value['id'];
++ $i;
}
// 遍历所有颜色, 构建尺码显示数据
... ... @@ -267,7 +269,7 @@ class DetailModel
$sizeGroup[$i]['colorId'] = $value['skcId'];
// 默认颜色
$colorGroup[0]['color'][] = $value;
++ $i;
}
... ... @@ -673,7 +675,7 @@ class DetailModel
$result['data'] = Helpers::url('/signin.html', array('refer' => Helpers::url('/product/detail/consults', array('product_id' => $productId, 'total' => $total))));
break;
}
// 处理数据
$record = DetailData::upvoteConsult($uid, $id);
if (!empty($record['code'])) {
... ... @@ -705,7 +707,7 @@ class DetailModel
$result['data'] = Helpers::url('/signin.html', array('refer' => Helpers::url('/product/detail/consults', array('product_id' => $productId, 'total' => $total))));
break;
}
// 处理数据
$record = DetailData::usefulConsult($uid, $id);
if (!empty($record['code'])) {
... ...