Authored by 王水玲

活动模版秒杀

<div class="seckill">
<div class="out-seckill-tab">
<div class="seckill-tab">
<div class="tab-item actived"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="tab-item"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="tab-item"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="tab-item"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="tab-item"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="tab-item"><span class="date">12月12日</span><span class="time">12:00</span></div>
<div class="seckill-tab"
data-tab-color="{{tabColor}}"
data-tab-font-color="{{tabFontColor}}"
data-tab-select-color="{{tabSelectColor}}">
</div>
</div>
<div class="out-product-list less-than-3">
<div class="product-list">
<div class="product">
<a href="">
<div class="img-box">
<img src="//img13.static.yhbimg.com/goodsimg/2011/07/28/09/02489383d3937a4ee4706ab7f516482e7b.jpg?imageMogr2/thumbnail/148x142/position/center/quality/85/format/webp" alt="">
<div class="product-brand">MADNESS</div>
</div>
<div class="product-info">
<div class="seckill-status status-0">
<div class="price">
<span class="seckill-price">9元</span>
<span class="market-price">¥199</span>
</div>
<div class="status-type">立即抢</div>
</div>
</div>
</a>
</div>
<div class="product">
<a href="">
<div class="img-box">
<img src="//img13.static.yhbimg.com/goodsimg/2011/07/28/09/02489383d3937a4ee4706ab7f516482e7b.jpg?imageMogr2/thumbnail/148x142/position/center/quality/85/format/webp" alt="">
<div class="product-brand">MADNESS</div>
</div>
<div class="product-info">
<div class="seckill-status status-0">
<div class="price">
<span class="seckill-price">9元</span>
<span class="market-price">¥199</span>
</div>
<div class="status-type">立即抢</div>
</div>
</div>
</a>
</div>
<div class="product">
<a href="">
<div class="img-box">
<img src="//img13.static.yhbimg.com/goodsimg/2011/07/28/09/02489383d3937a4ee4706ab7f516482e7b.jpg?imageMogr2/thumbnail/160x216/position/center/quality/85/format/webp" alt="">
<div class="product-brand">MADNESS</div>
</div>
<div class="product-info">
<div class="seckill-status status-0">
<div class="price">
<span class="seckill-price">9元</span>
<span class="market-price">¥199</span>
</div>
<div class="status-type">立即抢</div>
</div>
</div>
</a>
</div>
{{!-- <div class="product">
<a href="">
<div class="img-box">
<img src="//img13.static.yhbimg.com/goodsimg/2011/07/28/09/02489383d3937a4ee4706ab7f516482e7b.jpg?imageMogr2/thumbnail/160x216/position/center/quality/85/format/webp" alt="">
<div class="product-brand">MADNESS</div>
</div>
<div class="product-info">
<div class="seckill-status" style="background: url()">
<div class="price">
<span class="seckill-price">9元</span>
<span class="market-price">¥199</span>
</div>
<div class="status-type">立即抢</div>
</div>
</div>
</a>
</div> --}}
<div class="out-product-list">
<div class="product-list"
data-price-bg-color="{{priceBgColor}}"
data-brand-bg-color="{{brandBgColor}}"
data-brand-font-color="{{brandFontColor}}"
data-price-font-color="{{priceFontColor}}"
data-num="{{secProductNum}}">
</div>
</div>
</div>
\ No newline at end of file
... ...
{{# list}}
<div class="product">
<a href="">
<div class="img-box">
<img src="{{image2 defaultImages w=160 h=216}}" alt="{{productName}}">
<div class="product-brand" style="
{{#if ../productStyle.brandBgColor}}background:{{../productStyle.brandBgColor}};{{/if}}
{{#if ../productStyle.brandFontColor}}color:{{../productStyle.brandFontColor}};{{/if}}
">{{productName}}</div>
</div>
<div class="product-info">
<div class="seckill-status
{{#if over}}
status-over
{{else if wait}}
status-wait
{{else}}
status-go
{{/if}}
">
<div class="price"
style="{{#if ../productStyle.priceFontColor}}color:{{../productStyle.priceFontColor}};{{/if}}">
<span class="seckill-price">{{secKillPrice}}</span>
<span class="market-price">¥{{marketPrice}}</span>
</div>
<div class="status-type">
{{#if over}}
已抢光
{{else if wait}}
即将开抢
{{else}}
去抢购
{{/if}}
</div>
</div>
</div>
</a>
</div>
{{/ list}}
\ No newline at end of file
... ...
{{# dateList}}
<div class="tab-item {{#if focus}}actived{{/if}}"
data-time="{{startTime}}"
data-id="{{activityId}}"
style="{{#if tabFontColor}}color: {{tabFontColor}};{{/if}}{{#if focus}}{{#if tabSelectColor}}background: {{tabSelectColor}};{{/if}}{{else}}{{#if tabColor}}background: {{tabColor}};{{/if}}{{/if}}">
<span class="date">{{date}}</span><span class="time">{{time}}</span>
</div>
{{/ dateList}}
\ No newline at end of file
... ...
... ... @@ -5,6 +5,10 @@ const yoho = require('js/yoho-app');
const qs = require('yoho-qs');
const cookie = require('yoho-cookie');
const shopTmpl = require('hbs/activity/feature/shop-group.hbs');
const seckillTabTpl = require('hbs/activity/feature/seckill-tab.hbs');
const seckillProductTpl = require('hbs/activity/feature/seckill-product.hbs');
const loading = require('js/plugin/loading');
const tip = require('js/plugin/tip');
require('scss/feature.scss');
... ... @@ -700,11 +704,68 @@ function miniProgramHandleInit() {
}
}
function formatTime(time) {
let date = new Date(time);
return `${date.getMonth() + 1}${date.getDate()}日`;
}
function viewSeckillProduct(products) {
let $productList = $('.seckill .product-list');
let productParams = {
priceBgColor: $productList.data('priceBgColor'),
brandBgColor: $productList.data('brandBgColor'),
brandFontColor: $productList.data('brandFontColor'),
priceFontColor: $productList.data('priceFontColor')
};
let num = $productList.data('num');
if (products && products.length > num) {
products = products.slice(0, num);
}
if (products.length <= 3) {
$('.out-product-list').addClass('less-than-3');
}
$('.seckill .product-list').html(seckillProductTpl({
list: products,
productStyle: productParams
}));
}
function loadSeckillList() {
let $tab = $('.seckill-tab');
let tabParams = {
tabColor: $tab.data('tabColor'),
tabFontColor: $tab.data('tabFontColor'),
tabSelectColor: $tab.data('tabSelectColor')
};
$.ajax({
url: '/product/seckill/list'
}).done(function(result) {
console.log(result);
let dateList = [];
if (result && result.activitys) {
result.activitys.forEach(item => {
dateList.push(Object.assign({
startTime: item.startTime,
date: formatTime(item.startTime),
time: item.time,
focus: item.focus,
activityId: item.activityId
}, tabParams));
});
$('.seckill .seckill-tab').html(seckillTabTpl({
dateList: dateList
}));
}
if (result && result.products) {
viewSeckillProduct(result.products || []);
}
}).error(function() {
}).always(function() {
... ... @@ -712,11 +773,40 @@ function loadSeckillList() {
});
}
function refreshProductList(activityId, time) {
$.ajax({
url: '/product/seckill/get-product-list',
data: {
uid: yoho.isLogin(), // only app use;
activityId: activityId,
startTime: time
},
success: function(data) {
if (data && data.products) {
viewSeckillProduct(data.products || []);
}
},
error: function() {
tip.show('网络断开连接了~');
}
}).always(function() {
loading.hideLoading();
});
}
function seckillInit() {
loadSeckillList();
$(document).on('click', '.seckill-tab .tab-item', function() {
$(this).addClass('actived').siblings().removeClass('actived');
if (!$(this).hasClass('actived')) {
$(this).addClass('actived').css({
background: $(this).parent().data('tabSelectColor')
}).siblings().removeClass('actived').css({
background: $(this).parent().data('tabColor')
});
refreshProductList($(this).data('id'), $(this).data('time'));
}
});
}
... ...
... ... @@ -8,9 +8,7 @@
height: 58px;
.tab-item {
background: #ef8e88;
border-radius: 12px;
color: #fff;
display: inline-block;
text-align: center;
margin-right: 7px;
... ... @@ -33,10 +31,6 @@
display: inline-block;
font-size: 18px;
}
.actived {
background: #460c0b;
}
}
.out-seckill-tab {
... ... @@ -84,30 +78,44 @@
font-size: 12px;
position: absolute;
bottom: 0;
padding: 0 10px;
box-sizing: border-box;
}
.seckill-status {
height: 28px;
color: #fff;
background-size: contain;
background-size: cover;
background-repeat: no-repeat;
padding-left: 7px;
box-sizing: border-box;
}
.status-0 {
.status-over {
background-image: url("img/activity/seckill/seckill-1.png");
}
.status-wait {
background-image: url("img/activity/seckill/seckill-0.png");
}
.status-go {
background-image: url("img/activity/seckill/seckill-2.png");
}
.price {
font-size: 12px;
float: left;
width: 50%;
span {
float: left;
}
}
.market-price {
text-decoration: line-through;
transform: scale(0.9);
transform: scale(0.8);
display: inline-block;
}
... ... @@ -116,6 +124,7 @@
text-align: center;
display: inline-block;
border: none;
font-size: 15px;
}
}
}
... ...