Authored by 陈峰

Merge branch 'release/6.8.1' into 'master'

Release/6.8.1



See merge request !1583
... ... @@ -43,6 +43,19 @@ const redbagPage = async(req, res, next) => {
if (obj.uid) {
pageData = await req.ctx(redbagModel).renderByUser(obj);
}
pageData.config = await req.ctx(redbagModel).getRewardsUrlList(obj).then(result => {
for (let i = 0; i < result.data.length; i++) {
let imageURL = result.data[i].rewardImageUrl;
result.data[i].rewardImageUrl = imageURL.split('?')[0].replace('http:', 'https:') +
'?imageView2/2/w/186/h/170/q/60';
}
return result;
}).catch(() => {
return [];
});
return res.render('red-envelope/redbag-user', {
pageHeader: headerModel.setNav({
navTitle: '领取现金红包'
... ... @@ -81,7 +94,8 @@ const receiveRedBag = async(req, res, next) => {
if (result.code === 200) {
return res.json({
code: 200,
message: '领取成功'
message: '领取成功',
data: result.data || []
});
} else {
return res.json({
... ...
... ... @@ -5,6 +5,18 @@ class redEnvelopeModel extends global.yoho.BaseModel {
}
/**
* 获取奖品展示图片列表,布局用
* @returns {Promise.<void>}
*/
async getRewardsUrlList() {
return await this.get({
data: {
method: 'app.passport.getRewardsUrlList'
}
});
}
async isWechatService(obj) {
let isWechatService = false; // 是否是微信客服
... ... @@ -76,6 +88,7 @@ class redEnvelopeModel extends global.yoho.BaseModel {
rewardType: data.rewardType,
couponAmount: data.couponAmount,
rewardUrl: data.rewardUrl,
rewardName: data.rewardName
};
case 202:
return {
... ...
... ... @@ -342,7 +342,7 @@ router.get('/have-gain/fail', auth, haveGain.fail); // 有货有赚审核不通
router.post('/have-gain/resetApply', auth, haveGain.resetApply); // 有货有赚审核不通过,重新申请API
router.post('/have-gain/submitApply', auth, haveGain.submitApply); // 有货有赚-申请开通
router.get('/red-envelope/index', redPack.redbagPage);
router.get('/red-envelope/index', redPack.redbagPage); // 微信客服领红包
router.post('/red-envelope/receive', auth, redPack.receiveRedBag);
router.post('/red-envelope/submitWxCode', auth, redPack.submitWxCode);
... ...
<div class="redbag-user-container" data-received="{{pageData.received}}" data-sharecode="{{pageData.shareCode}}">
{{# pageData}}
{{#if received}}
<div class="received-content">
{{#isEqualOr rewardType 1}}
{{#isEqualOr couponAmount 5}}
<img src="http://img12.static.yhbimg.com/sns/2018/08/02/15/02a4fbd09374acfdc2b97cabd059e32669.png" class="red-bag1 use" />
{{/isEqualOr}}
{{#isEqualOr couponAmount 10}}
<img src="http://img11.static.yhbimg.com/sns/2018/08/02/15/0188ee9e04c067fa701f33f7be24bb97ca.png" class="red-bag2 use" />
{{/isEqualOr}}
{{#isEqualOr couponAmount 20}}
<img src="http://img11.static.yhbimg.com/sns/2018/08/02/15/0185441fd89c3bc4a78cd202c9c40eb633.png" class="red-bag3 use" />
{{/isEqualOr}}
{{#isEqualOr couponAmount 50}}
<img src="http://img11.static.yhbimg.com/sns/2018/08/02/15/01645486f02c4d38679b5058bde79abf02.png" class="red-bag50 use" />
{{/isEqualOr}}
{{#isEqualOr couponAmount 80}}
<img src="http://img12.static.yhbimg.com/sns/2018/08/02/15/02c329c8192bcdddd7467a8c44501b4525.png" class="red-bag80 use" />
{{/isEqualOr}}
{{#isEqualOr couponAmount 100}}
<img src="http://img11.static.yhbimg.com/sns/2018/08/02/15/01b6568f91129e886548ab5ff0f5a71ae8.png" class="red-bag100 use" />
{{/isEqualOr}}
{{/isEqualOr}}
{{#isEqualOr rewardType 2}}
<img src="{{rewardUrl}}" class="red-bag-other use"/>
{{/isEqualOr}}
<button type="button" class="go-use"></button>
</div>
{{else}}
{{#if received}}
<div class="received-wrapper show">
<div class="received-content">
{{#isEqualOr rewardType 1}}
{{#isEqualOr couponAmount 5}}
<img src="//img12.static.yhbimg.com/sns/2018/08/02/15/02a4fbd09374acfdc2b97cabd059e32669.png" class="red-bag1 use"/>
{{/isEqualOr}}
{{#isEqualOr couponAmount 10}}
<img src="//img11.static.yhbimg.com/sns/2018/08/02/15/0188ee9e04c067fa701f33f7be24bb97ca.png" class="red-bag2 use"/>
{{/isEqualOr}}
{{#isEqualOr couponAmount 20}}
<img src="//img11.static.yhbimg.com/sns/2018/08/02/15/0185441fd89c3bc4a78cd202c9c40eb633.png" class="red-bag3 use"/>
{{/isEqualOr}}
{{#isEqualOr couponAmount 50}}
<img src="//img11.static.yhbimg.com/sns/2018/08/02/15/01645486f02c4d38679b5058bde79abf02.png" class="red-bag50 use"/>
{{/isEqualOr}}
{{#isEqualOr couponAmount 80}}
<img src="//img12.static.yhbimg.com/sns/2018/08/02/15/02c329c8192bcdddd7467a8c44501b4525.png" class="red-bag80 use"/>
{{/isEqualOr}}
{{#isEqualOr couponAmount 100}}
<img src="//img11.static.yhbimg.com/sns/2018/08/02/15/01b6568f91129e886548ab5ff0f5a71ae8.png" class="red-bag100 use"/>
{{/isEqualOr}}
{{/isEqualOr}}
{{#isEqualOr rewardType 2}}
<div class="reward-pic"></div>
<p>恭喜您获得</p>
<p class="reward-name">{{rewardName}}</p>
{{/isEqualOr}}
<button type="button" class="go-use">立即使用</button>
</div>
</div>
{{else}}
<div class="received-wrapper">
<div class="received-content">
<div class="reward-pic"></div>
<p>恭喜您获得</p>
<p class="reward-name"></p>
<button type="button" class="go-use">立即使用</button>
</div>
</div>
{{/if}}
<div class="rewards-content">
<i class="cuo-icon"></i>
<img src="http://img11.static.yhbimg.com/sns/2018/10/23/14/01bd162a441d22ab50e29244cf66fc4072.png" class="receiveRedBag"/>
<div class="reward-container ">
<div class="reward-items">
{{#each config.data}}
<div id="item_{{this.rewardId}}" data-id="{{this.rewardId}}" data-index="{{@index}}"
class="item item-{{@index}}">
<img src="{{this.rewardImageUrl}}">
<div class="item-mask"></div>
</div>
{{/each}}
<div class="item receive-redbag">
<img src="//img11.static.yhbimg.com/article/2018/11/07/16/018b792dffba52e7435771ae5851862cde.png">
</div>
</div>
<div class="reward-pannel">
<div class="reward-light left"></div>
<div class="reward-light right"></div>
</div>
</div>
</div>
{{/if}}
<input type="hidden" id="msg" value="{{message}}">
<input type="hidden" id="msg" value="{{message}}">
{{/ pageData}}
<div class="activity-rule">
<i class="hand"></i>
<p class="title">活动规则</p>
<p class="txt txt-1">领取权益需填写注册有货账户时绑定的手机号,认证后即可参与抽奖;</p>
<p class="txt txt-2">若忘记或不确定手机号是否绑定账户,请先联系微信客服进行查询;</p>
<p class="txt txt-3">抽中的优惠券将被放入您的有货账户中,若抽中免单/微信红包/实物奖品,请截图后联系微信客服;</p>
<p class="txt last">*此活动最终解释权归Yoho!Buy所有</p>
</div>
<div class="activity-rule">
<i class="hand"></i>
<p class="title">活动规则</p>
<p class="txt txt-1">领取权益需填写注册有货账户时绑定的手机号,认证后即可参与抽奖;</p>
<p class="txt txt-2">若忘记或不确定手机号是否绑定账户,请先联系微信客服进行查询;</p>
<p class="txt txt-3">抽中的优惠券将被放入您的有货账户中,若抽中免单/微信红包/实物奖品,请截图后联系微信客服;</p>
<p class="txt last">*此活动最终解释权归Yoho!Buy所有</p>
</div>
</div>
... ...
... ... @@ -61,7 +61,7 @@ class cartModel extends global.yoho.BaseModel {
* @return array 接口返回的数据
*/
removeFromCart(uid, sku, shoppingKey, cartType) {
return this.get({data: {
return this.post({data: {
method: 'app.Shopping.removeAndQryCart',
product_sku_list: sku,
uid: uid,
... ...
... ... @@ -5,7 +5,7 @@
* @date 2016/05/06
*/
const pkg = require('../package.json');
// const pkg = require('../package.json');
const from = require('./from');
const isProduction = process.env.NODE_ENV === 'production';
... ...
... ... @@ -77,7 +77,8 @@
<link rel="apple-touch-startup-image" href="https://cdn.yoho.cn/h5/forios/startup/startup-orange-5.png" media="screen and (max-device-width: 640px)">
</head>
<body class="{{pageStyle}}{{#if isWechat}} wechat-body{{/if}}{{#if width750}} width750{{/if}}{{#if isPassportPage}} passport-body{{/if}}{{#if isStarIndexPage}} star-index-bg{{/if}}{{#if isStarDetailPage}} star-class-body{{/if}}{{#if isInstallmentPage}}{{#unless notOpen}} installment-body{{/unless}}{{/if}}{{#if @root.isMarsApp}} is-mars-app{{/if}}{{#if @root.isNowApp}} is-now-app{{/if}}">
<div class="main-wrap" id="main-wrap" {{#if appPath}}data-apppath='{{{appPath}}}'{{/if}} {{#if miniPath}}data-miniPath='{{{miniPath}}}'{{/if}} {{#if @root.wap.wechat.backDownload}}data-backDownload='{{@root.wap.wechat.backDownload}}'{{/if}}>
<div class="main-wrap" id="main-wrap"{{#if appPath}} data-apppath="{{{appPath}}}"{{/if}}{{#if miniPath}} data-miniPath="{{{miniPath}}}"{{/if}}{{#if @root.wap.wechat.miniAutoJump}} data-miniautojump="1"{{/if}}{{#if @root.wap.wechat.backDownload}} data-backDownload="{{@root.wap.wechat.backDownload}}"{{/if}}>
{{#if systemUpdate}}
{{> updata}}
{{/if}}
... ...
{
"name": "yohobuywap-node",
"version": "6.7.24",
"version": "6.8.1",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ...
... ... @@ -563,6 +563,12 @@ function timedCutProductInit() {
});
}
function miniProgramHandleInit() {
if (window.__wxjs_environment === 'miniprogram') {
require('./miniprogram');
}
}
$(function() {
if ($('.over').length) {
// 过期/删除 状态的 活动
... ... @@ -619,8 +625,10 @@ $(function() {
timedCutProductInit();
// 小程序相关处理
if (window.__wxjs_environment === 'miniprogram') {
require('./miniprogram');
if (!window.WeixinJSBridge || !window.WeixinJSBridge.invoke) {
document.addEventListener('WeixinJSBridgeReady', miniProgramHandleInit, false);
} else {
miniProgramHandleInit();
}
// 商品曝光事件上报
... ...
/* global wx */
import $ from 'yoho-jquery';
import tip from 'js/plugin/tip';
import {transToMiniappPath} from 'js/common/miniapp-path-rules';
class LinkHandle {
constructor() {
... ... @@ -39,58 +40,13 @@ class LinkHandle {
* 转换为小程序页面地址
*/
transToPath(href) {
let path = '';
let openbyParamsArr = href.split(/openby:yohobuy(=|=)/);
let paramsStr = openbyParamsArr[openbyParamsArr.length - 1];
let paramsObj = {};
let transData = transToMiniappPath(href);
try {
paramsObj = JSON.parse(paramsStr);
} catch (error) {
console.error('paramsStr is: ', paramsStr);
}
if (paramsObj.action === 'go.productDetail' && paramsObj.params && paramsObj.params.product_skn) { // 商品详情页
path = `/pages/goodsDetail/goodsDetail?productSkn=${paramsObj.params.product_skn}&page_name=home`;
} else if (paramsObj.action === 'go.list') { // 列表页、专区
let queryParams = this.transOpenbyParams(paramsObj.params);
path = `/pages/goodsList/goodsList${queryParams}`;
} else if (paramsObj.action === 'go.poollist') { // 商品池
let queryParams = this.transOpenbyParams(paramsObj.params);
path = `/pages/goodsList/productPool${queryParams}`;
} else if (paramsObj.action === 'go.h5' && paramsObj.params && paramsObj.params.url) { // 活动模板
let queryParams = this.transOpenbyParams(paramsObj.params.param);
let url = `${paramsObj.params.url}${queryParams}`;
path = `/pages/webview/webview?page_name=home&url=${url}`;
} else if (paramsObj.action === 'go.shop') { // 店铺
path = `/pages/goodsList/brandStore?shopId=${paramsObj.params.shop_id}`;
} else {
if (!transData.path) {
tip.show('暂不支持,请使用Yoho!buy有货APP选购');
}
return path;
}
/**
* 转换 openby 参数
*/
transOpenbyParams(params) {
let paramsArr = [];
if (params && $.isPlainObject(params)) {
for (let key in params) {
if (params.hasOwnProperty(key)) {
paramsArr.push(`${key}=${params[key]}`);
}
}
} else {
console.info('params is:', params);
}
return paramsArr.length ? `?${paramsArr.join('&')}` : '';
return transData.path || '';
}
}
... ...
... ... @@ -3,6 +3,80 @@ import $ from 'yoho-jquery';
import tip from 'js/plugin/tip';
$(() => {
let isStop = true;
let rewardIndex = 0;
let rewardName = '';
// 亮灯动画
const animateLight = function() {
$('.reward-light').each(function() {
if (!$(this).hasClass('active')) {
$(this).addClass('active');
}
});
};
// 停止亮灯动画
const stopAnimateLight = function() {
$('.reward-light').each(function() {
if ($(this).hasClass('active')) {
$(this).removeClass('active');
}
});
};
const showResult = function(result) {
$('.reward-name').text(result);
$('.received-wrapper').fadeIn(1000, function() {
$(this).addClass('show');
$(document).on('click', '.go-use', () => {
tip.show('请下载Yoho!Buy有货官方App,查看/使用优惠券');
});
});
};
// 停止轮盘
const stopRoller = function(index, times, spd) {
isStop = true;
$('.item').siblings().removeClass('active');
$('.item-' + index).addClass('active');
if (spd < 500) {
spd += 20;
}
if (times > 0) {
times -= 1;
if (index < 7) {
index += 1;
} else {
index = 0;
}
setTimeout(stopRoller, spd, index, times, spd);
} else {
stopAnimateLight();
showResult(rewardName); // 显示中奖结果
}
};
// 转动轮盘
const roller = function(index, spd) {
if (!isStop) {
$('.item').siblings().removeClass('active');
$('.item-' + index).addClass('active');
if (index < 7) {
index += 1;
} else {
index = 0;
}
if (spd > 50) {
spd -= 10;
}
setTimeout(roller, spd, index, spd);
} else {
stopRoller(index, rewardIndex + 8 * 2 - index, spd);
}
};
const $container = $('.redbag-user-container'),
$msg = $('#msg');
... ... @@ -17,40 +91,57 @@ $(() => {
} else {
let posting = false;
$(document).on('click', '.receiveRedBag', () => {
$(document).on('click', '.receive-redbag', () => {
const shareCode = $container.data('sharecode');
if (!shareCode) {
return;
}
if (posting) {
return;
}
posting = true;
$.ajax({
method: 'POST',
url: '/activity/red-envelope/receive',
data: {
shareCode
},
success: function(res) {
if (res.code === 200) {
setTimeout(() => {
window.location.reload();
}, 500);
}
if (res.redirect) {
setTimeout(() => {
window.location.href = res.redirect + '?refer=' + encodeURIComponent(location.href);
}, 500);
}
tip.show(res.message);
},
complete() {
posting = false;
// 开始转动轮盘
if (isStop) {
if (!shareCode) {
return;
}
});
if (posting) {
return;
}
posting = true;
$.ajax({
method: 'POST',
url: '/activity/red-envelope/receive',
data: {
shareCode
},
success: function(res) {
console.log(res);
if (res.redirect) {
setTimeout(() => {
window.location.href = res.redirect + '?refer=' + encodeURIComponent(location.href);
}, 500);
}
if (res.code === 200) {
isStop = false;
roller(0, 200); // 开始转动
animateLight();
let rewardId = res.data.rewardId || 0;
rewardName = res.data.rewardName || '';
setTimeout(function() {
rewardIndex = parseInt($('#item_' + rewardId).data('index'), 10);
console.log(rewardIndex);
isStop = true;
}, 3000);
} else {
tip.show(res.message);
}
},
complete() {
posting = false;
}
});
}
});
}
});
... ...
... ... @@ -288,6 +288,8 @@ $.extend({
// 尝试打开 APP
require('./common/open-app');
// 尝试打开 MINIAPP
require('./common/open-miniapp');
}());
$header.on('touchstart', 'a', function() {
... ...
const _isPlainObject = (obj) => {
if (typeof(obj) !== 'object' || obj.nodeType || obj !== null && obj !== undefined && obj === obj.window) { // eslint-disable-line
return false;
}
if (obj.constructor &&
!Object.prototype.hasOwnProperty.call(obj.constructor.prototype, 'isPrototypeOf')) {
return false;
}
return true;
};
const _qsStringfy = (params) => {
let paramsArr = [];
if (params && _isPlainObject(params)) {
for (let key in params) {
if (params.hasOwnProperty(key)) {
paramsArr.push(`${key}=${params[key]}`);
}
}
} else {
console.info('params is:', params);
}
return paramsArr.length ? `?${paramsArr.join('&')}` : '';
};
// 有货跳转规则转化为有货精选路由
const transToMiniappPath = (href) => {
let path = '';
let openbyParamsArr = href.split(/openby:yohobuy(=|=)/);
let paramsStr = openbyParamsArr[openbyParamsArr.length - 1];
let paramsObj = {};
try {
paramsObj = JSON.parse(paramsStr);
} catch (error) {
console.error('paramsStr is: ', paramsStr);
}
switch (paramsObj.action) {
case 'go.productDetail': // 商品详情页
if (paramsObj.params && paramsObj.params.product_skn) {
path = `/pages/goodsDetail/goodsDetail?productSkn=${paramsObj.params.product_skn}&page_name=home`;
}
break;
case 'go.list': // 列表页、专区
path = `/pages/goodsList/goodsList${_qsStringfy(paramsObj.params)}`;
break;
case 'go.poollist': // 商品池
path = `/pages/goodsList/productPool${_qsStringfy(paramsObj.params)}`;
break;
case 'go.h5':
if (paramsObj.params && paramsObj.params.url) {
path = `/pages/webview/webview?page_name=home&url=${paramsObj.params.url}${_qsStringfy(paramsObj.params.param)}`; // eslint-disable-line
}
break;
case 'go.shop':
path = `/pages/goodsList/brandStore?shopId=${paramsObj.params.shop_id}`;
break;
default:
break;
}
return {
path: path,
action: paramsObj.action
};
};
module.exports = {
transToMiniappPath
};
... ...
import {transToMiniappPath} from './miniapp-path-rules';
const jumpAction = ['go.productDetail', 'go.list', 'go.shop', 'go.poollist'];
let retry = 6;
function goMiniapp(apppath) {
retry--;
if (!window.wx) {
if (retry > 0) {
setTimeout(function() {
goMiniapp(apppath);
}, 300);
}
return;
}
let transData = transToMiniappPath(apppath);
if (transData.path && jumpAction.indexOf(transData.action) >= 0) {
window.wx.miniProgram.redirectTo({url: transData.path});
}
}
function init() {
if (window.__wxjs_environment !== 'miniprogram') {
return;
}
// 添加小程序webview页面标识
const bodyClass = 'miniapp-body';
const $body = document.getElementsByTagName('body')[0];
let classNames = ($body.className || '').split(' ');
if (classNames.indexOf(bodyClass) < 0) {
classNames.push(bodyClass);
}
$body.className = classNames.join(' ');
// 自动跳转至小程序对应页面
const appInfo = document.getElementById('main-wrap').dataset;
if (appInfo.miniautojump && appInfo.apppath) {
goMiniapp(appInfo.apppath);
}
}
if (!window.WeixinJSBridge || !window.WeixinJSBridge.invoke) {
document.addEventListener('WeixinJSBridgeReady', init, false);
} else {
init();
}
... ...
... ... @@ -55,7 +55,7 @@ class Validate {
this.$container.addClass('hide').addClass('popup');
});
} else {
this.render(container, options, validType.IMG_CHECK);
tip.show('图形验证码加载失败,请刷新重试');
}
}
});
... ...
.redbag-user-container {
width: 100%;
background: url(http://img12.static.yhbimg.com/sns/2018/09/27/11/025d67e459f2b67afd343540569e56d7b9.jpg) no-repeat;
background: url(https://img12.static.yhbimg.com/sns/2018/09/27/11/025d67e459f2b67afd343540569e56d7b9.jpg) no-repeat;
background-size: cover;
padding-top: 244px;
.rewards-content {
position: relative;
overflow: hidden;
padding-bottom: 100px;
padding-top: 244px;
.cuo-icon {
width: 284px;
height: 111px;
top: 0;
top: 260px;
right: 49px;
background: url(//img12.static.yhbimg.com/sns/2018/09/27/12/02598d832b6ecfae4ef6a18c3dd904e90c.png) no-repeat;
background: url(https://img12.static.yhbimg.com/sns/2018/09/27/12/02598d832b6ecfae4ef6a18c3dd904e90c.png) no-repeat;
background-size: contain;
position: absolute;
z-index: 9;
}
.reward-container {
position: relative;
width: 750px;
height: 666px;
margin-top: 100px;
}
.reward-pannel {
width: 750px;
height: 666px;
background-image: url(https://img11.static.yhbimg.com/article/2018/11/07/16/01e5493b18a5e50ca49887ce01c12e1643.png);
background-size: 100% 100%;
position: relative;
}
.reward-pannel .reward-light {
width: 100px;
height: 666px;
background-image: url(https://img13.static.yhbimg.com/article/2018/11/12/11/02859c1385a0189a9c108682419348a9f9.png);
background-size: cover;
background-position: 0 0;
position: absolute;
&.left {
left: 0;
top: 0;
}
&.right {
right: 0;
top: 0;
}
&.active {
-webkit-animation: reward-light-animate 0.5s steps(1) infinite;
animation: reward-light-animate 0.5s steps(1) infinite;
}
}
.reward-items {
position: absolute;
width: 594px;
height: 598px;
left: 50%;
top: 50%;
margin-left: -299px;
margin-top: -299px;
z-index: 9;
.item {
position: absolute;
width: 186px;
height: 170px;
overflow: hidden;
border-radius: 20px;
&.active .item-mask {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
background-color: rgba(255, 214, 56, 0.5);
z-index: 5;
}
}
.item-0 {
left: 10px;
top: 20px;
}
.item-1 {
left: 205px;
top: 20px;
}
.item-2 {
left: 400px;
top: 20px;
}
.item-3 {
left: 400px;
top: 210px;
}
.item-4 {
left: 400px;
top: 400px;
}
.item-5 {
left: 205px;
top: 400px;
}
.item-6 {
left: 10px;
top: 400px;
}
.item-7 {
left: 10px;
top: 210px;
}
.receive-redbag {
left: 205px;
top: 210px;
}
}
img {
width: 570px;
height: 553px;
overflow: hidden;
margin-top: 130px;
width: 100%;
height: 100%;
}
}
.received-wrapper {
display: none;
position: absolute;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.7);
z-index: 10;
&.show {
display: block !important;
}
}
.received-content {
padding-top: 176px;
overflow: hidden;
padding-bottom: 160px;
position: relative;
position: absolute;
width: 580px;
left: 50%;
top: 50%;
margin-left: -292px;
margin-top: -370px;
background-color: #fff;
border-radius: 20px;
z-index: 10;
.reward-pic {
position: relative;
width: 462px;
height: 308px;
margin: 20px auto 0 auto;
background-image: url(//img11.static.yhbimg.com/article/2018/11/07/16/0137323a8972604cf08b056350f217adbb.png);
background-size: 100% 100%;
}
p {
display: block;
width: 100%;
font-size: 24px;
text-align: center;
margin: 0;
padding: 5px 50px;
line-height: 36px;
font-weight: normal;
font-family: "PingFang SC", Helvetica, Arial, sans-serif;
}
.reward-name {
font-size: 30px;
font-weight: bold;
}
.go-use {
position: relative;
display: block;
width: 380px;
height: 80px;
margin: 20px auto;
border-radius: 80px;
background-color: #000;
color: #fff;
border: none !important;
}
.use {
width: 750px;
width: 540px;
height: 443px;
margin: 0 auto;
background-color: rgba(255, 255, 255, 0.5);
background-size: contain;
&.red-bag1 {
... ... @@ -66,16 +237,6 @@
height: 443px;
}
}
.go-use {
position: absolute;
width: 310px;
height: 180px;
top: 386px;
left: 200px;
background: none !important;
border: none !important;
}
}
.activity-rule {
... ... @@ -97,7 +258,7 @@
height: 91px;
right: 33px;
top: -39px;
background: url(http://img11.static.yhbimg.com/sns/2018/09/27/11/01c13a6c46302940f9c1656f5893236d97.png) no-repeat;
background: url(https://img11.static.yhbimg.com/sns/2018/09/27/11/01c13a6c46302940f9c1656f5893236d97.png) no-repeat;
background-size: contain;
}
... ... @@ -141,3 +302,17 @@
}
}
}
@keyframes reward-light-animate {
0% {
background-position: 0 0;
}
50% {
background-position: 100% 0;
}
100% {
background-position: 0 0;
}
}
... ...
... ... @@ -11102,9 +11102,9 @@ yoho-md5@^2.0.0:
version "2.1.0"
resolved "http://npm.yohops.com/yoho-md5/-/yoho-md5-2.1.0.tgz#f0c00d343f775e77952ebce0826863ac52e0ad50"
yoho-node-lib@=0.6.33:
version "0.6.33"
resolved "http://npm.yohops.com/yoho-node-lib/-/yoho-node-lib-0.6.33.tgz#fca4dadedb80438d30d06fbb386d09912a4f9ca6"
yoho-node-lib@=0.6.34:
version "0.6.34"
resolved "http://npm.yohops.com/yoho-node-lib/-/yoho-node-lib-0.6.34.tgz#c650e06bfc530cf13c79cf4b3e08bc5d15345933"
dependencies:
dnscache "^1.0.1"
handlebars "^4.0.5"
... ...