Authored by 杨延青

Merge branch 'feature/cps3' into 'release/0718'

Feature/cps3



See merge request !1477
const haveGainModel = require('../models/have-gain');
const headerModel = require('../../../doraemon/models/header');
/**
* 有货-有赚
*/
class HaveGain {
// 列表
index(req, res, next) {
let uid = req.user.uid;
return req.ctx(haveGainModel).index({uid}).then(gainList => {
return res.render('have-gain/index', {
module: 'activity',
page: 'have-gain-index',
width750: true,
localCss: true,
title: '有货有赚',
gainList,
pageHeader: !req.yoho.isApp && headerModel.setNav({
navTitle: '有货有赚',
navBtn: false
}),
});
}).catch(next);
}
// 申请开通
apply(req, res, next) {
let uid = req.user.uid;
let socialMediaList = [
{
name: '微信',
icon: 'img/activity/have-gain/weixin@2x.png',
type: 1,
account: '',
fans: 0
},
{
name: '微信订阅号',
icon: 'img/activity/have-gain/weixin@2x.png',
type: 2,
account: '',
fans: 0
},
{
name: '抖音',
icon: 'img/activity/have-gain/douyin@2x.png',
type: 3,
account: '',
fans: 0
},
{
name: '微博',
icon: 'img/activity/have-gain/weibo@2x.png',
type: 4,
account: '',
fans: 0
},
{
name: 'Instagram',
icon: 'img/activity/have-gain/ins@2x.png',
type: 5,
account: '',
fans: 0
}
];
return req.ctx(haveGainModel).checkApply({uid}).then(result => {
let checkUrl = result.data && result.data.checkUrl || '';
if (checkUrl.indexOf('activity/have-gain/apply') === -1) {
return res.redirect(checkUrl);
}
return res.render('have-gain/apply', {
module: 'activity',
page: 'have-gain-apply',
width750: true,
localCss: true,
title: '有货有赚',
agreementUrl: 'https://activity.yoho.cn/feature/2609.html?openby:yohobuy={"action":"go.h5","params":{"url":"https://activity.yoho.cn/feature/2609.html"}}',
socialMediaList: socialMediaList,
pageHeader: !req.yoho.isApp && headerModel.setNav({
navTitle: '有货有赚',
navBtn: false
}),
});
}).catch(next);
}
// 审核中
verify(req, res) {
return res.render('have-gain/verify', {
module: 'activity',
page: 'have-gain-verify',
width750: true,
localCss: true,
title: '有货有赚',
pageHeader: !req.yoho.isApp && headerModel.setNav({
navTitle: '有货有赚',
navBtn: false
}),
});
}
// 审核拒绝
fail(req, res) {
return res.render('have-gain/fail', {
module: 'activity',
page: 'have-gain-fail',
width750: true,
localCss: true,
title: '有货有赚',
pageHeader: !req.yoho.isApp && headerModel.setNav({
navTitle: '有货有赚',
navBtn: false
}),
});
}
// 审核拒绝,重新申请API
resetApply(req, res, next) {
let uid = req.user.uid;
return req.ctx(haveGainModel).resetApply({uid}).then(result => {
return res.json(result);
}).catch(next);
}
submitApply(req, res, next) {
let body = req.body || {};
let uid = req.user.uid;
body.socialMediaList = JSON.parse(body.socialMediaList || '[]', true);
return req.ctx(haveGainModel).submitApply(Object.assign({uid}, body)).then(result => {
return res.json(result);
}).catch(next);
}
}
module.exports = new HaveGain();
... ...
'use strict';
const helpers = global.yoho.helpers;
const _ = require('lodash');
module.exports = class extends global.yoho.BaseModel {
constructor(ctx) {
super(ctx);
}
index(params) {
return Promise.all([
this.invitecode(params),
this.checkApply(Object.assign({goUnion: 1}, params))
]).then(res => {
let share = (_.get(res[0], 'data.context', '')).match(/(\d+)/g);
let gainList = [
{
url: _.get(res[0], 'data.url', ''),
img: '//img11.static.yhbimg.com/yhb-img01/2018/07/09/10/010d4f185b1a155449966ef12d3ed41490.jpg?imageView2/{mode}/w/{width}/h/{height}', // eslint-disable-line
totalUser: _.get(share, '[0]', 0),
totalCouponNum: _.get(share, '[1]', 0),
isShow: true
}, {
url: _.get(res[1], 'data.checkUrl', ''),
img: '//img11.static.yhbimg.com/yhb-img01/2018/07/09/10/018092224dc2f48195e3ad15269f981d1f.jpg?imageView2/{mode}/w/{width}/h/{height}', // eslint-disable-line
isShow: false
}
];
return gainList;
}).catch(() => {
return [];
});
}
/**
* [查询参与邀请好友数量]
* @param {[type]} params [{uid:''}]
* @return {[type]} [{}]
*/
invitecode(params) {
return this.get({
data: Object.assign({
method: 'app.invitecode.total'
}, params)
});
}
/**
* [检查是否申请]
* @param {[type]} params [{uid: 0}]
* @return {[type]} [{}]
*/
checkApply(params) {
return this.get({
data: Object.assign({
method: 'app.union.shareOrder.checkApply'
}, params)
}).then(res => {
let checkStatus = _.get(res, 'data.status', 0);
let checkUrl = helpers.urlFormat('/activity/have-gain/apply', {}); // 未申请
if (checkStatus === 1) { // 审核中
checkUrl = helpers.urlFormat('/activity/have-gain/verify', {});
} else if (checkStatus === 2) { // 审核成功
if (_.get(params, 'goUnion', 0) * 1 === 1) { // h5列表单击跳转
checkUrl = '//m.yohobuy.com?title=有货有赚&openby:yohobuy={"action":"go.minealliance","params":{"title":"有货有赚"}}'; // eslint-disable-line
} else {
checkUrl = 'https://activity.yoho.cn/feature/2213.html?title=说明详情&openby:yohobuy={"action":"go.h5","params":{"title": "说明详情", url":"https://activity.yoho.cn/feature/2213.html"}}'; // eslint-disable-line
}
} else if (checkStatus === 3) { // 申请拒绝
checkUrl = helpers.urlFormat('/activity/have-gain/fail', {});
}
_.set(res, 'data.checkUrl', checkUrl);
return res;
});
}
/**
* [审核拒绝,重新申请API]
* @param {[type]} params [{uid:'']}]
* @return {[type]} [{}]
*/
resetApply(params) {
return this.get({
data: Object.assign({
method: 'app.union.shareOrder.resetApply'
}, params)
});
}
/**
* [提交-申请]
* @param {[type]} params [{uid:'',name:'',mobile:'',socialMediaList:[{type:'',account:'',fans:200}]}]
* @return {[type]} [{}]
*/
submitApply(params) {
let uid = params.uid;
delete params.uid;
return this.get({
data: {
method: 'app.union.shareOrder.userApply',
uid: uid,
parameters: JSON.stringify(params)
}
});
}
};
... ...
... ... @@ -67,6 +67,8 @@ const disableBFCache = require('../../doraemon/middleware/disable-BFCache');
const grouthNew = require(`${cRoot}/grouth-new`);
const haveGain = require(`${cRoot}/have-gain`);
// routers
router.get('/demo', demo.index);
... ... @@ -328,4 +330,11 @@ router.get('/grade/droit', auth, grade.droit); // 权益说明
router.get('/grouth-new/init', auth, grouthNew.grouthInit); // 成长值初始化
router.get('/have-gain/index', auth, haveGain.index); // 有货有赚列表
router.get('/have-gain/apply', auth, haveGain.apply); // 有货有赚申请
router.get('/have-gain/verify', haveGain.verify); // 有货有赚审核
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); // 有货有赚-申请开通
module.exports = router;
... ...
<div class="have-gain-apply">
<div class="section">
<div class="apply-title">基本信息</div>
<ul class="section-ul">
<li><span>姓名</span><input type="text" class="name" placeholder="请输入姓名" /></li>
<li class="border-node"><span>手机号码</span><input type="number" class="mobile" placeholder="请输入手机号码" /></li>
</ul>
</div>
<div class="section">
<div class="apply-title">完善信息</div>
{{#socialMediaList}}
<div class="party-icon-item">
<div class="public-info-section">
<img class="public-icon" src="{{imgSrc icon}}" />
<div class="personal">
<div class="public-name">{{name}}</div>
<div class="account-name" data-type="{{type}}">
{{#if account}}
账号:<em>{{account}}</em>&nbsp;&nbsp;
粉丝:<em data-fans="{{fans}}">{{fans}}</em>
{{/if}}
</div>
</div>
</div>
{{#if account}}
<div class="fill-in disable">已填写</div>
{{else}}
<div class="fill-in">填写</div>
{{/if}}
</div>
{{/socialMediaList}}
<p class="other">如果您有其他渠道,可以添加我们的服务号“有货有赚”反馈,也可以了解申请状态,<em class="added">点击添加</em></p>
</div>
<div class="agreement-section">
<div class="agreement">
我已阅读并同意<a href='{{agreementUrl}}'>《有货有赚推广协议》</a>
</div>
<div class="apply-btn disable">申请开通</div>
</div>
</div>
... ...
<div class="have-gain-fail">
<div class="esp-header">审核未通过</div>
<div class="esp-explain">
<div class="explain-title">我们将通过您在有货的历史购物,浏览,分享等行为进行系统及人工筛选,没有通过的原因可能如下:</div>
<ul class="explain-sub">
<li>1.您提供的基本信息有误,请提供真实有效的姓名和手机号码。</li>
<li>2.您提供的完善信息,经工作人员核实后,与事实不符。</li>
<li>3.根据您提供的完善信息,不符合我们对参与用户门槛的最低要求。</li>
<li>4.您在有货的活跃度偏低。</li>
</ul>
</div>
<div class="esp-go">
<div class="reset-btn">重新申请</div>
<div class="again-title">您可以重新提交资料,再次申请</div>
</div>
</div>
... ...
<div class="have-gain-index">
{{#gainList}}
<div class="have-gain-item">
<div class="item-img">
<img src="{{image img 690 430}}" />
</div>
<div class="item-footer">
{{#if isShow}}
<div class="eps">
<span class="num">{{totalUser}}</span>
<span class="people">参与人数</span>
</div>
<div class="eps">
<span class="num">{{totalCouponNum}}</span>
<span class="people">获得优惠券</span>
</div>
<div class="eps">
<div class="accede-btn"><a href="{{url}}">了解详情</a></div>
</div>
{{else}}
<div class="eps">
邀请好友购物返现金
</div>
<div class="eps">
<div class="accede-btn"><a href="{{url}}">立即加入</a></div>
</div>
{{/if}}
</div>
</div>
{{/gainList}}
</div>
... ...
<div class="have-gain-verify">
<div class="esp-audit">审核中,请耐心等待</div>
<div class="esp-progress">审核会在7个工作日内完成,您可以关注“有货有赚”服务号,了解申请进度</div>
<div class="esp-go">
<div class="add-btn">去添加</div>
</div>
</div>
... ...
<div class="dialog-fill-content">
<div class="fill-item">账号 <input type="text" class="account" placeholder="请输入账号昵称" value="{{account}}" /></div>
<div class="fill-item">粉丝数 <input type="number" class="fans" placeholder="请输入粉丝数量"
onkeyup="value=value.replace(/[^\d]/g,'')" value="{{fans}}" maxlength="9" /></div>
</div>
... ...
<div id="dialog-wrapper" class="dialog-wrapper">
<div class="dialog-box">
{{# hasHeader}}
<div class="dialog-header">{{.}}</div>
{{/ hasHeader}}
<div class="dialog-content">{{{dialogText}}}</div>
{{# hasFooter}}
<div class="dialog-footer">
{{# leftBtnText}}
<span class="dialog-left-btn tap-hightlight">{{.}}</span>
{{/ leftBtnText}}
{{# centerBtnText}}
<span class="dialog-center-btn tap-hightlight">{{.}}</span>
{{/ centerBtnText}}
{{# rightBtnText}}
<span class="dialog-right-btn tap-hightlight">{{.}}</span>
{{/ rightBtnText}}
</div>
{{/ hasFooter}}
<div class="dialog-box {{hasClass}}">
{{# hasHeader}}
<div class="dialog-header">{{.}}</div>
{{/ hasHeader}}
<div class="dialog-content">{{{dialogText}}}</div>
{{# hasFooter}}
<div class="dialog-footer">
{{# leftBtnText}}
<span class="dialog-left-btn tap-hightlight">{{.}}</span>
{{/ leftBtnText}}
{{# centerBtnText}}
<span class="dialog-center-btn tap-hightlight">{{.}}</span>
{{/ centerBtnText}}
{{# rightBtnText}}
<span class="dialog-right-btn tap-hightlight">{{.}}</span>
{{/ rightBtnText}}
</div>
{{/ hasFooter}}
</div>
</div>
... ...
import 'activity/have-gain-apply.page.css';
import Page from 'yoho-page';
import $ from 'yoho-jquery';
import tip from 'plugin/tip';
import dialog from 'plugin/dialog';
import fillInHbs from 'activity/have-gain/fill-in.hbs';
import yoho from 'yoho-app';
class HaveGainApplyPage extends Page {
constructor() {
super();
this.selector = {
isFlag: false,
$nameInput: $('.section .name'),
$mobileInput: $('.section .mobile'),
$fillIn: $('.party-icon-item .fill-in'),
$added: $('.other .added'),
$agreement: $('.agreement-section .agreement'),
$applyBtn: $('.apply-btn'),
};
this.init();
}
init() {
this.bindEvents();
}
bindEvents() {
let that = this;
this.selector.$nameInput.on('input', this.changeBtnStatus.bind(this));
this.selector.$mobileInput.on('input', this.changeBtnStatus.bind(this));
this.selector.$fillIn.on('click', that.tapFillIn);
this.selector.$agreement.on('click', that.tapAgreement);
this.selector.$added.on('click', this.tapAdded.bind(this));
this.selector.$applyBtn.on('click', this.apply.bind(this));
}
changeBtnStatus() {
let errStatus = 0;
let name = $.trim(this.selector.$nameInput.val());
let mobile = $.trim(this.selector.$mobileInput.val());
if (name === '') {
errStatus = 1;
} else if (mobile === '') {
errStatus = 2;
} else if (!/^1[0-9]{10}$/.test(mobile)) {
errStatus = 21;
}
if (errStatus) {
this.selector.$applyBtn.addClass('disable');
return errStatus;
}
this.selector.$applyBtn.removeClass('disable');
return errStatus;
}
tapFillIn(event) {
let $event = $(event.target);
if ($event.hasClass('disable')) {
return false;
}
let $accountName = $event.closest('.party-icon-item').find('.account-name');
dialog.showDialog({
hasHeader: '填写信息',
hasClass: 'dialog-fill-apply',
dialogText: fillInHbs({
account: $accountName.find('em').eq(0).text() || '',
fans: $accountName.find('em').eq(1).data('fans') || ''
}),
hasFooter: {
leftBtnText: '取消',
rightBtnText: '确定'
}
}, function() {
let account = $.trim($('.dialog-fill-apply .account').val() || '');
let fans = $.trim($('.dialog-fill-apply .fans').val() || '');
let fansFix = Math.round((fans / 10000) * 100) / 100; // 保留二个小数
if (!account) {
return tip.show('请输入账号昵称');
}
if (fans === '') {
return tip.show('请输入粉丝数量');
}
fansFix = fansFix >= 10 ? fansFix + '万' : fans;
$accountName.html(`账号:<em>${account}</em>&nbsp;&nbsp;粉丝:<em data-fans="${fans}">${fansFix}</em>`); // eslint-disable-line
dialog.hideDialog();
$event.text('已填写').addClass('disable');
});
}
tapAdded() {
let that = this;
yoho.invokeMethod('go.copy', {text: '有货有赚'});
dialog.showDialog({
dialogText: '“有货有赚”服务号已经复制,请去微信搜索添加',
hasClass: 'dialog-text-apply',
hasFooter: {
leftBtnText: '取消',
rightBtnText: '去添加'
}
}, function() {
that.awakeWeixin();
});
}
awakeWeixin() {
window.location.href = 'weixin://';
}
tapAgreement(event) {
let $event = $(event.target);
if ($event.closest('a').length) {
return true;
}
$event.hasClass('activate') ? $event.removeClass('activate') : $event.addClass('activate');
}
apply() {
let that = this;
let errStatus = this.changeBtnStatus();
let socialMediaList = [];
if (errStatus === 1) {
tip.show('请输入姓名');
} else if (errStatus === 2) {
tip.show('请输入手机号');
} else if (errStatus === 21) {
tip.show('请输入正确的手机号');
}
if (errStatus) {
$('html,body').animate({scrollTop: 0}, 'slow');
return false;
}
if (!this.selector.$agreement.hasClass('activate')) {
return tip.show('请勾选《我已阅读并同意》');
}
this.selector.$fillIn.each((index, event) => {
let $accountName = $(event).closest('.party-icon-item').find('.account-name');
socialMediaList.push({
type: $accountName.data('type'),
account: $accountName.find('em').eq(0).text() || '',
fans: parseInt(`0${$accountName.find('em').eq(1).data('fans')}`, 10)
});
});
if (this.selector.isFlag) {
return false;
}
this.selector.isFlag = true;
return this.ajax({
type: 'post',
url: '/activity/have-gain/submitApply',
data: {
name: $.trim(this.selector.$nameInput.val()),
mobile: $.trim(this.selector.$mobileInput.val()),
socialMediaList: JSON.stringify(socialMediaList)
}
}).then(res => {
this.selector.isFlag = false;
if (res.code !== 200) {
return tip.show(res.message || '请稍后再试');
}
yoho.invokeMethod('go.copy', {text: '有货有赚'});
dialog.showDialog({
hasHeader: '申请成功',
hasClass: 'dialog-text-apply',
dialogText: '请等待工作人员审核,您可以关注“有货有赚”服务号,了解进度',
hasFooter: {
leftBtnText: '取消',
rightBtnText: '去添加'
}
}, function() {
that.awakeWeixin();
}, function() {
window.location.href = '//m.yohobuy.com/activity/have-gain/verify';
});
}).catch(() => {
this.selector.isFlag = false;
});
}
}
$(() => {
new HaveGainApplyPage();
});
... ...
import 'activity/have-gain-fail.page.css';
import Page from 'yoho-page';
import $ from 'yoho-jquery';
import tip from 'plugin/tip';
class HaveGainFailPage extends Page {
constructor() {
super();
this.selector = {
$resetBtn: $('.esp-go .reset-btn')
};
this.init();
}
init() {
this.bindEvents();
}
bindEvents() {
this.selector.$resetBtn.on('click', this.tapReset.bind(this));
}
tapReset() {
if (this.selector.isFlag) {
return false;
}
this.selector.isFlag = true;
return this.ajax({
type: 'post',
url: '/activity/have-gain/resetApply',
data: {}
}).then(res => {
this.selector.isFlag = false;
if (res.code === 200 && res.data === 'Y') {
window.location.href = '//m.yohobuy.com/activity/have-gain/apply';
return true;
}
return tip.show(res.message || '请稍后再试');
}).catch(() => {
this.selector.isFlag = false;
});
}
}
$(() => {
new HaveGainFailPage();
});
... ...
import 'activity/have-gain-index.page.css';
... ...
import 'activity/have-gain-verify.page.css';
import Page from 'yoho-page';
import $ from 'yoho-jquery';
import dialog from 'plugin/dialog';
import yoho from 'yoho-app';
class HaveGainVerifyPage extends Page {
constructor() {
super();
this.selector = {
$addBtn: $('.esp-go .add-btn')
};
this.init();
}
init() {
this.bindEvents();
}
bindEvents() {
this.selector.$addBtn.on('click', this.tapAdded.bind(this));
}
tapAdded() {
yoho.invokeMethod('go.copy', {text: '有货有赚'});
dialog.showDialog({
dialogText: '“有货有赚”服务号已经复制,请去微信搜索添加',
hasClass: 'dialog-text-apply',
hasFooter: {
leftBtnText: '取消',
rightBtnText: '去添加'
}
}, function() {
window.location.href = 'weixin://';
});
}
}
$(() => {
new HaveGainVerifyPage();
});
... ...
... ... @@ -54,7 +54,7 @@ applyButton.on('click', function() {
return false;
}
if (!/^1[3|4|5|8|7][0-9]{9}$/.test(formData.mobile)) {
if (!/^1[0-9]{10}$/.test(formData.mobile)) {
tip.show('手机号输入不正确!');
return false;
}
... ...
... ... @@ -71,6 +71,8 @@ exports.showDialog = function(data, callback, callbackForLeft, fullWithBtn) {
$dialogWrapper.fadeOut();
} else if ($(event.target).hasClass('dialog-right-btn')) {
return callback();
} else if ($(event.target).closest('.dialog-box').length) {
return true;
} else {
$('.dialog-wrapper').remove();
$('body').css({
... ...
.dialog-wrapper .dialog-box.dialog-text-apply {
background-color: #fff;
padding: 0;
.dialog-header {
font-family: PingFang-SC-Medium, sans-serif;
font-size: 34px;
color: #444;
letter-spacing: -0.82px;
text-align: center;
padding: 40px 0 0;
margin-bottom: -24px;
font-weight: normal;
}
.dialog-content {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 28px;
color: #444;
letter-spacing: -0.09px;
text-align: center;
line-height: 43px;
padding: 40px 60px;
}
.dialog-footer {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 34px;
color: #444;
letter-spacing: -0.82px;
text-align: center;
.dialog-right-btn {
font-family: PingFang-SC-Medium, sans-serif;
color: #d0021b;
}
}
}
.dialog-wrapper .dialog-box.dialog-fill-apply {
background-color: #fff;
padding: 0;
.dialog-header {
font-family: PingFang-SC-Medium, sans-serif;
font-size: 34px;
color: #444;
letter-spacing: -0.82px;
text-align: center;
padding: 40px 0 0;
font-weight: normal;
}
.dialog-content {
padding: 36px 40px 40px;
.fill-item {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 28px;
color: #444;
letter-spacing: -0.34px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 30px;
}
input {
width: 360px;
height: 80px;
line-height: 80px;
border: 1px solid #eee;
padding: 0 10px;
-webkit-appearance: none;
}
}
.dialog-footer {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 34px;
color: #444;
letter-spacing: -0.82px;
text-align: center;
.dialog-right-btn {
font-family: PingFang-SC-Medium, sans-serif;
color: #d0021b;
}
}
}
... ...
@import "have-gain-dialog";
.have-gain-apply {
background-color: #f0f0f0;
.section {
background-color: #fff;
padding: 0 30px;
margin-bottom: 30px;
.apply-title {
font-family: PingFang-SC-Medium, sans-serif;
color: #444;
font-size: 40px;
padding: 30px 0;
}
li {
display: flex;
flex-direction: row;
align-items: center;
padding: 30px 0;
border-bottom: 1px solid #e0e0e0;
color: #444;
font-size: 28px;
input {
border: none;
color: #b0b0b0;
}
span {
display: inline-block;
width: 130px;
}
}
li.border-node {
border: none;
}
.party-icon-item {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
padding: 30px 0;
border-bottom: 1px solid #e0e0e0;
.fill-in {
font-family: PingFang-SC-Regular, sans-serif;
display: inline-block;
background-color: #444;
border-radius: 4px;
font-size: 24px;
color: #fff;
text-align: center;
padding: 10px 0;
width: 90px;
}
.disable {
background-color: #b0b0b0;
}
}
.public-info-section {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
.public-icon {
width: 80px;
height: 80px;
}
.personal {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 24px;
color: #b0b0b0;
letter-spacing: 0;
margin-left: 30px;
}
.personal em {
display: inline-block;
width: 140px;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
vertical-align: text-bottom;
}
.public-name {
font-size: 28px;
color: #444;
margin-bottom: 5px;
}
}
.other {
padding: 30px 0;
font-family: PingFang-SC-Regular, sans-serif;
font-size: 24px;
color: #b0b0b0;
letter-spacing: 0;
em {
color: #d0021b;
text-decoration: underline;
}
}
}
.agreement-section {
margin: 30px 30px 0;
padding-bottom: 30px;
.agreement {
margin-bottom: 28px;
font-family: PingFang-SC-Regular, sans-serif;
font-size: 24px;
color: #b0b0b0;
a {
color: #d0021b;
}
&:before {
content: "";
width: 34px;
height: 34px;
vertical-align: middle;
background-image: url("/activity/have-gain/agree@2x.png");
background-repeat: no-repeat;
background-size: contain;
display: inline-block;
}
&.activate {
&:before {
background-image: url("/activity/have-gain/agree-a@2x.png");
}
}
}
.apply-btn {
height: 100px;
line-height: 100px;
background-color: #d0021b;
border-radius: 10px;
color: #fff;
text-align: center;
}
.disable {
background-color: #b0b0b0;
}
}
}
... ...
.have-gain-fail {
text-align: center;
.esp-header {
font-family: PingFang-SC-Medium, sans-serif;
font-size: 40px;
color: #444;
letter-spacing: 0;
text-align: center;
margin: 120px 0 20px;
}
.esp-explain {
font-family: PingFang-SC-Regular, sans-serif;
letter-spacing: 0;
padding: 0 40px;
text-align: left;
.explain-title {
font-size: 28px;
color: #444;
margin-bottom: 40px;
}
ul li {
font-size: 28px;
color: #b0b0b0;
padding: 0 20px;
margin-bottom: 20px;
line-height: 44px;
}
}
.reset-btn {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 32px;
color: #fff;
text-align: center;
width: 400px;
height: 100px;
line-height: 100px;
background-color: #444;
border-radius: 8px;
margin: 60px auto 20px;
}
.again-title {
font-family: PingFangSC-Regular, sans-serif;
font-size: 28px;
color: #b0b0b0;
letter-spacing: 0;
text-align: center;
}
}
... ...
.have-gain-index {
background-color: #f0f0f0;
.have-gain-item {
padding: 30px;
margin-bottom: 20px;
background-color: #fff;
}
.item-footer {
display: flex;
justify-content: space-between;
align-items: center;
text-align: center;
height: 120px;
margin-bottom: -30px;
padding-left: 20px;
.eps {
font-family: PingFangSC-Regular, sans-serif;
font-size: 28px;
color: #444;
span {
display: block;
}
.num {
font-family: SanFranciscoText-Medium, sans-serif;
font-size: 32px;
color: #444;
}
.people {
font-family: PingFangSC-Regular, sans-serif;
font-size: 24px;
color: #b0b0b0;
}
.accede-btn {
font-family: PingFang-SC-Medium, sans-serif;
font-size: 28px;
color: #444;
letter-spacing: 0;
border: 1px solid #444;
border-radius: 4px;
padding: 10px 30px;
}
}
}
}
... ...
@import "have-gain-dialog";
.have-gain-verify {
text-align: center;
.esp-audit {
font-family: PingFang-SC-Medium, sans-serif;
font-size: 40px;
color: #444;
margin-top: 200px;
}
.esp-progress {
font-family: PingFangSC-Regular, sans-serif;
font-size: 28px;
color: #b0b0b0;
padding: 20px 60px;
}
.add-btn {
font-family: PingFang-SC-Regular, sans-serif;
font-size: 32px;
color: #fff;
text-align: center;
width: 400px;
height: 100px;
line-height: 100px;
background-color: #444;
border-radius: 8px;
margin: 30px auto 0;
}
}
... ...
... ... @@ -45,7 +45,6 @@
&:nth-last-of-type(1) {
border-left: 1px solid #ccc;
border-radius: 0 0 10px 10px;
color: #d0021b;
}
}
... ...