Authored by 李靖

Merge branch 'master' into feature/ctxlj

Showing 53 changed files with 938 additions and 320 deletions
... ... @@ -66,16 +66,11 @@ exports.articleList = function(req, res, next) {
};
exports.map = function(req, res) {
Object.assign(responseData, {
pageHeader: headerModel.setNav({
navTitle: '地图',
navBtn: false
}),
let mapData = Object.assign({}, responseData, {
title: '地图'
});
res.render('trend/map', responseData);
res.render('trend/map', mapData);
};
exports.articleDetail = function(req, res, next) {
... ... @@ -100,26 +95,55 @@ exports.articleDetail = function(req, res, next) {
};
exports.classList = function(req, res, next) {
Object.assign(responseData, {
let classData = {
pageHeader: headerModel.setNav({
navTitle: '潮流课堂',
navBtn: false
}),
title: '潮流课堂'
});
title: '潮流课堂',
module: 'activity',
page: 'trend-class',
width750: true,
localCss: true
};
let params = {
storeId: req.query.storeId,
activityType: 1,
classType: true,
typeId: 0,
isFront: req.query.isFront || req.cookies.isFront
};
trendModel.classActList(params).then((result) => {
res.render('trend/class', Object.assign(responseData, result));
res.render('trend/class', Object.assign(classData, result));
}).catch(next);
};
exports.getClass = function(req, res, next) {
let params = {
storeId: req.query.storeId,
activityType: 1,
typeId: req.query.typeId,
isFront: req.query.isFront || req.cookies.isFront
};
trendModel.classList(params).then((result) => {
res.json(result);
}).catch(next);
};
exports.getVip = function(req, res, next) {
let params = {
uid: req.user.uid
};
trendModel.getVip(params).then((result) => {
res.json(result);
}).catch(next);
};
exports.activity = function(req, res, next) {
Object.assign(responseData, {
... ... @@ -314,7 +338,7 @@ exports.photography = function(req, res, next) {
id: req.query.id,
activityType: 4,
isFront: req.query.isFront || req.cookies.isFront,
filter: 2
filter: 3
};
trendModel.photography(params).then((result) => {
... ... @@ -322,6 +346,29 @@ exports.photography = function(req, res, next) {
}).catch(next);
};
exports.allStyle = function(req, res, next) {
Object.assign(responseData, {
pageHeader: headerModel.setNav({
navTitle: '所有风格',
navBtn: false
}),
title: '所有风格'
});
let params = {
storeId: req.query.storeId,
id: req.query.id,
activityType: 4,
isFront: req.query.isFront || req.cookies.isFront,
filter: 2
};
trendModel.allStyle(params).then((result) => {
res.render('trend/all-style', Object.assign(responseData, result));
}).catch(next);
};
exports.kidStyle = function(req, res, next) {
let resData = Object.assign({}, responseData, {
... ... @@ -675,6 +722,18 @@ exports.success = function(req, res) {
res.render('trend/success', Object.assign(responseData, {storeId: req.query.storeId}));
};
exports.err = function(req, res) {
Object.assign(responseData, {
pageHeader: headerModel.setNav({
navTitle: '预约',
navBtn: false
}),
title: '预约'
});
res.render('trend/err', responseData);
};
exports.changeDate = function(req, res, next) {
let params = {
... ...
... ... @@ -7,7 +7,9 @@
'use strict';
const service = global.yoho.StoreAPI;
const api = global.yoho.API;
const moment = require('moment');
const helpers = global.yoho.helpers;
// 格式年月日
const _formatDay = (day) => {
... ... @@ -64,7 +66,7 @@ const info = (params) => {
// 店铺信息
const storeInfo = (params) => {
return service.get('StoreController/getStoreInfoExtById', {
return service.get('InformationController/getStoreInfoExtById', {
storeId: params.storeId,
isFront: params.isFront
}, {
... ... @@ -173,6 +175,7 @@ const useList = (params) => {
return service.get('ActivityConfigController/getActivityNowList', {
storeId: params.storeId,
activityType: params.activityType,
trendClassTypeId: params.typeId || 0,
isFront: params.isFront
}, {
code: 200
... ... @@ -186,6 +189,7 @@ const oldList = (params) => {
return service.get('ActivityConfigController/getActivityEndList', {
storeId: params.storeId,
activityType: params.activityType,
trendClassTypeId: params.typeId || 0,
isFront: params.isFront
}, {
code: 200
... ... @@ -201,16 +205,38 @@ const oldList = (params) => {
});
};
// 课堂tab
const classTab = (params) => {
return service.get('ActivityConfigController/getAllTrendClassType', {
storeId: params.storeId,
isFront: params.isFront
}, {
code: 200
}).then(result => {
let resu = [];
if (result && result.data) {
resu = result.data;
}
return resu;
});
};
// 潮流课堂,活动列表
const classActList = (params) => {
return Promise.all([
let listApi = [
useList(params),
oldList(params)
]).then(result => {
];
if (params.classType === true) {
listApi.push(classTab(params));
}
return Promise.all(listApi).then(result => {
let resu = {
list: [],
oldList: []
oldList: [],
typeList: []
};
if (result && result[0] && result[0].data) {
... ... @@ -244,9 +270,9 @@ const classActList = (params) => {
build.push({
name: val.activityName,
image: val.image ? val.image.split(',')[0] : '',
image: helpers.image(val.image ? val.image.split(',')[0] : '', 750, 750),
startDate: _formatDay(val.activityStartDate),
endDate: endDate,
endDate: val.activityStartDate === val.activityEndDate ? '' : endDate,
startTime: _HM2(val.activityDayStartTime),
endTime: _HM2(val.activityDayEndTime),
free: val.isFree === 1,
... ... @@ -255,7 +281,8 @@ const classActList = (params) => {
apoStatus: val.appointStatus === 1,
id: val.id,
status: status,
storeId: params.storeId
storeId: params.storeId,
tag: val.trendClassTypeName
});
});
... ... @@ -283,9 +310,9 @@ const classActList = (params) => {
build.push({
name: val.activityName,
image: val.image ? val.image.split(',')[0] : '',
image: helpers.image(val.image ? val.image.split(',')[0] : '', 750, 750),
startDate: _formatDay(val.activityStartDate),
endDate: endDate,
endDate: val.activityStartDate === val.activityEndDate ? '' : endDate,
startTime: _HM2(val.activityDayStartTime),
endTime: _HM2(val.activityDayEndTime),
end: true,
... ... @@ -296,12 +323,37 @@ const classActList = (params) => {
storeId: params.storeId,
free: val.isFree === 1,
price: val.price,
tag: val.trendClassTypeName
});
});
resu.oldList = build;
}
if (result && result[2]) {
let build = [];
result[2].forEach(val => {
build.push({
name: val.typeName,
id: val.typeId
});
});
resu.typeList = build;
}
return resu;
});
};
// 二期,活动跟课堂功能分离
const classList = (params) => {
return Promise.all([
classActList(params)
]).then(newResult => {
let resu = {};
resu = newResult[0];
return resu;
});
};
... ... @@ -330,6 +382,7 @@ const classActDetail = (params) => {
storeId: params.storeId,
activityType: params.activityType,
id: params.activityId,
vip: result.data.userLevels
};
}
... ... @@ -435,6 +488,7 @@ const travel = (params) => {
resu.hairStylistId = result[0].hairStylistId;
resu.travelId = result[0].id;
resu.content = result[0].tourDetail;
resu.vip = result[0].userLevel;
let build = [];
... ... @@ -501,7 +555,8 @@ const adviser = (params) => {
summary: result[0].data.summary,
image: result[0].data.image,
isCanAppoint: result[0].data.isCanAppoint === 1,
storeId: params.storeId
storeId: params.storeId,
vip: result[0].data.userLevel
};
resu.content = result[0].data.detail;
... ... @@ -625,11 +680,36 @@ const getTimeList = (params) => {
});
};
// 所有风格
const allStyle = (params) => {
return Promise.all([
getStyle(params)
]).then(result => {
let resu = {
styleList: []
};
if (result[0] && result[0].data) {
let build = [];
result[0].data.forEach(val => {
build.push({
img: val.styleImage,
id: val.id,
name: val.styleName,
storeId: params.storeId
});
});
resu.styleList = build;
}
return resu;
});
};
// 摄影
const photography = (params) => {
return Promise.all([
photographyDetail(params),
getStyle(params),
adviserList(params),
getStylePush(params),
]).then(result => {
... ... @@ -640,39 +720,26 @@ const photography = (params) => {
styleList: [],
packageList: [],
swiper: [],
storeId: params.storeId
storeId: params.storeId,
id: params.id
};
if (result) {
if (result[0] && result[0].data) {
if (result[0].data.pictureUrl) {
resu.detail = {
bigPic: result[0].data.pictureUrl.split(',')[0]
bigPic: result[0].data.pictureUrl.split(',')[0],
name: result[0].data.name
};
}
resu.content = result[0].data.detail;
}
if (result[1] && result[1].data) {
let build = [];
result[1].data.forEach(val => {
build.push({
img: val.styleImage,
id: val.id,
name: val.styleName
});
});
resu.styleList = build;
}
if (result[2] && result[2].data) {
let build = [];
result[2].data.forEach(val => {
build.push({
name: val.activityName,
free: val.isFree === 1,
price: val.price,
... ... @@ -683,11 +750,11 @@ const photography = (params) => {
resu.packageList = build;
}
if (result[3] && result[3].data) {
if (result[2] && result[2].data) {
let build = [];
result[3].data.forEach(val => {
result[2].data.forEach(val => {
build.push({
pic: val.pushImg,
... ... @@ -1264,6 +1331,7 @@ const kidStyle = (params) => {
if (result[2] && result[2].data) {
if (result[2].data.pictureUrl) {
resu.detail = {
name: result[2].data.name,
bigPic: result[2].data.pictureUrl.split(',')[0]
};
}
... ... @@ -1413,6 +1481,15 @@ const getAbleTime = (params) => {
});
};
const getVip = (params) => {
return api.get('', {
method: 'app.passport.getUserBase',
uid: params.uid
}).then(result => {
return result;
});
};
module.exports = {
store,
articleDetail,
... ... @@ -1439,5 +1516,8 @@ module.exports = {
delOrder,
changeDate,
kids,
getAbleTime
getAbleTime,
allStyle,
classList,
getVip
};
... ...
... ... @@ -173,6 +173,7 @@ router.get('/trend/map', trend.map);
// 潮流之旅-潮流课堂-活动
router.get('/trend/class', trend.classList);
router.get('/trend/getClass', trend.getClass);
router.get('/trend/activity', trend.activity);
router.get('/trend/class-detail', trend.classDetail);
router.get('/trend/act-detail', trend.actDetail);
... ... @@ -187,6 +188,7 @@ router.get('/trend/kids', trend.kids);
router.get('/trend/photography', trend.photography);
router.get('/trend/style-detail', trend.styleDetail);
router.get('/trend/package-detail', trend.packageDetail);
router.get('/trend/all-style', trend.allStyle);
// 潮流之旅-儿童造型
router.get('/trend/kid-style', trend.kidStyle);
... ... @@ -218,6 +220,8 @@ router.get('/trend/changeDate', trend.changeDate);
// 预约成功页
router.get('/trend/success', trend.success);
router.get('/trend/err', trend.err);
router.get('/trend/getVip', trend.getVip);
// 协议页面
router.get('/trend/need-know1', trend.needKnow);
... ...
... ... @@ -19,7 +19,7 @@
</div>
{{# detail}}
{{#if isCanAppoint}}
<a class="foot-btn ok" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=3">立即预约</a>
<a class="foot-btn ok check-vip" data-vip="{{vip}}" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=3">立即预约</a>
{{/if}}
{{/ detail}}
</div>
... ...
<div class="trend-c no-mg" id="no-download">
<div class="push-style">
{{# styleList}}
<a href="http://m.yohobuy.com/activity/trend/style-detail?id={{id}}&storeId={{storeId}}&styleName={{name}}">
<div class="pic limit-pic">
<img src="{{image img}}">
<p class="title eps">{{name}}</p>
</div>
</a>
{{/ styleList}}
</div>
</div>
... ...
... ... @@ -3,12 +3,12 @@
<div class="apt-info">
<div>当前预约门店:{{name}}</div>
<div>
<span class="icon-pic adr"></span>
<span class="iconfont adr">&#xe70c;</span>
门店地址:{{adr}}
</div>
<a href="tel:{{telephone}}">
<div>
<span class="icon-pic tel"></span>
<span class="iconfont tel">&#xe70a;</span>
门店电话:{{telephone}}
</div>
</a>
... ... @@ -18,14 +18,14 @@
{{# classChosen}}
<div class="chose-item select depend">
<span class="label">潮流课堂</span>
<input class="inp chosen-class eps" type="text" label="潮流课堂" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-class eps grey-font" disabled="disabled" type="text" label="潮流课堂" placeholder="未选择" readonly="readonly" />
<span class="iconfont icon-arr">&#xe604;</span>
</div>
{{/ classChosen}}
{{# actChosen}}
<div class="chose-item select depend">
<span class="label">活动</span>
<input class="inp chosen-class eps" type="text" label="活动" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-class eps grey-font" disabled="disabled" type="text" label="活动" placeholder="未选择" readonly="readonly" />
<span class="iconfont icon-arr">&#xe604;</span>
</div>
{{/ actChosen}}
... ... @@ -33,7 +33,7 @@
<div class="chose-item select depend">
<span class="label">发型师</span>
<a href="http://m.yohobuy.com/activity/trend/chosen-cutter?storeId={{storeId}}&chosenType=5&typeStatus={{typeStatus}}">
<input class="inp chosen-cutter eps require" type="text" label="发型师" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-cutter eps require" disabled="disabled" type="text" label="发型师" placeholder="未选择" readonly="readonly" />
</a>
<span class="iconfont icon-arr">&#xe604;</span>
</div>
... ... @@ -42,7 +42,7 @@
<div class="chose-item select depend">
<span class="label">选择套餐</span>
<a href="http://m.yohobuy.com/activity/trend/chosen-package?storeId={{storeId}}&chosenType=4&typeStatus={{typeStatus}}">
<input class="inp chosen-package eps require" label="套餐" type="text" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-package eps require" disabled="disabled" label="套餐" type="text" placeholder="未选择" readonly="readonly" />
</a>
<span class="iconfont icon-arr">&#xe604;</span>
</div>
... ... @@ -51,7 +51,7 @@
<div class="chose-item select">
<span class="label">选择风格</span>
<a href="http://m.yohobuy.com/activity/trend/chosen-style?storeId={{storeId}}&chosenType=1&typeStatus={{typeStatus}}">
<input class="inp chosen-style eps require" type="text" label="风格" placeholder="未选择 " readonly="readonly" />
<input class="inp chosen-style eps require" disabled="disabled" type="text" label="风格" placeholder="未选择 " readonly="readonly" />
</a>
<span class="iconfont icon-arr">&#xe604;</span>
</div>
... ... @@ -60,7 +60,7 @@
<div class="chose-item select{{#if hideChosen}} depend{{/if}}">
<span class="label">潮流顾问</span>
<a href="http://m.yohobuy.com/activity/trend/chosen-adviser?storeId={{storeId}}&chosenType=3&typeStatus={{typeStatus}}">
<input class="inp chosen-adviser eps require" type="text" label="潮流顾问" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-adviser eps require" disabled="disabled" type="text" label="潮流顾问" placeholder="未选择" readonly="readonly" />
</a>
<span class="iconfont icon-arr">&#xe604;</span>
</div>
... ... @@ -68,7 +68,7 @@
<div class="chose-item select{{#if hideChosen}} need{{/if}}">
<span class="label">选择时间</span>
<a href="http://m.yohobuy.com/activity/trend/chosen-time?storeId={{storeId}}&chosenType=2&typeStatus={{typeStatus}}">
<input class="inp chosen-time require" type="text" label="时间" placeholder="未选择" readonly="readonly" />
<input class="inp chosen-time require" disabled="disabled" type="text" label="时间" placeholder="未选择" readonly="readonly" />
</a>
<span class="iconfont icon-arr">&#xe604;</span>
</div>
... ...
... ... @@ -3,8 +3,8 @@
{{#if coverUrl}}
<img src="{{image coverUrl}}">
{{/if}}
<p class="title">{{titles}}</p>
<p class="title eps">{{titles}}</p>
<p class="tip-s hide">{{summary}}</p>
<div class="content">{{{content}}}</div>
<div class="content no-pd-top">{{{content}}}</div>
</div>
</div>
... ...
<div class="trend-c" id="no-download">
<div class="side-main">
<div class="package-c">
<ul class="package">
<ul class="package chosen-package">
{{# packageChosen}}
<li class="package-item">
<div class="top clearfix">
... ...
<div class="trend-c" id="no-download">
<div class="class class-detail">
<div class="class-item clearfix">
<div class="class-item clearfix no-pd-top">
<div class="info">
<span class="name" id="{{id}}">{{name}}</span>
{{#if price}}
<span class="price"><span>¥</span>{{price}}</span>
{{else}}
<span class="price">免费</span>
<span class="price price-2">免费</span>
{{/if}}
</div>
<div class="tip">
<div>
<p>日期:{{startDate}}{{endDate}}</p>
<p>时间:{{startTime}}{{endTime}}</p>
<p>日期:{{startDate}}{{#if endDate}}{{/if}}{{endDate}}</p>
<p>时间:{{startTime}}{{#if endTime}}{{/if}}{{endTime}}</p>
</div>
</div>
<div class="content">
... ... @@ -23,7 +23,7 @@
{{#if status}}
{{> (lookup . 'status')}}
{{#*inline '1'}}
<a class="foot-btn ok clearCookie" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus={{activityType}}">立即预约</a>
<a class="foot-btn ok clearCookie check-vip" data-vip="{{vip}}" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus={{activityType}}">立即预约</a>
{{/inline}}
{{#*inline '2'}}
<a class="foot-btn full">已约满</a>
... ...
<div class="trend-c no-pb share-class" id="no-download">
<div class="scroll-class">
<span class="scroll-item active">ALL</span>
{{# typeList}}
<span class="scroll-item" id={{id}}>{{name}}</span>
{{/typeList}}
</div>
<div class="package-top">
<span></span>
预约后需到店付款
</div>
{{# list}}
{{> trend/class}}
{{/ list}}
{{#if oldList}}
<div class="big-title-2">精彩回顾</div>
{{/if}}
{{# oldList}}
{{> trend/class}}
{{/ oldList}}
<div class="class-c">
{{# list}}
{{> trend/class}}
{{/ list}}
{{#if oldList}}
<div class="big-title-2">精彩回顾</div>
{{/if}}
{{# oldList}}
{{> trend/class}}
{{/ oldList}}
</div>
</div>
... ...
... ... @@ -7,14 +7,16 @@
预约后需到店付款
</div>
{{/if}}
{{# packageList}}
{{> trend/cutter-package}}
{{/ packageList}}
<div>
{{# packageList}}
{{> trend/cutter-package}}
{{/ packageList}}
</div>
{{#if dateList}}
<div class="big-title">可预约时间</div>
{{> trend/date-list}}
{{/if}}
<div class="big-title">作品展示</div>
<div class="big-title no-border">作品展示</div>
<div class="display-list clearfix">
<div class="pull-pic-list clearfix">
{{# stylist}}
... ...
<div class="trend-c">
<div class="err-c">
<div class="pic"></div>
<p class="tips">sorry,您不符合预约条件,看看其他预约吧</p>
</div>
</div>
... ...
<div class="trend-c kid-style" id="no-download">
{{# detail}}
{{#if bigPic}}
<img src="{{image bigPic}}">
{{/if}}
{{#if name}}
<div class="left-title center eps">{{name}}</div>
{{/if}}
{{/ detail}}
{{#if content}}
<div class="box-padding">
{{# detail}}
{{#if bigPic}}
<img src="{{image bigPic}}">
{{/ if}}
{{/ detail}}
<div class="left-title">儿童造型</div>
{{#if content}}
<div class="content">{{{content}}}</div>
<div class="content no-pd-top">{{{content}}}</div>
{{/if}}
</div>
<div class="tip-tittle">
... ... @@ -24,8 +26,10 @@
<span></span>
预约后需到店付款
</div>
{{# packageList}}
{{> trend/cutter-package}}
{{/packageList}}
<div>
{{# packageList}}
{{> trend/cutter-package}}
{{/packageList}}
</div>
<a class="foot-btn ok clearCookie" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=5">立即预约</a>
</div>
... ...
... ... @@ -2,22 +2,22 @@
{{# userInfo}}
<div class="detail-top">预约状态:{{status}}</div>
{{/ userInfo}}
<div class="detail-list">
<div class="detail-list detail-list-2">
{{#storeInfo}}
<a class="list-item" href="//m.yohobuy.com/activity/trend/store?storeId={{storeId}}">
<span class="icon-pic shop"></span>
<span class="iconfont shop">&#xe705;</span>
门店:{{name}}
<span class="iconfont icon-arr">&#xe604;</span>
</a>
<a class="list-item"{{#if longitude}} href="//m.yohobuy.com/activity/trend/map?jd={{longitude}}&wd={{latitude}}&name={{storeName}}&intro={{introduction}}&tel={{telephone}}&adr={{address}}&pic={{image pictureUrl}}"{{/if}}>
<span class="icon-pic adr"></span>
<span class="iconfont adr">&#xe70c;</span>
门店地址:{{adr}}
{{#if longitude}}
<span class="iconfont icon-arr">&#xe604;</span>
{{/if}}
</a>
<a class="list-item" href="tel:{{telephone}}">
<span class="icon-pic tel"></span>
<span class="iconfont tel">&#xe70a;</span>
门店电话:{{telephone}}
<span class="iconfont icon-arr">&#xe604;</span>
</a>
... ... @@ -25,7 +25,7 @@
{{/ storeInfo}}
</div>
{{# adviserDetail}}
<div class="detail-list">
<div class="detail-list big-list">
{{# adviser}}
<a class="list-item" href="{{../userInfo/originUrl}}">
<span class="big">潮流之旅</span>
... ... @@ -57,7 +57,7 @@
</a>
{{/ act}}
</div>
<div class="detail-list{{# adviser}} hide{{/ adviser}}">
<div class="detail-list{{# adviser}} hide{{/ adviser}} detail-list-3">
<div class="list-item">
<div class="package-item">
<div class="top clearfix">
... ... @@ -101,12 +101,12 @@
</div>
</div>
{{/ adviserDetail}}
<div class="detail-list">
<div class="detail-list detail-list-3">
{{# userInfo}}
<div class="list-item padding">
{{#if ../adviserDetail/adviser}}
<div class="chosen chosen-detail{{#if ../adviserDetail/hideAd}} hide{{/if}}">
<a class="chose-item select" href="//m.yohobuy.com/activity/trend/adviser?id={{../adviserDetail/id}}&typeStatus={{../adviserDetail/activityType}}&storeId={{../adviserDetail/storeId}}">
<a class="chose-item select chose-item-2" href="//m.yohobuy.com/activity/trend/adviser?id={{../adviserDetail/id}}&typeStatus={{../adviserDetail/activityType}}&storeId={{../adviserDetail/storeId}}">
<span class="label">潮流顾问</span>
<input class="inp eps" type="text" value="{{../userInfo/personName}}" readonly="readonly" />
<span class="iconfont icon-arr">&#xe604;</span>
... ... @@ -116,7 +116,7 @@
{{#if ../adviserDetail/kidStyle}}
{{#if ../userInfo/personName}}
<div class="chosen chosen-detail">
<a class="chose-item select" href="//m.yohobuy.com/activity/trend/cutter?storeId={{../adviserDetail/storeId}}&id={{../userInfo/personId}}&typeStatus={{../adviserDetail/activityType}}&cutterName={{../userInfo/personName}}">
<a class="chose-item select chose-item-2" href="//m.yohobuy.com/activity/trend/cutter?storeId={{../adviserDetail/storeId}}&id={{../userInfo/personId}}&typeStatus={{../adviserDetail/activityType}}&cutterName={{../userInfo/personName}}">
<span class="label">发型师</span>
<input class="inp eps" type="text" value="{{../userInfo/personName}}" readonly="readonly" />
<span class="iconfont icon-arr">&#xe604;</span>
... ... @@ -169,7 +169,7 @@
</div>
{{/if}}
{{#if userNote}}
<div>
<div class="tip-limit">
<span class="tip-top">备注:</span>
<span class="tip-main">{{userNote}}</span>
</div>
... ...
<div class="trend-c share-photography" id="no-download">
{{# detail}}
{{#if bigPic}}
<img src="{{image bigPic}}">
{{/if}}
{{#if name}}
<div class="left-title center eps">{{name}}</div>
{{/if}}
{{/ detail}}
<div class="box-padding">
{{# detail}}
{{#if bigPic}}
<img src="{{image bigPic}}">
{{/if}}
{{/ detail}}
<div class="left-title">儿童摄影</div>
{{#if content}}
<div class="content">{{{content}}}</div>
<div class="content no-pd-top">{{{content}}}</div>
{{/if}}
</div>
<div class="big-title">当季最IN主题</div>
<div class="swiper-c">
<div class="swiper-container">
<div class="swiper-wrapper">
{{# swiper}}
<div class="swiper-slide">
<a href="http://m.yohobuy.com/activity/trend/style-detail?id={{id}}&storeId={{storeId}}&styleName={{name}}">
<div class="pic limit-pic">
<img src="{{image pic}}">
</div>
<p class="title eps">{{name}}</p>
<p class="main">{{introduction}}</p>
</a>
</div>
{{/ swiper}}
</div>
<div class="swiper-pagination"></div>
</div>
<div class="big-title no-border font-normal">当季最IN主题
<a class="more" href="//m.yohobuy.com/activity/trend/all-style?storeId={{storeId}}&id={{id}}">MORE</a>
</div>
<div class="push-style">
{{# swiper}}
<a href="http://m.yohobuy.com/activity/trend/style-detail?id={{id}}&storeId={{storeId}}&styleName={{name}}">
<div class="pic limit-pic">
<img src="{{image pic}}">
<p class="title eps">{{name}}</p>
</div>
</a>
{{/ swiper}}
</div>
<div class="more-article-c">
<a class="more-article" href="//m.yohobuy.com/activity/trend/all-style?storeId={{storeId}}&id={{id}}">查看所有风格
<span class="iconfont icon-arr">&#xe604;</span>
</a>
</div>
{{#if packageList}}
<div class="tab clearfix">
<div class="tab-top">
<span class="active">风格</span>
<span>套餐</span>
<span>推荐套餐</span>
</div>
<div class="tab-item">
<div class="tab-ul clearfix">
<div class="pull-pic-list clearfix">
{{# styleList}}
<div class="box">
<a href="http://m.yohobuy.com/activity/trend/style-detail?id={{id}}&storeId={{../storeId}}&styleName={{name}}">
<img data="{{image img}}">
</a>
</div>
{{/ styleList}}
</div>
</div>
</div>
<div class="tab-item hide">
<div class="package-top">
<span></span>
预约后需到店付款
... ... @@ -59,5 +47,6 @@
</ul>
</div>
</div>
{{/if}}
<a class="foot-btn ok clearCookie" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=4">立即预约</a>
</div>
... ...
<div class="trend-c no-pb share-store" id="no-download">
<div class="trend-c no-pb no-mg share-store" id="no-download">
<div class="article-2">
{{# infos}}
{{> trend/article}}
{{/ infos}}
</div>
{{#if infos}}
{{#detail}}
<a class="more-article" href="//m.yohobuy.com/activity/trend/article-list?storeId={{storeId}}&name={{storeName}}&intro={{introduction}}&pic={{image pictureUrl}}">更多活动资讯
<span class="iconfont icon-arr">&#xe604;</span>
</a>
<div class="more-article-c">
<a class="more-article" href="//m.yohobuy.com/activity/trend/article-list?storeId={{storeId}}&name={{storeName}}&intro={{introduction}}&pic={{image pictureUrl}}">更多活动资讯
<span class="iconfont icon-arr">&#xe604;</span>
</a>
</div>
{{/ detail}}
{{/if}}
<div class="article">
... ... @@ -17,22 +21,22 @@
<img src="{{image pictureUrl}}">
</div>
{{/if}}
<p class="title">{{storeName}}</p>
<p class="title eps">{{storeName}}</p>
<div class="tip tip-2">{{introduction}}</div>
<div class="list">
<a class="list-item">
<span class="icon-pic clock"></span>
<span class="iconfont time">&#xe70d;</span>
营业时间:{{businessTime}}
</a>
<a class="list-item"{{#if longitude}} href="//m.yohobuy.com/activity/trend/map?jd={{longitude}}&wd={{latitude}}&name={{storeName}}&intro={{introduction}}&tel={{telephone}}&adr={{address}}&pic={{image pictureUrl}}"{{/if}}>
<span class="icon-pic adr"></span>
<span class="iconfont adr">&#xe70c;</span>
门店地址:{{address}}
{{#if longitude}}
<span class="iconfont icon-arr">&#xe604;</span>
{{/if}}
</a>
<a class="list-item" href="tel:{{telephone}}">
<span class="icon-pic tel"></span>
<span class="iconfont tel">&#xe70a;</span>
门店电话:{{telephone}}
<span class="iconfont icon-arr">&#xe604;</span>
</a>
... ... @@ -41,6 +45,7 @@
{{/ detail}}
</div>
</div>
{{#if storeSon}}
<div class="appointment">
<div class="title">活动预约</div>
{{# storeSon}}
... ... @@ -49,4 +54,5 @@
</a>
{{/ storeSon}}
</div>
{{/if}}
</div>
... ...
<div class="trend-c" id="no-download">
<div class="box-padding style-detail">
<div class="box-padding style-detail no-border">
<div class="content">{{introduction}}</div>
<input class="share-pic" type="hidden" value="{{sharePic}}" />
<div class="pull-pic-list clearfix">
<div>
{{# picList}}
<div class="box">
<img data="{{image imgSrc}}" />
</div>
<img class="detail-pic" src="{{image imgSrc}}" />
{{/ picList}}
</div>
</div>
</div>
<a class="foot-btn ok" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=4">立即预约</a>
<div class="big-pic">
... ...
<div class="trend-c travel" id="no-download">
<div class="trend-c travel change-bottom" id="no-download">
<div class="box">
<div class="content content-padding2">
{{{content}}}
... ... @@ -9,9 +9,11 @@
潮流顾问
</div>
{{/if}}
{{# adviser}}
{{> trend/adviser}}
{{/ adviser}}
<div class="adviser-c">
{{# adviser}}
{{> trend/adviser}}
{{/ adviser}}
</div>
{{#if dateList}}
<div class="big-title">
可预约时间
... ... @@ -24,6 +26,6 @@
<p>2、您可以和2-3名好友一起来参加活动,共同体验潮流之旅;</p>
<p>3、活动时长预估时间,如超出时间请您谅解。</p>
</div>
<a class="foot-btn ok clearCookie" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=3">立即预约</a>
<a class="foot-btn ok clearCookie check-vip" data-vip="{{vip}}" href="//m.yohobuy.com/activity/trend/appointment?storeId={{storeId}}&typeStatus=3">立即预约</a>
<input type="hidden" id="hairStylistId" value="{{hairStylistId}}" />
</div>
... ...
<div class="class">
<div class="class-item clearfix">
<a class="pic" href="//m.yohobuy.com/activity/trend/act-detail?activityId={{id}}&name={{name}}&price={{price}}&startDate={{startDate}}&endDate={{endDate}}&startTime={{startTime}}&endTime={{endTime}}&status={{status}}&storeId={{storeId}}&pic={{image image}}">
<img src="{{image image}}">
<img src="{{image2 image mode=2 q=60}}">
<div class="info">
<span class="name">{{name}}</span>
<span class="name eps">{{name}}</span>
{{#if free}}
<span class="free">免费</span>
{{else}}
... ... @@ -12,7 +12,7 @@
</div>
<div class="tip">
<div>
<p>日期:{{startDate}}{{endDate}}</p>
<p>日期:{{startDate}}{{#if endDate}}{{/if}}{{endDate}}</p>
<p>时间:{{startTime}}{{endTime}}</p>
</div>
{{#if end}}
... ...
... ... @@ -4,7 +4,7 @@
</div>
<div class="adviser-info">
{{#if image}}
<div class="pic" style="background-image:url({{image image}})"></div>
<div class="pic" data-pic="{{image image}}" style="background-image:url({{image image}})"></div>
{{/if}}
{{#if name}}
<div class="name">{{name}}</div>
... ...
... ... @@ -4,7 +4,7 @@
<img src="{{image coverUrl}}">
</a>
<a href="//m.yohobuy.com/activity/trend/article-detail?informationId={{id}}">
<p class="title">{{title}}</p>
<p class="title eps">{{title}}</p>
</a>
<div class="tip">
<a href="//m.yohobuy.com/activity/trend/article-detail?informationId={{id}}">{{summary}}</a>
... ...
<div class="class">
<div class="class-item clearfix">
<a class="pic" href="//m.yohobuy.com/activity/trend/class-detail?activityId={{id}}&name={{name}}&price={{price}}&startDate={{startDate}}&endDate={{endDate}}&startTime={{startTime}}&endTime={{endTime}}&status={{status}}&storeId={{storeId}}&pic={{image image}}">
<img src="{{image image}}">
<span class="tag">{{tag}}</span>
<img src="{{image2 image mode=2 q=60}}">
<div class="info">
<span class="name">{{name}}</span>
<span class="name eps">{{name}}</span>
{{#if free}}
<span class="free">免费</span>
{{else}}
... ... @@ -12,7 +13,7 @@
</div>
<div class="tip">
<div>
<p>日期:{{startDate}}{{endDate}}</p>
<p>日期:{{startDate}}{{#if endDate}}{{/if}}{{endDate}}</p>
<p>时间:{{startTime}}{{endTime}}</p>
</div>
{{#if end}}
... ...
... ... @@ -21,7 +21,8 @@ const domains = {
liveApi: 'http://testapi.live.yohops.com:9999/',
imSocket: 'ws://socket.yohobuy.com:10240',
imCs: 'http://im.yohobuy.com/api',
platformApi: 'http://192.168.102.48:8088/'
platformApi: 'http://192.168.102.48:8088/',
store: 'http://192.168.102.47:8080/portal-gateway/wechat/'
};
module.exports = {
... ... @@ -134,7 +135,7 @@ if (isProduction) {
api: 'http://api.yoho.yohoops.org/',
service: 'http://service.yoho.yohoops.org/',
global: 'http://api-global.yohobuy.com',
store: '', // 线上域名尚未确定
store: 'http://openstore.yohobuy.com', // 线上域名尚未确定
liveApi: 'http://api.live.yoho.cn/',
singleApi: 'http://single.yoho.cn/',
imSocket: 'wss://imsocket.yohobuy.com:443',
... ... @@ -204,7 +205,7 @@ if (isProduction) {
api: process.env.TEST_API || 'http://api-test1.yohops.com:9999/',
service: process.env.TEST_SERVICE || 'http://service-test1.yohops.com:9999/',
global: process.env.TEST_GLOBAL || 'http://global-test-soa.yohops.com:9999/',
store: process.env.TEST_STORE || 'http://192.168.102.210:8080/portal-gateway/',
store: process.env.TEST_STORE || 'http://192.168.102.210:8080/portal-gateway/wechat/',
liveApi: process.env.TEST_LIVE || 'http://testapi.live.yohops.com:9999/',
singleApi: process.env.TEST_SINGLE || 'http://api-test1.yohops.com:9999/',
imSocket: process.env.TEST_IM_SOCKET || 'ws://socket.yohobuy.com:10240',
... ...
{
"name": "m-yohobuy-node",
"version": "5.9.20",
"version": "5.9.21",
"private": true,
"description": "A New Yohobuy Project With Express",
"repository": {
... ...
No preview for this file type
... ... @@ -2,7 +2,11 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
<<<<<<< HEAD
Created by FontForge 20120731 at Fri Jun 9 09:57:45 2017
=======
Created by FontForge 20120731 at Tue Jul 4 10:11:46 2017
>>>>>>> master
By admin
</metadata>
<defs>
... ...
No preview for this file type
No preview for this file type
{{# list}}
{{> class}}
{{/ list}}
{{#if oldList}}
<div class="big-title-2">精彩回顾</div>
{{/if}}
{{# oldList}}
{{> class}}
{{/ oldList}}
\ No newline at end of file
... ...
<div class="class">
<div class="class-item clearfix">
<a class="pic" href="//m.yohobuy.com/activity/trend/class-detail?activityId={{id}}&name={{name}}&price={{price}}&startDate={{startDate}}&endDate={{endDate}}&startTime={{startTime}}&endTime={{endTime}}&status={{status}}&storeId={{storeId}}&pic={{image image}}">
<span class="tag">{{tag}}</span>
<img src="{{image2 image mode=2 q=60}}">
<div class="info">
<span class="name">{{name}}</span>
{{#if free}}
<span class="free">免费</span>
{{else}}
<span class="price"><span>¥</span>{{price}}</span>
{{/if}}
</div>
<div class="tip">
<div>
<p>日期:{{startDate}}{{endDate}}</p>
<p>时间:{{startTime}}{{endTime}}</p>
</div>
{{#if end}}
<div class="end a">已结束</div>
{{else}}
{{#if needApo}}
{{#if apoStatus}}
<div class="a">立即预约</div>
{{else}}
<div class="disable a">已约满</div>
{{/if}}
{{else}}
<div class="any-time a">免预约</div>
{{/if}}
{{/if}}
</div>
</a>
</div>
</div>
\ No newline at end of file
... ...

727 Bytes | W: | H:

2.12 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

3.6 KB | W: | H:

2.53 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

3.34 KB | W: | H:

1.94 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

3.38 KB | W: | H:

2.07 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

737 Bytes | W: | H:

2.08 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

1.04 KB | W: | H:

2.52 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

710 Bytes | W: | H:

1.74 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

752 Bytes | W: | H:

2.03 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin

3.34 KB | W: | H:

1.67 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
... ... @@ -49,6 +49,7 @@ if ($('.chosen-select').length > 0) {
timeResult = indexAct.getAbleTime();
if (timeResult.data) {
$('.chosen-time').addClass('grey-font');
$('.chosen-time').val(indexAct._formatDay(new Date(timeResult.data * 1000))).addClass('disabled');
$('.chosen-time').parents('a').attr('href', 'javascript:void(0)'); // eslint-disable-line
window.setCookie('timeStr', timeResult.data);
... ...
require('activity/trend/trend.page.css');
require('activity/trend/share');
let tip = require('plugin/tip');
let classObj = {};
classObj = {
init: function() {
let that = this;
$('.scroll-class .scroll-item').on('click', function() {
let $this = $(this);
let $thisId = $this.attr('id');
$this.addClass('active').siblings('span').removeClass('active');
that.getClass($thisId);
});
},
getClass: function($thisId) {
let classHbs = require('activity/trend/class-list.hbs');
let typeId = $thisId;
$.ajax({
url: '/activity/trend/getClass',
data: {
storeId: window.queryString.storeId,
isFront: window.queryString.isFront,
typeId: typeId
},
success: function(data) {
let classHtml = classHbs(data);
$('.class-c').html(classHtml);
},
error: function() {
tip.show('网络断开了~~');
}
});
}
};
$(
function() {
classObj.init();
}
);
... ...
... ... @@ -100,6 +100,10 @@ $('.order-btn a').on('click', function() {
cancelOrder();
});
if ($('.fail-pic').length > 0) {
$('html').css('background-color', '#fff');
}
// 将表单数据存入cookie
if ($('#detail-time').length > 0 && window.cookie('detailtTimeStr')) {
// 修改预约时间
... ...
... ... @@ -7,6 +7,7 @@ let indexAct = require('activity/trend/index');
require('common');
require('activity/trend/share');
require('activity/trend/check-vip');
if ($('#map').length > 0) {
require('activity/trend/map');
}
... ... @@ -17,6 +18,16 @@ $(
window.setCookie('travelType', '3');
}
if ($('.kids-pic').length > 0) {
$('html').css('background-color', '#fff');
}
if ($('.success').length > 0) {
$('html').css('background-color', '#fff');
}
if ($('.err-c').length > 0) {
$('html').css('background-color', '#fff');
}
// 风格详情页图片点击放大
$('.pull-pic-list .box').on('click', function() {
let thisClick = $(this).index();
... ... @@ -24,6 +35,12 @@ $(
indexAct.pullPicBig(thisClick);
});
$('.detail-pic').on('click', function() {
let thisClick = $(this).index();
indexAct.pullPicBig(thisClick);
});
// 瀑布流
if ($('.pull-pic-list').length > 0) {
indexAct.pullPic();
... ... @@ -44,14 +61,14 @@ $(
$('#' + openId).addClass('active');
});
$('.tab .tab-top span').on('click', function() {
let $this = $(this);
let tabIndex = $this.index();
// $('.tab .tab-top span').on('click', function() {
// let $this = $(this);
// let tabIndex = $this.index();
$this.addClass('active').siblings('span').removeClass('active');
$this.parents('.tab').find('.tab-item:eq(' + tabIndex + ')').show().siblings('.tab-item').hide();
});
// $this.addClass('active').siblings('span').removeClass('active');
// $this.parents('.tab').find('.tab-item:eq(' + tabIndex + ')').show().siblings('.tab-item').hide();
// });
$('.tab-item:first').show();
// $('.tab-item:first').show();
}
);
... ...
let checkObj = {};
checkObj = {
init: function() {
let that = this;
let thisVip = '';
let limitVip = String($('.check-vip').data('vip'));
$('.check-vip').on('click', function() {
that.getVip().then(result => {
if (result === 400) {
let newUrl = '//m.yohobuy.com/signin.html?refer=' + encodeURIComponent(location.href);
location.href = newUrl;
} else {
thisVip = result;
if ((limitVip === '-1') || (limitVip.indexOf(thisVip) >= 0)) {
let href = $('.check-vip').attr('href');
window.location.href = href;
} else {
window.location.href = 'http://m.yohobuy.com/activity/trend/err';
}
}
});
return false;
});
},
getVip: function() {
return $.ajax({
url: '/activity/trend/getVip',
data: {}
}).then(result => {
let thisVip = '';
if (result && result.data) {
thisVip = result.data.vipLevel;
return thisVip;
} else {
return result.code;
}
});
}
};
$(
function() {
checkObj.init();
}
);
... ...
... ... @@ -259,19 +259,23 @@ function pullPicBig(cIndex) {
function chosenDefault() {
if ($('.class-detail').length > 0) {
clearCookieArr(3);
window.setCookie('chosenClass', $('.class-detail').find('.name').text());
window.setCookie('packageId', $('.class-detail').find('.name').attr('id'));
}
if ($('.adviser-info').find('.name').length > 0) {
clearCookieArr(3);
window.setCookie('chosenCutter', $('.adviser-info').find('.name').text());
window.setCookie('chosenAdviser', $('.adviser-info').find('.name').text());
window.setCookie('cutterId', $('.cutter-id').val());
}
if ($('.style-detail').length > 0) {
clearCookieArr(3);
window.setCookie('styleId', window.queryString.id);
window.setCookie('chosenStyle', ' ' + decodeURI(window.queryString.styleName) + ' ');
}
if ($('.package-detail').length > 0 && $('.foot-btn').length > 0) {
clearCookieArr(3);
window.setCookie('chosenPackage', $('.package-detail').find('.name').text());
window.setCookie('packageLimit', $('.package-detail').find('.limit').val());
window.setCookie('packageStyle', $('.package-detail').find('.styleid').val());
... ...
... ... @@ -2,7 +2,6 @@ $(
function() {
// 地图初始化
let w_height = $(window).height();
let h_height = $('.yoho-header').height();
let mapPic = decodeURI(window.queryString.pic);
let mapName = decodeURI(window.queryString.name);
let napAdr = decodeURI(window.queryString.adr);
... ... @@ -26,7 +25,7 @@ $(
});
let map = '';
$('#map').css('height', (w_height - h_height) + 'px');
$('#map').css('height', w_height + 'px');
map = new window.BMap.Map('map');
// 百度地图API功能
... ...
... ... @@ -37,7 +37,7 @@ if ((window.queryString.typeStatus === '3') && ($('.adviser-info').length > 0))
share({
title: '潮流顾问介绍-' + $('.trend-c').find('.name:eq(0)').text(),
desc: $('.trend-c').find('.intro:eq(0)').text(),
imgUrl: urlHttp($('.trend-c').find('.pic:eq(0)').attr('src'))
imgUrl: urlHttp($('.trend-c').find('.pic:eq(0)').data('pic'))
});
}
... ... @@ -118,7 +118,7 @@ if ($('.share-cutter').length > 0) {
share({
title: '发型师介绍-' + $('.trend-c').find('.name:eq(0)').text(),
desc: $('.trend-c').find('.info:eq(0)').text(),
imgUrl: urlHttp($('.trend-c').find('.pic').attr('src'))
imgUrl: urlHttp($('.trend-c').find('.pic').data('pic'))
});
}
... ... @@ -178,6 +178,7 @@ if ($('.share-class').length > 0) {
// 订单列表页,订单详情页
if ($('.share-order').length > 0) {
$('html').css('background-color', '#ebebeb');
share({
title: $('.trend-c').find('.share-info').attr('data-name'),
desc: $('.trend-c').find('.share-info').attr('data-intro'),
... ...
... ... @@ -110,7 +110,9 @@ $.ajax({
withCredentials: true
},
data: {
shop_id: shopId
shop_id: shopId,
order: '0',
type: 'default'
},
success: function(result) {
let $result = $(result);
... ...
... ... @@ -3,11 +3,23 @@
@import "layout/swiper";
@import "map";
html {
background-color: #ebebeb;
}
.trend-c.map-c {
padding: 0;
margin: 0;
}
.dialog-box {
background: hsla(100, 100%, 100%, 1) !important;
}
.dialog-right-btn {
border-radius: 0 !important;
}
.trend-c {
width: 100%;
position: relative;
... ... @@ -15,6 +27,64 @@
background-color: #ebebeb;
margin-bottom: 88px;
.font-normal {
font-weight: normal !important;
}
.center {
text-align: center;
}
&.change-bottom {
margin-bottom: 0;
padding-bottom: 88px;
}
.err-c {
background-color: #fff;
padding-top: 100px;
.pic {
background-image: resolve("activity/trend/err.png");
width: 175px;
height: 175px;
margin: 0 auto;
background-size: 100% 100%;
}
.tips {
text-align: center;
line-height: 100px;
color: #444;
font-size: 24px;
}
}
.detail-pic {
margin: 20px 0;
}
.push-style {
.pic {
position: relative;
}
.title {
color: #fff;
font-size: 38px;
position: absolute;
bottom: 0;
left: 0;
background-image: resolve("activity/trend/title-bg.png");
width: 100%;
height: 255px;
background-size: 100% 100%;
line-height: 400px;
padding-left: 30px;
font-weight: 500;
}
}
.opacity {
opacity: 0.6;
}
... ... @@ -35,7 +105,7 @@
padding-top: 200px;
.success-pic {
background-image: resolve("channel/student/success.png");
background-image: resolve("activity/trend/ok.png");
width: 200px;
height: 200px;
background-size: 100%;
... ... @@ -56,7 +126,7 @@
.tip {
color: #666;
font-size: 20px;
font-size: 24px;
text-align: center;
line-height: 50px;
}
... ... @@ -65,12 +135,13 @@
display: block;
width: 400px;
height: 80px;
border: solid 4px #444;
border: solid 1px #444;
border-radius: 10px;
text-align: center;
line-height: 80px;
line-height: 70px;
margin: 50px auto 0;
font-size: 30px;
color: #444;
}
img {
... ... @@ -87,21 +158,20 @@
.pull-pic-list {
width: 100%;
margin-top: 30px;
position: relative;
.box {
position: relative;
float: left;
width: 315px;
margin: 0 15px;
width: 335px;
margin-right: 20px;
}
img {
width: 100%;
border-radius: 10px;
border-radius: 4px;
padding: 0;
margin-bottom: 30px;
margin-bottom: 20px;
}
}
... ... @@ -113,22 +183,25 @@
padding-bottom: 0;
}
&.trend-c.no-mg {
margin-bottom: 0;
}
.package-top {
line-height: 80px;
color: #d0021b;
font-size: 28px;
padding: 0 30px;
margin-bottom: 10px;
background-color: #fff;
border-bottom: solid 1px #e0e0e0;
background-color: #f4f4f4;
span {
width: 31px;
height: 31px;
display: inline-block;
background-image: url("/activity/trend/package.png");
vertical-align: middle;
background-image: resolve("activity/trend/package-2.png");
vertical-align: text-bottom;
background-size: 100%;
margin-bottom: 2px;
}
}
... ... @@ -143,8 +216,8 @@
border-radius: 50%;
overflow: hidden;
-webkit-appearance: none;
width: 30px;
height: 30px;
width: 32px;
height: 32px;
background-size: 100%;
background-image: resolve("activity/trend/diy.png");
vertical-align: text-top;
... ... @@ -157,8 +230,8 @@
input.diy-2 {
border: 0;
-webkit-appearance: none;
width: 30px;
height: 30px;
width: 32px;
height: 32px;
background-size: 100%;
background-image: resolve("activity/trend/diy-2.png");
vertical-align: text-top;
... ... @@ -183,6 +256,7 @@
.box-padding {
padding: 30px;
background-color: #fff;
padding-top: 0;
}
.big-title {
... ... @@ -192,10 +266,19 @@
background-color: #fff;
color: #444;
font-size: 32px;
border-bottom: solid 1px #e0e0e0;
border-top: solid 1px #e0e0e0;
margin-top: 30px;
border-bottom: solid 1px #f4f4f4;
margin-top: 20px;
font-weight: bold;
position: relative;
.more {
font-weight: normal;
line-height: 88px;
position: absolute;
top: 0;
right: 30px;
color: #444;
}
}
.big-title-2 {
... ... @@ -215,9 +298,7 @@
position: relative;
line-height: 88px;
background-color: #fff;
border-bottom: solid 1px #e0e0e0;
border-top: solid 1px #e0e0e0;
margin: 30px 0;
margin: 20px 0;
.red {
font-size: 28px;
... ... @@ -227,26 +308,41 @@
}
.left-title {
line-height: 100px;
color: #4a4a4a;
font-size: 38px;
height: 110px;
line-height: 120px;
color: #444;
font-size: 46px;
font-weight: bold;
background-color: #fff;
}
.content {
clear: both;
background-color: #fff;
padding-top: 40px;
font-size: 32px;
img {
margin-bottom: 30px;
margin-bottom: 20px;
width: 100%;
}
p {
margin-bottom: 30px;
margin-bottom: 20px;
word-wrap: break-word;
font-size: 32px;
line-height: 50px;
}
}
.no-pd-top {
padding-top: 0 !important;
}
.no-border {
border-bottom: 0;
}
.content-padding {
padding: 0 30px 30px;
}
... ... @@ -269,11 +365,9 @@
.article {
.article-item {
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
padding: 30px 0 0;
background-color: #fff;
margin-bottom: 30px;
margin-bottom: 20px;
.pic {
display: block;
... ... @@ -286,29 +380,31 @@
}
.title {
font-size: 38px;
font-size: 46px;
color: #4a4a4a;
padding: 25px 30px;
line-height: 45px;
padding: 0 30px;
line-height: 120px;
height: 110px;
font-weight: bold;
}
.tip {
font-size: 28px;
font-size: 32px;
color: #444;
padding: 0 30px 30px;
line-height: 44px;
line-height: 50px;
.a {
width: 120px;
height: 30px;
height: 32px;
display: inline-block;
color: #b0b0b0;
border: solid 1px #b0b0b0;
line-height: 30px;
text-align: center;
border-radius: 14px;
border-radius: 20px;
font-size: 22px;
font-weight: 500;
}
}
... ... @@ -317,15 +413,16 @@
}
.list {
margin-top: 30px;
margin-top: 20px;
.list-item {
padding: 0 30px;
padding-right: 30px;
margin-left: 30px;
display: block;
line-height: 88px;
border-top: solid 1px #e0e0e0;
border-top: solid 1px #f4f4f4;
position: relative;
font-size: 25px;
font-size: 28px;
color: #444;
}
}
... ... @@ -336,20 +433,26 @@
display: block;
position: relative;
height: 88px;
line-height: 88px;
line-height: 83px;
font-size: 32px;
color: #444;
padding: 0 30px;
padding-right: 30px;
margin-left: 30px;
background-color: #fff;
border-bottom: solid 1px #e0e0e0;
margin-bottom: 30px;
margin-top: -30px;
border-top: solid 1px #f4f4f4;
}
.more-article-c {
background-color: #fff;
margin-bottom: 20px;
}
.more-article2 {
margin-top: 0;
}
.appointment {
background-color: #fff;
border-top: solid 1px #e0e0e0;
margin-bottom: 30px;
.title {
height: 88px;
... ... @@ -371,37 +474,48 @@
padding: 30px;
.title {
line-height: 45px;
padding: 25px 0;
line-height: 120px;
height: 110px;
color: #4a4a4a;
font-size: 38px;
font-size: 46px;
font-weight: bold;
}
}
.class .class-item {
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
padding: 30px;
margin-bottom: 30px;
margin-bottom: 20px;
background-color: #fff;
.pic {
position: relative;
display: block;
img {
width: 100%;
min-height: 200px;
}
}
.info {
line-height: 65px;
.tag {
color: #fff;
line-height: 60px;
background-color: #000;
padding: 0 25px;
position: absolute;
font-size: 24px;
bottom: 0;
left: 0;
}
.info {
.name {
color: #444;
font-size: 38px;
float: left;
width: 500px;
line-height: 50px;
padding: 10px 0 5px;
line-height: 95px;
height: 90px;
font-weight: bold;
}
... ... @@ -411,21 +525,29 @@
float: right;
width: 190px;
text-align: right;
line-height: 50px;
padding: 10px 0 5px;
line-height: 82px;
padding-right: 10px;
font-weight: 500;
span {
font-size: 30px;
padding-right: 10px;
padding-right: 6px;
}
}
.price-2 {
font-size: 30px;
}
.free {
text-align: right;
float: right;
color: #d0021b;
font-size: 30px;
width: 160px;
line-height: 90px;
font-weight: 500;
padding-right: 10px;
}
}
... ... @@ -478,6 +600,12 @@
}
}
.class-detail {
.class-item {
padding-top: 10px !important;
}
}
.foot-btn {
width: 100%;
height: 88px;
... ... @@ -500,15 +628,13 @@
}
.apt-info {
height: 200px;
min-height: 200px;
background-color: #fff;
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
margin: 30px 0;
margin: 20px 0;
padding: 10px 30px;
div {
font-size: 26px;
font-size: 28px;
color: #444;
line-height: 60px;
position: relative;
... ... @@ -516,7 +642,7 @@
}
.chosen-2 {
margin-bottom: 30px;
margin-bottom: 20px;
}
.chosen {
... ... @@ -525,8 +651,9 @@
.chose-item {
display: block;
line-height: 88px;
border-bottom: solid 1px #e0e0e0;
padding: 0 30px;
border-bottom: solid 1px #f4f4f4;
margin-left: 30px;
padding-right: 30px;
label {
font-size: 28px;
... ... @@ -535,22 +662,35 @@
}
}
.chose-item-2 {
margin-left: 0;
border-bottom: solid 1px #f4f4f4 !important;
}
.select {
.label {
display: inline-block;
width: 150px;
font-size: 28px;
color: #444;
line-height: 88px;
}
.inp {
display: inline-block;
width: 500px;
border: 0;
line-height: 88px;
height: 88px;
line-height: 85px;
height: 85px;
text-align: right;
padding-right: 10px;
color: #444 !important;
z-index: -1;
background-color: #fff !important;
}
.grey-font {
color: #b0b0b0 !important;
}
.chosen-style {
... ... @@ -574,6 +714,7 @@
padding: 22px 0;
height: 80px;
font-size: 28px;
color: #444;
}
.inp-s {
... ... @@ -586,8 +727,8 @@
a {
display: inline-block;
width: 40px;
height: 40px;
width: 42px;
height: 42px;
background-size: 100%;
vertical-align: middle;
}
... ... @@ -616,16 +757,24 @@
textarea {
padding: 20px 15px;
border: solid 1px #bdbdbd;
border: solid 1px #f4f4f4;
border-radius: 5px;
width: 690px;
min-height: 180px;
resize: none;
line-height: 40px;
box-shadow: 0 0 0 rgba(0, 0, 0, 0);
-webkit-appearance: none;
}
}
}
.chosen {
.chose-item:last-child {
border-bottom: 0;
}
}
.need-know {
padding: 0 30px;
color: #444;
... ... @@ -633,9 +782,10 @@
padding-bottom: 30px;
input {
height: 30px;
width: 30px;
height: 32px;
width: 32px;
vertical-align: middle;
margin-bottom: 3px;
}
a {
... ... @@ -698,7 +848,7 @@
}
.time-nav {
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
width: 750px;
background-color: #fff;
height: 100px;
... ... @@ -738,10 +888,11 @@
display: block;
height: 170px;
line-height: 110px;
width: 100%;
position: relative;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
padding: 30px;
padding-left: 0;
margin-left: 30px;
.pic {
height: 100px;
... ... @@ -801,8 +952,7 @@
height: 88px;
background-size: 100%;
background-image: resolve("activity/trend/date-type.png");
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
border-top: solid 1px #f4f4f4;
}
}
... ... @@ -874,7 +1024,7 @@
color: #444;
text-align: center;
line-height: 40px;
margin-top: 30px;
margin-top: 20px;
}
}
}
... ... @@ -888,14 +1038,15 @@
font-size: 32px;
color: #444;
padding: 0 30px;
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
border-top: solid 1px #f4f4f4;
border-bottom: solid 1px #f4f4f4;
background-color: #fff;
margin-bottom: 30px;
margin-bottom: 20px;
display: block;
input {
margin-right: 20px;
margin-top: 2px;
}
.min-price {
... ... @@ -905,18 +1056,19 @@
span {
font-size: 40px;
padding-right: 6px;
}
}
}
.chosen-list {
border-top: solid 1px #e0e0e0;
border-top: solid 1px #f4f4f4;
background-color: #fff;
}
.chosen-list .item {
padding: 30px;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
display: block;
input {
... ... @@ -936,7 +1088,7 @@
}
.info {
width: 500px;
width: 498px;
float: left;
.name {
... ... @@ -963,7 +1115,7 @@
a {
display: block;
margin-bottom: 30px;
margin-bottom: 20px;
img {
border-radius: 10px;
... ... @@ -974,7 +1126,7 @@
.swiper-c {
background-color: #fff;
padding-top: 30px;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
.swiper-container {
padding-bottom: 80px;
... ... @@ -1004,7 +1156,7 @@
.swiper-slide {
width: 690px;
margin: 0 5px;
border: solid 1px #e0e0e0;
border: solid 1px #f4f4f4;
.limit-pic {
width: 688px;
... ... @@ -1015,7 +1167,6 @@
img {
width: 688px;
min-height: 432px;
height: auto;
}
... ... @@ -1089,28 +1240,19 @@
}
.tab {
margin-top: 30px;
margin-top: 20px;
.tab-top {
line-height: 38px;
border-bottom: solid 1px #e0e0e0;
background-color: #fff;
span {
display: inline-block;
width: 355px;
width: 100%;
text-align: center;
color: #b0b0b0;
color: #444;
font-size: 32px;
margin: 25px 0;
&:first-child {
border-right: solid 1px #e0e0e0;
}
}
span.active {
color: #444;
}
}
... ... @@ -1122,7 +1264,7 @@
width: 330px;
height: 330px;
float: left;
margin-bottom: 30px;
margin-bottom: 20px;
&:nth-child(odd) {
margin-right: 30px;
... ... @@ -1142,12 +1284,10 @@
}
.package-item {
padding: 30px 30px 0;
padding: 40px 30px 0;
line-height: 45px;
margin-bottom: 10px;
background-color: #fff;
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
list-style-type: none;
.top {
... ... @@ -1164,21 +1304,24 @@
.price {
color: #d0021b;
font-size: 40px;
font-size: 50px;
float: right;
width: 25%;
overflow: hidden;
height: 45px;
text-align: right;
padding-right: 10px;
font-weight: 500;
span {
font-size: 30px;
padding-right: 6px;
}
}
}
.main {
padding-bottom: 30px;
padding-bottom: 40px;
margin-top: 20px;
p {
... ... @@ -1190,7 +1333,7 @@
.foot {
line-height: 88px;
border-top: solid 1px #e0e0e0;
border-top: solid 1px #f4f4f4;
padding: 0 30px;
}
... ... @@ -1199,6 +1342,10 @@
}
}
.package-item:last-child {
border-bottom: 0;
}
.package-item.only {
border-bottom: 0;
margin-bottom: 0;
... ... @@ -1212,7 +1359,7 @@
.style-c {
.top {
line-height: 60px;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
font-size: 24px;
color: #444;
padding: 0 30px;
... ... @@ -1231,7 +1378,7 @@
padding-bottom: 30px;
li {
margin: 30px 15px 0;
margin: 20px 15px 0;
height: 56px;
line-height: 56px;
font-size: 24px;
... ... @@ -1256,19 +1403,23 @@
}
ul.later {
margin-top: 30px;
border-top: solid 1px #e0e0e0;
margin-top: 20px;
border-top: solid 1px #f4f4f4;
}
}
.cutter {
background-color: #fff;
.cutter-item {
position: relative;
background-color: #fff;
display: block;
padding: 30px;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
line-height: 100px;
margin-left: 20px;
padding-left: 0;
.pic {
width: 100px;
... ... @@ -1285,7 +1436,7 @@
padding-left: 30px;
.name {
font-size: 38px;
font-size: 32px;
color: #444;
line-height: 50px;
font-weight: bold;
... ... @@ -1295,6 +1446,7 @@
font-size: 28px;
color: #b0b0b0;
line-height: 50px;
word-wrap: break-word;
}
}
... ... @@ -1305,11 +1457,19 @@
float: left;
font-size: 50px;
padding-right: 20px;
font-weight: 500;
span {
font-size: 30px;
font-size: 24px;
padding-right: 6px;
}
}
&:last-child {
margin-left: 0;
padding-left: 30px;
border-bottom: 0;
}
}
}
... ... @@ -1321,7 +1481,7 @@
}
.price {
width: 190px;
width: 188px;
padding-right: 0;
}
}
... ... @@ -1329,12 +1489,14 @@
.display-list {
background-color: #fff;
padding: 30px;
padding-right: 10px;
padding-top: 0;
}
.order-pic {
height: 30px;
width: 100%;
margin-top: 30px;
margin-top: 20px;
position: relative;
padding-top: 15px;
... ... @@ -1365,9 +1527,7 @@
display: block;
padding: 30px;
background-color: #fff;
margin: 30px 0;
border-bottom: solid 1px #e0e0e0;
border-top: solid 1px #e0e0e0;
margin: 20px 0;
.info {
width: 550px;
... ... @@ -1408,7 +1568,6 @@
color: #444;
font-size: 34px;
line-height: 88px;
border-bottom: silid 1px #e0e0e0;
background-color: #fff;
padding: 0 30px;
font-weight: bold;
... ... @@ -1416,10 +1575,8 @@
.detail-list {
padding: 0 30px;
margin: 30px 0;
margin: 20px 0;
background-color: #fff;
border-top: solid 1px #e0e0e0;
border-bottom: solid 1px #e0e0e0;
.order-a {
display: block;
... ... @@ -1430,7 +1587,7 @@
line-height: 88px;
color: #4a4a4a;
position: relative;
border-bottom: solid 1px #e0e0e0;
border-bottom: solid 1px #f4f4f4;
&:last-child {
border-bottom: 0;
... ... @@ -1448,7 +1605,7 @@
.tip-top {
color: #b0b0b0;
font-size: 24px;
font-size: 28px;
line-height: 80px;
}
... ... @@ -1467,11 +1624,47 @@
}
}
.list-item:nth-last-child(2) {
border-bottom: 0;
}
.list-item.padding {
padding-bottom: 30px;
}
}
.big-list {
.big {
font-weight: 500;
}
}
.tip-limit {
min-height: 50px;
height: auto !important;
line-height: 40px;
}
.detail-list-2 {
padding-right: 0;
.list-item {
padding-right: 30px;
}
}
.detail-list-3 {
padding-right: 0;
.package-item {
padding-right: 30px !important;
}
a {
padding-right: 30px !important;
}
}
.icon-pic {
display: inline-block;
margin-right: 10px;
... ... @@ -1481,19 +1674,20 @@
height: 30px;
}
.icon-pic.shop {
background-image: resolve("activity/trend/shop.png");
background-size: 100% 100%;
.iconfont.adr {
color: #b0b0b0;
}
.icon-pic.adr {
background-image: resolve("activity/trend/adr.png");
background-size: 100% 100%;
.iconfont.tel {
color: #b0b0b0;
}
.icon-pic.tel {
background-image: resolve("activity/trend/tel.png");
background-size: 100% 100%;
.iconfont.shop {
color: #b0b0b0;
}
.iconfont.time {
color: #b0b0b0;
}
.icon-pic.tip {
... ... @@ -1560,4 +1754,83 @@
font-size: 28px !important;
}
}
.scroll-class {
width: 100%;
height: 80px;
border-bottom: solid 1px #f4f4f4;
background-color: #fff;
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
padding: 0 25px;
&::-webkit-scrollbar {
display: none;
}
.scroll-item {
height: 80px;
line-height: 80px;
border-bottom: solid 4PX #fff;
display: inline-block;
padding: 0 30px;
font-size: 30px;
color: #ccc;
}
.scroll-item.active {
border-bottom: solid 4PX #444;
color: #444;
}
}
.article-2 {
.article {
&:last-child {
.article-item {
margin-bottom: 0;
border-bottom: 0;
}
}
}
}
.adviser-c {
.adviser:last-child {
.adviser-item {
padding-left: 30px;
margin-left: 0;
}
}
}
.class-detail {
.class-item {
border-bottom: 0;
margin-bottom: 0;
}
}
.chosen-package {
padding-top: 10px;
.package-item {
margin-bottom: 20px;
padding-right: 0;
border-bottom: 0;
.top {
padding-right: 30px;
}
.main {
padding-right: 30px;
}
.foot {
padding-right: 30px;
}
}
}
}
... ...