Merge branch 'feature/family' into 'release/6.2'
family See merge request !971
Showing
68 changed files
with
3946 additions
and
45 deletions
apps/home/controllers/family.js
0 → 100644
1 | +'use strict'; | ||
2 | + | ||
3 | +const headerModel = require('../../../doraemon/models/header'); // 头部model | ||
4 | +const family = require('../models/family'); | ||
5 | + | ||
6 | +exports.familyIndex = (req, res, next) => { | ||
7 | + let uid = req.user.uid; | ||
8 | + let contentCodeOne = '486e6adc7c83001b2e9e83996438fab8'; | ||
9 | + let contentCodeTwo = 'eebbcc60607ac443922d8fabe44eb222'; | ||
10 | + | ||
11 | + req.ctx(family).familyIndex(uid, contentCodeOne, contentCodeTwo).then(result => { | ||
12 | + res.render('family/index', { | ||
13 | + page: 'family', | ||
14 | + title: 'family', | ||
15 | + width750: true, | ||
16 | + localCss: true, | ||
17 | + familyIndexData: result | ||
18 | + }); | ||
19 | + }).catch(next); | ||
20 | +}; | ||
21 | + | ||
22 | +exports.integralCharts = (req, res, next) => { | ||
23 | + let uid = req.user.uid; | ||
24 | + | ||
25 | + req.ctx(family).integralCharts(uid).then(result => { | ||
26 | + res.json(result); | ||
27 | + }).catch(next); | ||
28 | +}; | ||
29 | + | ||
30 | +exports.familyVip = (req, res, next) => { | ||
31 | + let udid = req.sessionID || 'yoho'; | ||
32 | + let uid = req.user.uid; | ||
33 | + let yohoApp = req.yoho.isApp && !req.yoho.isMarsApp; | ||
34 | + let marsApp = req.yoho.isMarsApp; | ||
35 | + | ||
36 | + req.ctx(family).familyVip(udid, uid, yohoApp, marsApp).then(result => { | ||
37 | + res.json(result); | ||
38 | + }).catch(next); | ||
39 | +}; | ||
40 | + | ||
41 | +exports.downLoadData = (req, res, next) => { | ||
42 | + let codeArr = req.query.codeArr; | ||
43 | + let yohoApp = req.yoho.isApp && !req.yoho.isMarsApp; | ||
44 | + | ||
45 | + if (!codeArr) { | ||
46 | + return; | ||
47 | + } | ||
48 | + | ||
49 | + req.ctx(family).downLoadData(codeArr, yohoApp).then(result => { | ||
50 | + res.json(result); | ||
51 | + }).catch(next); | ||
52 | +}; | ||
53 | + | ||
54 | +// 设置潮流口令 | ||
55 | +exports.setTrendWord = (req, res, next) => { | ||
56 | + let uid = req.user.uid; | ||
57 | + let trendWord = req.query.trendWord; | ||
58 | + | ||
59 | + req.ctx(family).setTrendWord(uid, trendWord).then(result => { | ||
60 | + res.json(result); | ||
61 | + }).catch(next); | ||
62 | +}; | ||
63 | + | ||
64 | +exports.coinDetail = (req, res) => { | ||
65 | + let responseData = { | ||
66 | + module: 'home', | ||
67 | + page: 'family-coin', | ||
68 | + pageHeader: headerModel.setNav({ | ||
69 | + navTitle: '积分明细' | ||
70 | + }), | ||
71 | + title: 'YOHO!积分明细', | ||
72 | + width750: true, | ||
73 | + localCss: true | ||
74 | + }; | ||
75 | + | ||
76 | + res.render('family/coin-detail', responseData); | ||
77 | +}; | ||
78 | + | ||
79 | +exports.getCoinData = (req, res, next) => { | ||
80 | + let params = { | ||
81 | + uid: req.user.uid, | ||
82 | + source: req.query.source, | ||
83 | + queryType: req.query.queryType, | ||
84 | + beginTime: req.query.beginTime, | ||
85 | + endTime: req.query.endTime, | ||
86 | + page: req.query.page, | ||
87 | + limit: req.query.limit | ||
88 | + }; | ||
89 | + | ||
90 | + req.ctx(family).getCoinData(params).then(result => { | ||
91 | + res.json(result); | ||
92 | + }).catch(next); | ||
93 | +}; | ||
94 | + | ||
95 | +exports.userInfo = (req, res, next) => { | ||
96 | + let responseData = { | ||
97 | + module: 'home', | ||
98 | + page: 'family-userInfo', | ||
99 | + pageHeader: headerModel.setNav({ | ||
100 | + navTitle: '个人信息' | ||
101 | + }), | ||
102 | + title: 'YOHO!个人信息', | ||
103 | + width750: true, | ||
104 | + localCss: true | ||
105 | + }; | ||
106 | + | ||
107 | + let params = { | ||
108 | + uid: req.user.uid, | ||
109 | + isApp: req.yoho.isApp | ||
110 | + }; | ||
111 | + | ||
112 | + req.ctx(family).userInfo(params).then(result => { | ||
113 | + res.render('family/user-info', Object.assign(responseData, result)); | ||
114 | + }).catch(next); | ||
115 | +}; | ||
116 | + | ||
117 | +exports.modify = (req, res, next) => { | ||
118 | + let params = { | ||
119 | + uid: req.user.uid, | ||
120 | + nickName: req.query.nickName, | ||
121 | + gender: req.query.gender, | ||
122 | + birthday: req.query.birthday, | ||
123 | + height: req.query.height, | ||
124 | + weight: req.query.weight, | ||
125 | + province: req.query.province, | ||
126 | + city: req.query.city | ||
127 | + }; | ||
128 | + | ||
129 | + req.ctx(family).modify(params).then((result) => { | ||
130 | + res.json(result); | ||
131 | + }).catch(next); | ||
132 | +}; | ||
133 | + | ||
134 | +exports.getCity = (req, res, next) => { | ||
135 | + let params = { | ||
136 | + uid: req.user.uid, | ||
137 | + id: req.query.id | ||
138 | + }; | ||
139 | + | ||
140 | + req.ctx(family).getCity(params).then((result) => { | ||
141 | + res.json(result); | ||
142 | + }).catch(next); | ||
143 | +}; | ||
144 | + | ||
145 | +exports.coinMall = (req, res, next) => { | ||
146 | + let responseData = { | ||
147 | + module: 'home', | ||
148 | + page: 'family-coinMall', | ||
149 | + pageHeader: headerModel.setNav({ | ||
150 | + navTitle: '积分商城' | ||
151 | + }), | ||
152 | + title: 'YOHO!积分商城', | ||
153 | + width750: true, | ||
154 | + localCss: true | ||
155 | + }; | ||
156 | + | ||
157 | + let params = { | ||
158 | + uid: req.user.uid, | ||
159 | + isMarsApp: req.yoho.isMarsApp, | ||
160 | + isNowApp: req.yoho.isNowApp | ||
161 | + }; | ||
162 | + | ||
163 | + req.ctx(family).coinMall(params).then(result => { | ||
164 | + res.render('family/coin-mall', Object.assign(responseData, result)); | ||
165 | + }).catch(next); | ||
166 | +}; | ||
167 | + | ||
168 | +exports.getList = (req, res, next) => { | ||
169 | + let params = { | ||
170 | + uid: req.user.uid, | ||
171 | + type: req.query.type, | ||
172 | + page: req.query.page, | ||
173 | + limit: req.query.limit | ||
174 | + }; | ||
175 | + | ||
176 | + req.ctx(family).getList(params).then((result) => { | ||
177 | + res.json(result); | ||
178 | + }).catch(next); | ||
179 | +}; |
@@ -5,9 +5,10 @@ const tideCommandModel = require('../models/tide-command'); | @@ -5,9 +5,10 @@ const tideCommandModel = require('../models/tide-command'); | ||
5 | 5 | ||
6 | exports.tideCommand = (req, res, next) => { | 6 | exports.tideCommand = (req, res, next) => { |
7 | let uid = req.user.uid, | 7 | let uid = req.user.uid, |
8 | - contentCode = '29958987ef0c0f830fad03d7e54f6061'; | 8 | + contentCode = '29958987ef0c0f830fad03d7e54f6061', |
9 | + hideTips = req.query.hideTips === 'true' ? true : false; | ||
9 | 10 | ||
10 | - req.ctx(tideCommandModel).invitionData(uid, contentCode).then(result => { | 11 | + req.ctx(tideCommandModel).invitionData(uid, contentCode, hideTips).then(result => { |
11 | res.render('tide-command', { | 12 | res.render('tide-command', { |
12 | page: 'tide-command', | 13 | page: 'tide-command', |
13 | pageHeader: headerModel.setNav({ | 14 | pageHeader: headerModel.setNav({ |
apps/home/models/family.js
0 → 100644
1 | +'use strict'; | ||
2 | + | ||
3 | +const _ = require('lodash'); | ||
4 | +const moment = require('moment'); | ||
5 | +const camelCase = global.yoho.camelCase; | ||
6 | +const family = global.yoho.FamilyAPI; | ||
7 | +const service = global.yoho.ServiceAPI; | ||
8 | +const resourcesProcess = require(`${global.utils}/resources-process`); | ||
9 | +const helpers = global.yoho.helpers; | ||
10 | +const crypto = global.yoho.crypto; | ||
11 | + | ||
12 | +class familyModel extends global.yoho.BaseModel { | ||
13 | + constructor(ctx) { | ||
14 | + super(ctx); | ||
15 | + } | ||
16 | + | ||
17 | + /** | ||
18 | + * 个人详情数据 | ||
19 | + */ | ||
20 | + _userData(uid) { | ||
21 | + if (uid) { | ||
22 | + return family.get('user/getUserInfo.json', { | ||
23 | + uid: uid | ||
24 | + }, { | ||
25 | + code: 200 | ||
26 | + }); | ||
27 | + } else { | ||
28 | + return Promise.resolve({}); | ||
29 | + } | ||
30 | + } | ||
31 | + | ||
32 | + /** | ||
33 | + * 潮流口令 | ||
34 | + */ | ||
35 | + _getCode(uid) { | ||
36 | + if (uid) { | ||
37 | + return family.get('user/getInvitecode', { | ||
38 | + uid: uid | ||
39 | + }, { | ||
40 | + code: 200 | ||
41 | + }); | ||
42 | + } else { | ||
43 | + return Promise.resolve({}); | ||
44 | + } | ||
45 | + } | ||
46 | + | ||
47 | + /** | ||
48 | + * 资源位 | ||
49 | + */ | ||
50 | + _getTrendPop(contentCode) { | ||
51 | + return service.get('operations/api/v5/resource/get', { | ||
52 | + content_code: contentCode, | ||
53 | + }, { | ||
54 | + code: 200, | ||
55 | + cache: true | ||
56 | + }).then(result => { | ||
57 | + if (result && result.code === 200 && result.data) { | ||
58 | + | ||
59 | + return resourcesProcess(result.data); | ||
60 | + } else { | ||
61 | + return result; | ||
62 | + } | ||
63 | + }); | ||
64 | + } | ||
65 | + | ||
66 | + /** | ||
67 | + * 资源位 | ||
68 | + */ | ||
69 | + _getdownPop(param) { | ||
70 | + return service.get('operations/api/v5/resource/get', { | ||
71 | + content_code: param.code, | ||
72 | + }, { | ||
73 | + code: 200, | ||
74 | + cache: true | ||
75 | + }).then(result => { | ||
76 | + if (result && result.code === 200 && result.data) { | ||
77 | + | ||
78 | + _.forEach(result.data, function(val) { | ||
79 | + val.appName = param.name; | ||
80 | + }); | ||
81 | + | ||
82 | + return resourcesProcess(result.data); | ||
83 | + } else { | ||
84 | + return result; | ||
85 | + } | ||
86 | + }); | ||
87 | + } | ||
88 | + | ||
89 | + /** | ||
90 | + * 列表排序 | ||
91 | + */ | ||
92 | + _sourceSort(source) { | ||
93 | + return function(a, b) { | ||
94 | + let value1 = a[source], | ||
95 | + value2 = b[source]; | ||
96 | + | ||
97 | + return value1 - value2; | ||
98 | + }; | ||
99 | + } | ||
100 | + | ||
101 | + /** | ||
102 | + * 获取APP列表 | ||
103 | + */ | ||
104 | + _getAppList(uid) { | ||
105 | + return family.get('vip/getUserVipInfo', { | ||
106 | + uid: uid | ||
107 | + }, { | ||
108 | + code: 200 | ||
109 | + }).then((result => { | ||
110 | + if (result && result.data && result.code === 200) { | ||
111 | + let loginList = []; | ||
112 | + let noLoginList = []; | ||
113 | + let appList = []; | ||
114 | + | ||
115 | + _.forEach(result.data, function(val, key) { | ||
116 | + if (val) { | ||
117 | + val.nickname = key; | ||
118 | + | ||
119 | + if (val.login === true) { | ||
120 | + loginList.push(val); | ||
121 | + } else { | ||
122 | + noLoginList.push(val); | ||
123 | + } | ||
124 | + } | ||
125 | + }); | ||
126 | + | ||
127 | + loginList.sort(this._sourceSort('source')); | ||
128 | + noLoginList.sort(this._sourceSort('source')); | ||
129 | + | ||
130 | + appList = loginList.concat(noLoginList); | ||
131 | + | ||
132 | + return appList; | ||
133 | + } | ||
134 | + })); | ||
135 | + } | ||
136 | + | ||
137 | + /** | ||
138 | + *查询各个体系成长等级信息及等级特权 | ||
139 | + */ | ||
140 | + _getVipInfo(udid) { | ||
141 | + return family.get('vip/getVipInfo.json', { | ||
142 | + udid: udid | ||
143 | + }, { | ||
144 | + code: 200 | ||
145 | + }).then((result) => { | ||
146 | + | ||
147 | + if (result.data && result.data.mars && result.data.mars.vipLevelList.length > 0) { | ||
148 | + _.forEach(result.data.mars.vipLevelList, function(val) { | ||
149 | + val.name = 'Lv.' + val.level; | ||
150 | + }); | ||
151 | + } | ||
152 | + | ||
153 | + return result.data; | ||
154 | + }); | ||
155 | + } | ||
156 | + | ||
157 | + /** | ||
158 | + *查询当前用户各个体系成长等级信息及等级特权 | ||
159 | + */ | ||
160 | + _getUserVipInfo(udid, uid) { | ||
161 | + return family.get('vip/getUserVipInfo.json', { | ||
162 | + udid: udid, | ||
163 | + uid: uid | ||
164 | + }, { | ||
165 | + code: 200 | ||
166 | + }).then((result) => { | ||
167 | + if (result && result.data) { | ||
168 | + return result.data; | ||
169 | + } else { | ||
170 | + return {}; | ||
171 | + } | ||
172 | + }); | ||
173 | + } | ||
174 | + | ||
175 | + /** | ||
176 | + *各个app的会员信息 | ||
177 | + */ | ||
178 | + familyVip(udid, uid, yohoApp, marsApp) { | ||
179 | + return Promise.all([ | ||
180 | + this._getVipInfo(udid), | ||
181 | + this._getUserVipInfo(udid, uid) | ||
182 | + ]).then((result) => { | ||
183 | + _.forEach(result[1], function(val, key) { | ||
184 | + _.forEach(result[0], function(data, index) { | ||
185 | + if (index === key) { | ||
186 | + val = _.assign(val, { | ||
187 | + vipLevelLis: data.vipLevelList | ||
188 | + }); | ||
189 | + } | ||
190 | + }); | ||
191 | + | ||
192 | + if (key === 'yohobuy') { | ||
193 | + val.showLevel = true; | ||
194 | + if (yohoApp) { | ||
195 | + val.link = '//m.yohobuy.com/home/grade?openby:yohobuy={"action":"go.vipInfo"}'; | ||
196 | + } else if (marsApp) { | ||
197 | + val.link = '//m.yohobuy.com/home/grade?openby:yohobuy={"action":"go.h5"}'; | ||
198 | + } else { | ||
199 | + val.link = '//m.yohobuy.com/home/grade'; | ||
200 | + } | ||
201 | + if (val.growthValue <= 0 || val.growthValue === null) { | ||
202 | + val.percent = 0; | ||
203 | + } else if (val.growthValue > 0 && val.growthValue < 800) { | ||
204 | + val.percent = 17; | ||
205 | + } else if (val.growthValue === 800) { | ||
206 | + val.valpercent = 33; | ||
207 | + } else if (val.growthValue > 800 && val.growthValue < 3000) { | ||
208 | + val.percent = 50; | ||
209 | + } else if (val.growthValue === 3000) { | ||
210 | + val.percent = 67; | ||
211 | + } else if (val.growthValue > 3000 && val.growthValue < 7000) { | ||
212 | + val.percent = 83; | ||
213 | + } else { | ||
214 | + val.percent = 100; | ||
215 | + } | ||
216 | + } | ||
217 | + | ||
218 | + if (key === 'mars') { | ||
219 | + if (yohoApp) { | ||
220 | + val.link = 'yohomars://yohomars.com/goapp?openby:mars=""'; | ||
221 | + } else if (marsApp) { | ||
222 | + val.link = '//m.yohobuy.com/home/grade?openby:yohobuy={"action":"go.h5"}'; | ||
223 | + } else { | ||
224 | + val.link = 'yohomars://yohomars.com/goapp?openby:mars=""'; | ||
225 | + } | ||
226 | + if (val.growthValue <= 100) { | ||
227 | + val.percent = 0; | ||
228 | + } else if (val.growthValue > 100 && val.growthValue < 400) { | ||
229 | + val.percent = 10; | ||
230 | + } else if (val.growthValue === 400) { | ||
231 | + val.valpercent = 20; | ||
232 | + } else if (val.growthValue > 400 && val.growthValue < 1000) { | ||
233 | + val.percent = 30; | ||
234 | + } else if (val.growthValue === 1000) { | ||
235 | + val.percent = 40; | ||
236 | + } else if (val.growthValue > 1000 && val.growthValue < 2000) { | ||
237 | + val.percent = 50; | ||
238 | + } else if (val.growthValue === 2000) { | ||
239 | + val.percent = 60; | ||
240 | + } else if (val.growthValue > 2000 && val.growthValue < 5000) { | ||
241 | + val.percent = 70; | ||
242 | + } else if (val.growthValue === 5000) { | ||
243 | + val.percent = 80; | ||
244 | + } else if (val.growthValue > 5000 && val.growthValue < 10000) { | ||
245 | + val.percent = 90; | ||
246 | + } else { | ||
247 | + val.percent = 100; | ||
248 | + } | ||
249 | + } | ||
250 | + | ||
251 | + if (key === 'green') { | ||
252 | + if (val.growthValue <= 0) { | ||
253 | + val.percent = 0; | ||
254 | + } else if (val.growthValue > 0 && val.growthValue < 1000) { | ||
255 | + val.percent = 17; | ||
256 | + } else if (val.growthValue === 1000) { | ||
257 | + val.valpercent = 33; | ||
258 | + } else if (val.growthValue > 1000 && val.growthValue < 3000) { | ||
259 | + val.percent = 50; | ||
260 | + } else if (val.growthValue === 3000) { | ||
261 | + val.percent = 67; | ||
262 | + } else if (val.growthValue > 3000 && val.growthValue < 5000) { | ||
263 | + val.percent = 83; | ||
264 | + } else { | ||
265 | + val.percent = 100; | ||
266 | + } | ||
267 | + } | ||
268 | + | ||
269 | + if (key === 'green') { | ||
270 | + val.birthShow = true; | ||
271 | + if (val.growthValue <= 0) { | ||
272 | + val.percent = 0; | ||
273 | + } else if (val.growthValue > 0 && val.growthValue < 1000) { | ||
274 | + val.percent = 17; | ||
275 | + } else if (val.growthValue === 1000) { | ||
276 | + val.valpercent = 33; | ||
277 | + } else if (val.growthValue > 1000 && val.growthValue < 3000) { | ||
278 | + val.percent = 50; | ||
279 | + } else if (val.growthValue === 3000) { | ||
280 | + val.percent = 67; | ||
281 | + } else if (val.growthValue > 3000 && val.growthValue < 5000) { | ||
282 | + val.percent = 83; | ||
283 | + } else { | ||
284 | + val.percent = 100; | ||
285 | + } | ||
286 | + } | ||
287 | + | ||
288 | + if (key === 'coffee') { | ||
289 | + if (val.growthValue <= 0) { | ||
290 | + val.percent = 0; | ||
291 | + } else if (val.growthValue > 0 && val.growthValue < 800) { | ||
292 | + val.percent = 25; | ||
293 | + } else if (val.growthValue === 800) { | ||
294 | + val.valpercent = 50; | ||
295 | + } else if (val.growthValue > 800 && val.growthValue < 2000) { | ||
296 | + val.percent = 75; | ||
297 | + } else { | ||
298 | + val.percent = 100; | ||
299 | + } | ||
300 | + } | ||
301 | + | ||
302 | + if (key === 'little') { | ||
303 | + if (val.growthValue <= 0) { | ||
304 | + val.percent = 0; | ||
305 | + } else if (val.growthValue > 0 && val.growthValue < 5000) { | ||
306 | + val.percent = 25; | ||
307 | + } else if (val.growthValue === 5000) { | ||
308 | + val.valpercent = 50; | ||
309 | + } else if (val.growthValue > 5000 && val.growthValue < 10000) { | ||
310 | + val.percent = 75; | ||
311 | + } else { | ||
312 | + val.percent = 100; | ||
313 | + } | ||
314 | + } | ||
315 | + }); | ||
316 | + | ||
317 | + return result[1]; | ||
318 | + }); | ||
319 | + } | ||
320 | + | ||
321 | + /** | ||
322 | + * 下载弹窗数据处理 | ||
323 | + */ | ||
324 | + _downLoadProce(data, yohoApp) { | ||
325 | + let singleData; | ||
326 | + | ||
327 | + _.forEach(data, function(val) { | ||
328 | + singleData = _.assign(singleData, { | ||
329 | + appName: val.appName, | ||
330 | + imgList: val.data | ||
331 | + }); | ||
332 | + | ||
333 | + if (yohoApp) { | ||
334 | + if (val.appName === 'green') { | ||
335 | + singleData = _.assign(singleData, { | ||
336 | + winXinCode: 'YO_GREEN' | ||
337 | + }); | ||
338 | + } else if (val.appName === 'coffee') { | ||
339 | + singleData = _.assign(singleData, { | ||
340 | + winXinCode: 'YoCoffeeCN' | ||
341 | + }); | ||
342 | + } else if (val.appName === 'little') { | ||
343 | + singleData = _.assign(singleData, { | ||
344 | + winXinCode: 'YOLITTLE_CN' | ||
345 | + }); | ||
346 | + } | ||
347 | + } | ||
348 | + }); | ||
349 | + | ||
350 | + return singleData; | ||
351 | + } | ||
352 | + | ||
353 | + /** | ||
354 | + * 下载弹窗信息 | ||
355 | + */ | ||
356 | + downLoadData(codeArr, yohoApp) { | ||
357 | + | ||
358 | + return Promise.map(codeArr, (val) => { | ||
359 | + return this._getdownPop(val); | ||
360 | + }).then((result) => { | ||
361 | + let finData = { | ||
362 | + downLoadData: [] | ||
363 | + }; | ||
364 | + | ||
365 | + _.forEach(result, (val) => { | ||
366 | + finData.downLoadData.push(this._downLoadProce(val, yohoApp)); | ||
367 | + }); | ||
368 | + | ||
369 | + return finData; | ||
370 | + }); | ||
371 | + } | ||
372 | + | ||
373 | + /** | ||
374 | + * 积分乐园数据 | ||
375 | + */ | ||
376 | + integralCharts(uid) { | ||
377 | + return family.get('user/getUserCoin', { | ||
378 | + uid: uid | ||
379 | + }, { | ||
380 | + code: 200 | ||
381 | + }).then((result) => { | ||
382 | + let chartsData = {}; | ||
383 | + let list = []; | ||
384 | + let colorList = []; | ||
385 | + | ||
386 | + if (result && result.data) { | ||
387 | + result.data.data.sort(function(a, b) { | ||
388 | + return b.proportion - a.proportion; | ||
389 | + }); | ||
390 | + | ||
391 | + chartsData.total = _.get(result.data, 'total', ''); | ||
392 | + | ||
393 | + _.forEach(result.data.data, function(data) { | ||
394 | + list.push({ | ||
395 | + value: data.num, | ||
396 | + name: data.source, | ||
397 | + percent: parseInt(data.proportion, 10) * 100 + '%', | ||
398 | + color: data.colour, | ||
399 | + plateType: data.type | ||
400 | + }); | ||
401 | + | ||
402 | + colorList.push(data.colour); | ||
403 | + }); | ||
404 | + | ||
405 | + chartsData.list = list; | ||
406 | + chartsData.colorList = colorList; | ||
407 | + } | ||
408 | + return chartsData; | ||
409 | + }); | ||
410 | + } | ||
411 | + | ||
412 | + /** | ||
413 | + * family主页 | ||
414 | + */ | ||
415 | + familyIndex(uid, contentCodeOne, contentCodeTwo) { | ||
416 | + return Promise.all([ | ||
417 | + this._userData(uid), | ||
418 | + this._getCode(uid), | ||
419 | + this._getAppList(uid), | ||
420 | + this._getTrendPop(contentCodeOne), | ||
421 | + this._getTrendPop(contentCodeTwo), | ||
422 | + this.integralCharts(uid) | ||
423 | + ]).then((result) => { | ||
424 | + let familyIndexData = {}; | ||
425 | + | ||
426 | + if (result[0] && result[0].data) { | ||
427 | + familyIndexData = _.assign(familyIndexData, { | ||
428 | + head_ico: result[0].data.headIco, | ||
429 | + nickname: result[0].data.nickName, | ||
430 | + gender: parseInt(result[0].data.gender, 10), | ||
431 | + birthday: result[0].data.birthday ? moment(result[0].data.birthday).format('MM-DD') : '', | ||
432 | + province: result[0].data.province, | ||
433 | + city: result[0].data.city | ||
434 | + }); | ||
435 | + } | ||
436 | + | ||
437 | + if (result[1] && result[1].data) { | ||
438 | + familyIndexData = _.assign(familyIndexData, result[1].data); | ||
439 | + } | ||
440 | + | ||
441 | + if (result[2]) { | ||
442 | + familyIndexData.appList = result[2]; | ||
443 | + } | ||
444 | + | ||
445 | + if (result[3]) { | ||
446 | + familyIndexData.ownContent = result[3]; | ||
447 | + } | ||
448 | + | ||
449 | + if (result[4]) { | ||
450 | + familyIndexData.townContent = result[4]; | ||
451 | + } | ||
452 | + | ||
453 | + return familyIndexData; | ||
454 | + }); | ||
455 | + } | ||
456 | + | ||
457 | + formatDay(day) { | ||
458 | + return moment(day).format('YYYY-MM-DD'); | ||
459 | + } | ||
460 | + | ||
461 | + getCoinData(params) { | ||
462 | + return family.get('user/getYohoCoinLog', { | ||
463 | + uid: params.uid, | ||
464 | + source: params.source || -1, | ||
465 | + queryType: params.queryType || 0, | ||
466 | + beginTime: params.beginTime ? this.formatDay(parseInt(params.beginTime, 10)) : '', | ||
467 | + endTime: params.endTime ? this.formatDay(parseInt(params.endTime, 10)) : '', | ||
468 | + page: params.page || 1, | ||
469 | + limit: params.limit || 10 | ||
470 | + }, { | ||
471 | + code: 200 | ||
472 | + }).then(result => { | ||
473 | + let resu = { | ||
474 | + coinList: [] | ||
475 | + }; | ||
476 | + let _this = this; | ||
477 | + | ||
478 | + if (_.get(result, 'data.coinlist')) { | ||
479 | + _.forEach(result.data.coinlist, function(val) { | ||
480 | + Object.assign(val, { | ||
481 | + typeName: _this.checkType(val.iconType), | ||
482 | + minus: parseInt(val.num, 10) < 0 | ||
483 | + }); | ||
484 | + }); | ||
485 | + resu.coinList = result.data.coinlist; | ||
486 | + } | ||
487 | + | ||
488 | + return resu; | ||
489 | + }); | ||
490 | + } | ||
491 | + | ||
492 | + /** | ||
493 | + * 设置我的潮流口令 | ||
494 | + */ | ||
495 | + setTrendWord(uid, trendWord) { | ||
496 | + return family.get('user/updateInviteCode', { | ||
497 | + uid: uid, | ||
498 | + trendWord: trendWord | ||
499 | + }).then((result) => { | ||
500 | + | ||
501 | + return result; | ||
502 | + }); | ||
503 | + } | ||
504 | + | ||
505 | + userInfo(params) { | ||
506 | + return Promise.all([ | ||
507 | + this._userData(params.uid), | ||
508 | + this._getCode(params.uid) | ||
509 | + ]).then(result => { | ||
510 | + let resu = {}; | ||
511 | + | ||
512 | + if (_.get(result, '[0].data')) { | ||
513 | + let thisGender = result[0].data.gender; | ||
514 | + let token = _.get(result[0], 'data.uid', null) ? | ||
515 | + crypto.encryption('yoho9646yoho9646', _.get(result, 'data.uid', null) + '') : ''; | ||
516 | + let icon = _.get(result[0], 'data.headIco', ''); | ||
517 | + let name = _.get(result[0], 'data.nickName', ''); | ||
518 | + let vip = 0; // 从family进入二维码,暂时显示0 | ||
519 | + let hideTips = true; | ||
520 | + | ||
521 | + | ||
522 | + result[0].data.gender = (thisGender === '1' ? '男' : '女'); | ||
523 | + result[0].data.otherGender = (thisGender === '1' ? '女' : '男'); | ||
524 | + if (result[0].data.gender === '男') { | ||
525 | + result[0].data.genderId = 1; | ||
526 | + result[0].data.otherGenderId = 2; | ||
527 | + } else { | ||
528 | + result[0].data.genderId = 2; | ||
529 | + result[0].data.otherGenderId = 1; | ||
530 | + } | ||
531 | + if (params.isApp) { | ||
532 | + result[0].data.qrcodeLink = `http://m.yohobuy.com?openby:yohobuy={"action":"go.h5","params":{ | ||
533 | + "url":"http://m.yohobuy.com/home/user/qrcode", | ||
534 | + "param": { | ||
535 | + "token":"${token}", | ||
536 | + "icon":"${icon}", | ||
537 | + "uname":"${name}", | ||
538 | + "vip":"${vip}" | ||
539 | + } | ||
540 | + }}`; | ||
541 | + result[0].data.trendLink = `http://m.yohobuy.com?openby:yohobuy={"action":"go.h5","params":{ | ||
542 | + "url":"http://m.yohobuy.com/home/tide-command", | ||
543 | + "param": { | ||
544 | + "hideTips":"${hideTips}" | ||
545 | + } | ||
546 | + }}`; | ||
547 | + } else { | ||
548 | + result[0].data.qrcodeLink = helpers.urlFormat('/home/user/qrcode', { | ||
549 | + token: token, | ||
550 | + icon: icon, | ||
551 | + uname: name, | ||
552 | + vip: vip | ||
553 | + }); | ||
554 | + result[0].data.trendLink = helpers.urlFormat('/home/tide-command', { | ||
555 | + hideTips: hideTips | ||
556 | + }); | ||
557 | + } | ||
558 | + resu = camelCase(result[0].data); | ||
559 | + } | ||
560 | + if (_.get(result, '[1].data')) { | ||
561 | + Object.assign(resu, { | ||
562 | + trendWord: result[1].data.trendWord | ||
563 | + }); | ||
564 | + } | ||
565 | + return resu; | ||
566 | + }); | ||
567 | + } | ||
568 | + | ||
569 | + modify(params) { | ||
570 | + return family.get('user/updateUserInfo.json', { | ||
571 | + uid: params.uid, | ||
572 | + nickName: params.nickName, | ||
573 | + gender: params.gender, | ||
574 | + birthday: params.birthday, | ||
575 | + height: params.height, | ||
576 | + weight: params.weight, | ||
577 | + province: params.province, | ||
578 | + city: params.city | ||
579 | + }).then(result => { | ||
580 | + return result; | ||
581 | + }); | ||
582 | + } | ||
583 | + | ||
584 | + getCity(params) { | ||
585 | + return family.get('area/provinces', { | ||
586 | + uid: params.uid, | ||
587 | + id: params.id | ||
588 | + }, { | ||
589 | + cache: true, | ||
590 | + code: 200 | ||
591 | + }).then(result => { | ||
592 | + let resu = { | ||
593 | + cityList: [] | ||
594 | + }; | ||
595 | + | ||
596 | + if (_.get(result, 'data')) { | ||
597 | + let build = []; | ||
598 | + | ||
599 | + _.forEach(result.data, val => { | ||
600 | + build.push({ | ||
601 | + cityId: val.id, | ||
602 | + cityName: val.caption | ||
603 | + }); | ||
604 | + }); | ||
605 | + resu.cityList = build; | ||
606 | + } | ||
607 | + return resu; | ||
608 | + }); | ||
609 | + } | ||
610 | + | ||
611 | + getList(params) { | ||
612 | + return family.get('shop/getShopProducts.json', { | ||
613 | + uid: params.uid, | ||
614 | + type: params.type, | ||
615 | + page: params.page || 1, | ||
616 | + limit: params.limit || 10, | ||
617 | + }, { | ||
618 | + code: 200 | ||
619 | + }).then(result => { | ||
620 | + let resu = { | ||
621 | + list: [] | ||
622 | + }; | ||
623 | + | ||
624 | + if (_.get(result, 'data.list')) { | ||
625 | + resu.list = result.data.list; | ||
626 | + } | ||
627 | + return resu; | ||
628 | + }); | ||
629 | + } | ||
630 | + | ||
631 | + coinMall(params) { | ||
632 | + return family.get('user/getUserCoin', { | ||
633 | + uid: params.uid | ||
634 | + }, { | ||
635 | + code: 200 | ||
636 | + }).then(result => { | ||
637 | + let resu = { | ||
638 | + coinNum: {}, | ||
639 | + isMarsApp: params.isMarsApp, | ||
640 | + isNowApp: params.isNowApp | ||
641 | + }; | ||
642 | + | ||
643 | + if (_.get(result, 'data.data')) { | ||
644 | + _.forEach(result.data.data, (val) => { | ||
645 | + let name = this.checkType(parseInt(val.type, 10)); | ||
646 | + | ||
647 | + resu.coinNum[name] = { | ||
648 | + num: val.num, | ||
649 | + source: val.source | ||
650 | + }; | ||
651 | + }); | ||
652 | + } | ||
653 | + return resu; | ||
654 | + }); | ||
655 | + } | ||
656 | + | ||
657 | + checkType(params) { | ||
658 | + switch (params) { | ||
659 | + case 1: | ||
660 | + return 'yohobuy'; | ||
661 | + case 2: | ||
662 | + return 'mars'; | ||
663 | + case 3: | ||
664 | + return 'yohonow'; | ||
665 | + case 4: | ||
666 | + return 'store'; | ||
667 | + case 5: | ||
668 | + return 'green'; | ||
669 | + case 6: | ||
670 | + return 'coffee'; | ||
671 | + case 7: | ||
672 | + return 'little'; | ||
673 | + default: | ||
674 | + return 'yohobuy'; | ||
675 | + } | ||
676 | + } | ||
677 | +} | ||
678 | + | ||
679 | +module.exports = familyModel; |
@@ -42,13 +42,15 @@ module.exports = class extends global.yoho.BaseModel { | @@ -42,13 +42,15 @@ module.exports = class extends global.yoho.BaseModel { | ||
42 | }); | 42 | }); |
43 | } | 43 | } |
44 | 44 | ||
45 | - invitionData(uid, contentCode) { | 45 | + invitionData(uid, contentCode, hideTips) { |
46 | return Promise.all([this.invitionText(uid), this.resources(contentCode)]).then((result) => { | 46 | return Promise.all([this.invitionText(uid), this.resources(contentCode)]).then((result) => { |
47 | + | ||
47 | let finaData = {}; | 48 | let finaData = {}; |
48 | 49 | ||
49 | finaData = Object.assign(finaData, result[0]); | 50 | finaData = Object.assign(finaData, result[0]); |
50 | finaData.imgSrc = _.get(result[1], 'data[0].src', ''); | 51 | finaData.imgSrc = _.get(result[1], 'data[0].src', ''); |
51 | finaData.resourcesUrl = _.get(result[1], 'data[0].url', ''); | 52 | finaData.resourcesUrl = _.get(result[1], 'data[0].url', ''); |
53 | + finaData.hideTips = hideTips; | ||
52 | 54 | ||
53 | return finaData; | 55 | return finaData; |
54 | }); | 56 | }); |
@@ -33,6 +33,7 @@ const refund = require(`${cRoot}/refund`); | @@ -33,6 +33,7 @@ const refund = require(`${cRoot}/refund`); | ||
33 | const exchange = require(`${cRoot}/exchange`); | 33 | const exchange = require(`${cRoot}/exchange`); |
34 | const tideCommand = require(`${cRoot}/tide-command`); | 34 | const tideCommand = require(`${cRoot}/tide-command`); |
35 | const newHome = require(`${cRoot}/new-home`); | 35 | const newHome = require(`${cRoot}/new-home`); |
36 | +const family = require(`${cRoot}/family`); | ||
36 | const newQrcode = require(`${cRoot}/newQrcode`); | 37 | const newQrcode = require(`${cRoot}/newQrcode`); |
37 | const freeShipping = require(`${cRoot}/free-shipping`); | 38 | const freeShipping = require(`${cRoot}/free-shipping`); |
38 | 39 | ||
@@ -184,6 +185,20 @@ router.get('/return/exchange/refreshDelivery', auth, exchange.refreshDelivery); | @@ -184,6 +185,20 @@ router.get('/return/exchange/refreshDelivery', auth, exchange.refreshDelivery); | ||
184 | router.get('/tide-command', auth, tideCommand.tideCommand); // 设置潮流口令 | 185 | router.get('/tide-command', auth, tideCommand.tideCommand); // 设置潮流口令 |
185 | 186 | ||
186 | router.get('/', newHome.index); // 新个人中心首页 | 187 | router.get('/', newHome.index); // 新个人中心首页 |
188 | + | ||
189 | + | ||
190 | +router.get('/family', auth, disableBFCache, family.familyIndex); // family首页 | ||
191 | +router.get('/family/vipDetailData', auth, family.familyVip); // 获取VIP信息 | ||
192 | +router.get('/family/downLoadData', family.downLoadData); // 下载弹窗 | ||
193 | +router.get('/family/coinDetail', auth, family.coinDetail); // 积分详情页 | ||
194 | +router.get('/family/coinDetail/getCoinData', auth, family.getCoinData); // 筛选积分详情 | ||
195 | +router.get('/family/userInfo', auth, disableBFCache, family.userInfo); // family个人信息页 | ||
196 | +router.get('/family/userInfo/getCity', auth, family.getCity); // family个人信息页-获取城市 | ||
197 | +router.get('/family/coinMall', auth, family.coinMall); // 积分商城 | ||
198 | +router.get('/family/coinMall/getList', auth, family.getList); // 积分商城-获取积分列表 | ||
199 | +router.get('/family/modify', auth, family.modify); // family修改个人信息页 | ||
200 | +router.get('/family/integralCharts', auth, family.integralCharts); // family积分商城 | ||
201 | +router.get('/family/set-trend-word', auth, family.setTrendWord); // family设置潮流口令 | ||
187 | router.get('/newQrcode', auth, newQrcode.index); // 新二维码页面 | 202 | router.get('/newQrcode', auth, newQrcode.index); // 新二维码页面 |
188 | router.get('/newQrcode/reload', auth, newQrcode.reload); // 刷新二维码页面 | 203 | router.get('/newQrcode/reload', auth, newQrcode.reload); // 刷新二维码页面 |
189 | 204 |
1 | +<div class="yoho-family-page yoho-page"> | ||
2 | + <div class="score-detail-c"> | ||
3 | + <div class="tab"> | ||
4 | + <div id="source" class="tab-item"> | ||
5 | + <span class="name">版块</span> | ||
6 | + <span class="iconfont down"></span> | ||
7 | + <span class="iconfont up"></span> | ||
8 | + <ul class="list"> | ||
9 | + <li data-source="-1"> | ||
10 | + <span class="title">全部</span> | ||
11 | + <span class="tick"></span> | ||
12 | + </li> | ||
13 | + <li data-source="1"> | ||
14 | + <span class="title">Yoho!Buy</span> | ||
15 | + <span class="tick"></span> | ||
16 | + </li> | ||
17 | + <li data-source="3"> | ||
18 | + <span class="title">Yoho!Now</span> | ||
19 | + <span class="tick"></span> | ||
20 | + </li> | ||
21 | + <li data-source="2"> | ||
22 | + <span class="title">Mars</span> | ||
23 | + <span class="tick"></span> | ||
24 | + </li> | ||
25 | + <li data-source="6"> | ||
26 | + <span class="title">Yo!Coffee</span> | ||
27 | + <span class="tick"></span> | ||
28 | + </li> | ||
29 | + <li data-source="5"> | ||
30 | + <span class="title">Yo!Green</span> | ||
31 | + <span class="tick"></span> | ||
32 | + </li> | ||
33 | + <li data-source="7"> | ||
34 | + <span class="title">Yo!Little</span> | ||
35 | + <span class="tick"></span> | ||
36 | + </li> | ||
37 | + </ul> | ||
38 | + </div> | ||
39 | + <div id="queryType" class="tab-item"> | ||
40 | + <span class="name">积分明细</span> | ||
41 | + <span class="iconfont down"></span> | ||
42 | + <span class="iconfont up"></span> | ||
43 | + <ul class="list"> | ||
44 | + <li data-type="0"> | ||
45 | + <span class="title">全部</span> | ||
46 | + <span class="tick"></span> | ||
47 | + </li> | ||
48 | + <li data-type="1"> | ||
49 | + <span class="title">收入</span> | ||
50 | + <span class="tick"></span> | ||
51 | + </li> | ||
52 | + <li data-type="2"> | ||
53 | + <span class="title">支出</span> | ||
54 | + <span class="tick"></span> | ||
55 | + </li> | ||
56 | + </ul> | ||
57 | + </div> | ||
58 | + <div id="time" class="tab-item"> | ||
59 | + <span class="name">最近一年</span> | ||
60 | + <span class="iconfont down"></span> | ||
61 | + <span class="iconfont up"></span> | ||
62 | + <ul class="list"> | ||
63 | + <li data-begin="0"> | ||
64 | + <span class="title">全部</span> | ||
65 | + <span class="tick"></span></li> | ||
66 | + <li data-begin="7776000000"> | ||
67 | + <span class="title">最近三月</span> | ||
68 | + <span class="tick"></span> | ||
69 | + </li> | ||
70 | + <li data-begin="15552000000"> | ||
71 | + <span class="title">最近六月</span> | ||
72 | + <span class="tick"></span> | ||
73 | + </li> | ||
74 | + <li data-begin="31104000000"> | ||
75 | + <span class="title">最近一年</span> | ||
76 | + <span class="tick"></span> | ||
77 | + </li> | ||
78 | + </ul> | ||
79 | + </div> | ||
80 | + </div> | ||
81 | + <div class="cover-bg"></div> | ||
82 | + <div class="result"></div> | ||
83 | + </div> | ||
84 | +</div> |
apps/home/views/action/family/coin-mall.hbs
0 → 100644
1 | +<div class="coin-mall-c"> | ||
2 | + <div class="coin{{#if isNowApp}} now{{/if}}"> | ||
3 | + {{#if isNowApp}} | ||
4 | + <span class="coin-pic yohonow"></span> | ||
5 | + {{else if isMarsApp}} | ||
6 | + <span class="coin-pic mars"></span> | ||
7 | + {{else}} | ||
8 | + <span class="coin-pic yohobuy"></span> | ||
9 | + {{/if}} | ||
10 | + <span> | ||
11 | + {{#if isNowApp}} | ||
12 | + {{coinNum/yohonow/num}} | ||
13 | + {{else if isMarsApp}} | ||
14 | + {{coinNum/mars/num}} | ||
15 | + {{else}} | ||
16 | + {{coinNum/yohobuy/num}} | ||
17 | + {{/if}} | ||
18 | + </span> | ||
19 | + </div> | ||
20 | + <div class="btn-c"> | ||
21 | + {{#if isNowApp}} | ||
22 | + <a href='//m.yohobuy.com/service/qaDetail?keyword=有货币&sonId=227&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/service/qaDetail","param":{"keyword":"有货币","sonId":"227"}}}'>如何获取Yoho!Coins</a> | ||
23 | + <a href='//m.yohobuy.com/home/family/coinDetail?plateType=3&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/home/family/coinDetail","param":{"plateType":"3"}}}'>Yoho!Coins明细</a> | ||
24 | + {{else if isMarsApp}} | ||
25 | + <a href='//m.yohobuy.com/service/qaDetail?keyword=有货币&sonId=227&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/service/qaDetail","param":{"keyword":"有货币","sonId":"227"}}}'>如何获取mars points</a> | ||
26 | + <a href='//m.yohobuy.com/home/family/coinDetail?plateType=2&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/home/family/coinDetail","param":{"plateType":"2"}}}'>mars points明细</a> | ||
27 | + {{else}} | ||
28 | + <a href='//m.yohobuy.com/service/qaDetail?keyword=有货币&sonId=227&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/service/qaDetail","param":{"keyword":"有货币","sonId":"227"}}}'>如何获取有货币</a> | ||
29 | + <a href='//m.yohobuy.com/home/family/coinDetail?plateType=1&openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/home/family/coinDetail","param":{"plateType":"1"}}}'>有货币明细</a> | ||
30 | + {{/if}} | ||
31 | + </div> | ||
32 | + <div class="tab-fixed"> | ||
33 | + <div class="tab"> | ||
34 | + <div class="tab-item" id="yohonow">Yoho!Now</div> | ||
35 | + <div class="tab-item" id="mars">mars</div> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + <div class="tab-c"> | ||
39 | + <div class="tab-item-c" id="yohonow-tab"></div> | ||
40 | + <div class="tab-item-c hide" id="mars-tab"></div> | ||
41 | + </div> | ||
42 | +</div> |
apps/home/views/action/family/index.hbs
0 → 100644
1 | +<div class="yoho-family-page yoho-page"> | ||
2 | +{{# familyIndexData}} | ||
3 | + <div class="family-heade"> | ||
4 | + <div class="header-top"> | ||
5 | + <span class="back" onclick="javascript:history.go(-1);"></span> | ||
6 | + <span class="headings"></span> | ||
7 | + </div> | ||
8 | + <div class="person-detail"> | ||
9 | + <a href='http://m.yohobuy.com/home/family/userInfo?openby:yohobuy={"action":"go.h5","params":{"url":"http://m.yohobuy.com/home/family/userInfo"}}' class="user-avatar" data-avatar="{{image head_ico 80 80}}"></a> | ||
10 | + <div class="basic-info"> | ||
11 | + <span class="user-name">{{nickname}}</span> | ||
12 | + <span class="gender {{#isEqualOr gender 1}}boy{{/isEqualOr}}{{#isEqualOr gender 2}}girl{{/isEqualOr}}"></span> | ||
13 | + </div> | ||
14 | + <div class="info"> | ||
15 | + <span class="city">{{province}}{{city}}</span> | ||
16 | + <span class="birthday">{{birthday}}</span> | ||
17 | + </div> | ||
18 | + <div class="invition"> | ||
19 | + <span class="code trend-code"> | ||
20 | + {{#if trendWord}} | ||
21 | + # | ||
22 | + <span class="word-outer"> | ||
23 | + <span class="trend-word">{{trendWord}}</span> | ||
24 | + </span> | ||
25 | + # | ||
26 | + {{else}} | ||
27 | + {{inviteCode}} | ||
28 | + {{/if}} | ||
29 | + </span> | ||
30 | + <span class="code-set"></span> | ||
31 | + {{#unless trendWord}} | ||
32 | + <span class="code-tip"></span> | ||
33 | + {{/unless}} | ||
34 | + </div> | ||
35 | + <div class="inviton-set hide"> | ||
36 | + <textarea maxlength="15" placeholder="请输入你的潮流口令"></textarea> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <div class="vip-grade"> | ||
41 | + <div class="title">会员等级及权益</div> | ||
42 | + <div class="grade-content"> | ||
43 | + {{# appList}} | ||
44 | + <div class="content-item" data-login="{{login}}" data-name="{{nickname}}" data-code="{{code}}"> | ||
45 | + <img class="item-tag" src="{{image iconUrl 140 140}}"> | ||
46 | + <span class="name">{{sourceName}}</span> | ||
47 | + <span class="level">{{name}}</span> | ||
48 | + </div> | ||
49 | + {{/ appList}} | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + <div class="integral"> | ||
53 | + <div class="title">积分乐园</div> | ||
54 | + <div class="integral-content"> | ||
55 | + <div class="charts" id="charts" style="width: 8.6rem; height: 8.6rem;"></div> | ||
56 | + </div> | ||
57 | + </div> | ||
58 | + | ||
59 | + {{! 资源位}} | ||
60 | + <div class="rec"> | ||
61 | + <div class="resource-content"> | ||
62 | + {{# ownContent}} | ||
63 | + <div data-id="{{template_id}}" class="resource-own"> | ||
64 | + {{> family-res}} | ||
65 | + </div> | ||
66 | + {{/ ownContent}} | ||
67 | + {{# townContent}} | ||
68 | + <div data-id="{{template_id}}"> | ||
69 | + {{> family-res}} | ||
70 | + </div> | ||
71 | + {{/ townContent}} | ||
72 | + </div> | ||
73 | + </div> | ||
74 | + <div class="dia-c popover"></div> | ||
75 | +{{/ familyIndexData}} | ||
76 | +</div> |
apps/home/views/action/family/user-info.hbs
0 → 100644
1 | +<div class="family-user-info"> | ||
2 | + <div class="info-list"> | ||
3 | + <div class="list-item user-pic"> | ||
4 | + <div class="title">头像</div> | ||
5 | + <div class="main"> | ||
6 | + <div class="pic user-avatar" data-avatar="{{image headIco 100 100}}"></div> | ||
7 | + </div> | ||
8 | + <div class="arr"> | ||
9 | + <span class="iconfont"></span> | ||
10 | + </div> | ||
11 | + </div> | ||
12 | + <div class="list-item"> | ||
13 | + <div class="title">昵称</div> | ||
14 | + <div class="main"> | ||
15 | + <input class="inp nick-name modify" type="text" value="{{nickName}}" /> | ||
16 | + </div> | ||
17 | + <div class="arr"> | ||
18 | + <span class="iconfont"></span> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + <div class="list-item"> | ||
22 | + <div class="title">性别</div> | ||
23 | + <div class="main"> | ||
24 | + <div class="select-c"> | ||
25 | + <select class="inp gender modify"> | ||
26 | + <option value="{{genderId}}">{{gender}} </option> | ||
27 | + <option value="{{otherGenderId}}">{{otherGender}} </option> | ||
28 | + </select> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + <div class="arr"> | ||
32 | + <span class="iconfont"></span> | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + <div class="list-item"> | ||
36 | + <div class="title">生日</div> | ||
37 | + <div class="main"> | ||
38 | + <span class="date-c"> | ||
39 | + <input class="inp birthday modify" type="date" value="{{birthday}}" /> | ||
40 | + </span> | ||
41 | + </div> | ||
42 | + <div class="arr"> | ||
43 | + <span class="iconfont"></span> | ||
44 | + </div> | ||
45 | + </div> | ||
46 | + <div id="chosen-city" class="list-item"> | ||
47 | + <div class="title">城市</div> | ||
48 | + <div class="main"> | ||
49 | + <span class="inp"><span class="province-text">{{province}}</span> <span class="city-text">{{city}}</span></span> | ||
50 | + </div> | ||
51 | + <div class="arr"> | ||
52 | + <span class="iconfont"></span> | ||
53 | + </div> | ||
54 | + </div> | ||
55 | + <a class="list-item" href="{{trendLink}}"> | ||
56 | + <div class="title">我的潮流口令</div> | ||
57 | + <div class="main"> | ||
58 | + <span class="inp" type="text">#{{trendWord}}#</span> | ||
59 | + </div> | ||
60 | + <div class="arr"> | ||
61 | + <span class="iconfont"></span> | ||
62 | + </div> | ||
63 | + </a> | ||
64 | + <a class="list-item" href="{{qrcodeLink}}"> | ||
65 | + <div class="title">我的二维码</div> | ||
66 | + <div class="main"> | ||
67 | + <div class="ewm"></div> | ||
68 | + </div> | ||
69 | + <div class="arr"> | ||
70 | + <span class="iconfont"></span> | ||
71 | + </div> | ||
72 | + </a> | ||
73 | + </div> | ||
74 | + <div class="info-list"> | ||
75 | + <div class="list-item"> | ||
76 | + <div class="title">身高</div> | ||
77 | + <div class="main"> | ||
78 | + <label>cm</label> | ||
79 | + <input class="inp inp-2 height modify" type="number" value="{{height}}" /> | ||
80 | + </div> | ||
81 | + <div class="arr"> | ||
82 | + <span class="iconfont"></span> | ||
83 | + </div> | ||
84 | + </div> | ||
85 | + <div class="list-item"> | ||
86 | + <div class="title">体重</div> | ||
87 | + <div class="main"> | ||
88 | + <label>kg</label> | ||
89 | + <input class="inp inp-2 weight modify" type="number" value="{{weight}}" /> | ||
90 | + </div> | ||
91 | + <div class="arr"> | ||
92 | + <span class="iconfont"></span> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </div> | ||
96 | + <div class="info-list hide"> | ||
97 | + <div class="list-item"> | ||
98 | + <div class="title">账号安全</div> | ||
99 | + <div class="main"> | ||
100 | + <input class="inp" type="text" value="修改手机号+密码等" /> | ||
101 | + </div> | ||
102 | + <div class="arr"> | ||
103 | + <span class="iconfont"></span> | ||
104 | + </div> | ||
105 | + </div> | ||
106 | + </div> | ||
107 | + <div class="foot-tip"> | ||
108 | + <div class="pic"></div> | ||
109 | + <p>如果你还使用了我们的其他产品(Yoho!Buy有货、Yoho!Now和 mars)修改个人信息时将同步。</p> | ||
110 | + </div> | ||
111 | + <div class="city-swiper"> | ||
112 | + <div class="swiper-header"> | ||
113 | + <div class="cancel">取消</div> | ||
114 | + <div class="ok">完成</div> | ||
115 | + </div> | ||
116 | + <div class="swiper-list"> | ||
117 | + <div class="swiper-container" id="province-c"> | ||
118 | + <div class="swiper-wrapper" id="province"></div> | ||
119 | + </div> | ||
120 | + <div class="swiper-container" id="city-c"> | ||
121 | + <div class="swiper-wrapper" id="city"></div> | ||
122 | + </div> | ||
123 | + <div class="swiper-line"></div> | ||
124 | + </div> | ||
125 | + </div> | ||
126 | +</div> |
@@ -25,8 +25,9 @@ | @@ -25,8 +25,9 @@ | ||
25 | <span class="code-tip"></span> | 25 | <span class="code-tip"></span> |
26 | {{/unless}} | 26 | {{/unless}} |
27 | </div> | 27 | </div> |
28 | - <div class="iconfont more-icon tap-hightlight"></div> | 28 | + <!-- <div class="iconfont more-icon tap-hightlight"></div> --> |
29 | </a> | 29 | </a> |
30 | + <!-- <a class="family-entry" href="//m.yohobuy.com/home/family"></a> --> | ||
30 | {{#unless students}} | 31 | {{#unless students}} |
31 | {{#if @root.studentSwitch}} | 32 | {{#if @root.studentSwitch}} |
32 | <a class="students-entry" href="{{verifyUrl}}">学生认证</a> | 33 | <a class="students-entry" href="{{verifyUrl}}">学生认证</a> |
@@ -27,6 +27,7 @@ | @@ -27,6 +27,7 @@ | ||
27 | </a> | 27 | </a> |
28 | <a class="iconfont qrcode" href="/home/newQrcode"></a> | 28 | <a class="iconfont qrcode" href="/home/newQrcode"></a> |
29 | <div class="gif-part hide"></div> | 29 | <div class="gif-part hide"></div> |
30 | + <!-- <a class="family-entry" href="//m.yohobuy.com/home/family"></a> --> | ||
30 | {{/ baseInfo}} | 31 | {{/ baseInfo}} |
31 | {{else}} | 32 | {{else}} |
32 | <a class="login-btn" href="{{signinUrl}}" data-refer="{{referUrl}}"> | 33 | <a class="login-btn" href="{{signinUrl}}" data-refer="{{referUrl}}"> |
@@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
8 | 8 | ||
9 | <span class="world-number">15</span> | 9 | <span class="world-number">15</span> |
10 | 10 | ||
11 | - <div class="introduce"> | 11 | + <div class="introduce{{#if hideTips}} hide{{/if}}"> |
12 | <div class="rules"> | 12 | <div class="rules"> |
13 | {{#if mytrendWordPageDesc}} | 13 | {{#if mytrendWordPageDesc}} |
14 | <span class="title">玩转潮流口令,超值福利等你拿</span> | 14 | <span class="title">玩转潮流口令,超值福利等你拿</span> |
apps/home/views/partial/family-res.hbs
0 → 100644
1 | +{{#if singleOne}} | ||
2 | +{{#data}} | ||
3 | + <div class="banner-list"> | ||
4 | + <a href="{{url}}" id="{{../template_id}}" name="{{../template_intro}}"> | ||
5 | + <img src="{{image2 src w=750 h=300 q=60 mode=3}}" alt=""> | ||
6 | + </a> | ||
7 | + </div> | ||
8 | +{{/data}} | ||
9 | +{{else}} | ||
10 | +<div class="banner-center banner-center-swiper"> | ||
11 | + <ul class="banner-list swiper-wrapper clearfix"> | ||
12 | + {{#data.list}} | ||
13 | + <li class="swiper-slide"> | ||
14 | + <a href="{{url}}" id="{{../template_id}}' name="{{../template_intro}}"> | ||
15 | + <img src="{{image2 src w=750 h=290 q=60 mode=3}}" alt=""> | ||
16 | + </a> | ||
17 | + </li> | ||
18 | + {{/data.list}} | ||
19 | + </ul> | ||
20 | + <div class="swiper-pagination" {{#unless singleOne}}style="display:block"{{/unless}}> | ||
21 | + <div class="pagination-inner"> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | +</div> | ||
25 | +{{/if}} |
@@ -19,7 +19,8 @@ const domains = { | @@ -19,7 +19,8 @@ const domains = { | ||
19 | imCs: 'http://im.yohobuy.com/api', | 19 | imCs: 'http://im.yohobuy.com/api', |
20 | platformApi: 'http://192.168.102.48:8088/', | 20 | platformApi: 'http://192.168.102.48:8088/', |
21 | store: 'http://192.168.102.47:8080/portal-gateway/wechat/', | 21 | store: 'http://192.168.102.47:8080/portal-gateway/wechat/', |
22 | - extstore: 'http://extstore-test1.yohops.com' | 22 | + extstore: 'http://extstore-test1.yohops.com', |
23 | + family: 'http://192.168.103.73:8096/uic/' | ||
23 | }; | 24 | }; |
24 | 25 | ||
25 | module.exports = { | 26 | module.exports = { |
@@ -133,13 +134,14 @@ if (isProduction) { | @@ -133,13 +134,14 @@ if (isProduction) { | ||
133 | api: 'http://api.yoho.yohoops.org/', | 134 | api: 'http://api.yoho.yohoops.org/', |
134 | service: 'http://api.yoho.yohoops.org/', | 135 | service: 'http://api.yoho.yohoops.org/', |
135 | global: 'http://api-global.yohobuy.com', | 136 | global: 'http://api-global.yohobuy.com', |
136 | - store: 'http://openstore.yohobuy.com', // 线上域名尚未确定 | 137 | + store: 'http://openstore.yohobuy.com', |
137 | liveApi: 'http://api.live.yoho.cn/', | 138 | liveApi: 'http://api.live.yoho.cn/', |
138 | singleApi: 'http://single.yoho.cn/', | 139 | singleApi: 'http://single.yoho.cn/', |
139 | imSocket: 'wss://imsocket.yohobuy.com:443', | 140 | imSocket: 'wss://imsocket.yohobuy.com:443', |
140 | imCs: 'https://imhttp.yohobuy.com/api', | 141 | imCs: 'https://imhttp.yohobuy.com/api', |
141 | platformApi: 'http://api.platform.yohoops.org', | 142 | platformApi: 'http://api.platform.yohoops.org', |
142 | - extstore: 'http://extstore.yohobuy.com' | 143 | + extstore: 'http://extstore.yohobuy.com', |
144 | + family: '' // 线上域名尚未确定 | ||
143 | }, | 145 | }, |
144 | memcache: { | 146 | memcache: { |
145 | master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'], | 147 | master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'], |
@@ -210,7 +212,8 @@ if (isProduction) { | @@ -210,7 +212,8 @@ if (isProduction) { | ||
210 | imSocket: process.env.TEST_IM_SOCKET || 'ws://socket.yohobuy.com:10240', | 212 | imSocket: process.env.TEST_IM_SOCKET || 'ws://socket.yohobuy.com:10240', |
211 | imCs: process.env.TEST_IM_CS || 'http://im.yohobuy.com/api', | 213 | imCs: process.env.TEST_IM_CS || 'http://im.yohobuy.com/api', |
212 | platformApi: 'http://192.168.102.48:8088/', | 214 | platformApi: 'http://192.168.102.48:8088/', |
213 | - extstore: 'http://extstore-test1.yohops.com' | 215 | + extstore: 'http://extstore-test1.yohops.com', |
216 | + family: 'http://192.168.103.73:8096/uic/' | ||
214 | }, | 217 | }, |
215 | memcache: { | 218 | memcache: { |
216 | master: ['127.0.0.1:12111'], | 219 | master: ['127.0.0.1:12111'], |
@@ -55,6 +55,7 @@ module.exports = () => { | @@ -55,6 +55,7 @@ module.exports = () => { | ||
55 | yoho.clientIp = _getClientIp(req); | 55 | yoho.clientIp = _getClientIp(req); |
56 | 56 | ||
57 | // 判断请求是否来自app | 57 | // 判断请求是否来自app |
58 | + yoho.isNowApp = /yohonow/i.test(req.get('User-Agent') || ''); | ||
58 | yoho.isMarsApp = /yohomars/i.test(req.get('User-Agent') || ''); | 59 | yoho.isMarsApp = /yohomars/i.test(req.get('User-Agent') || ''); |
59 | yoho.isApp = yoho.isMarsApp || | 60 | yoho.isApp = yoho.isMarsApp || |
60 | req.cookies.app_version || | 61 | req.cookies.app_version || |
@@ -74,7 +74,7 @@ | @@ -74,7 +74,7 @@ | ||
74 | <link rel="apple-touch-startup-image" sizes="640x920" href="http://static.yohobuy.com/m/v1/img/startup/startup-retina.png" media="screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2)"> | 74 | <link rel="apple-touch-startup-image" sizes="640x920" href="http://static.yohobuy.com/m/v1/img/startup/startup-retina.png" media="screen and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2)"> |
75 | <link rel="apple-touch-startup-image" sizes="320x460" href="http://static.yohobuy.com/m/v1/img/startup/startup.png" media="screen and (max-device-width: 320)"> | 75 | <link rel="apple-touch-startup-image" sizes="320x460" href="http://static.yohobuy.com/m/v1/img/startup/startup.png" media="screen and (max-device-width: 320)"> |
76 | </head> | 76 | </head> |
77 | - <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}} installment-body{{/if}}{{#if @root.isMarsApp}} is-mars-app{{/if}}"> | 77 | + <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}} installment-body{{/if}}{{#if @root.isMarsApp}} is-mars-app{{/if}}{{#if @root.isNowApp}} is-now-app{{/if}}"> |
78 | <div class="main-wrap" id="main-wrap" {{#if appPath}}data-apppath='{{{appPath}}}'{{/if}}> | 78 | <div class="main-wrap" id="main-wrap" {{#if appPath}}data-apppath='{{{appPath}}}'{{/if}}> |
79 | {{#if systemUpdate}} | 79 | {{#if systemUpdate}} |
80 | {{> updata}} | 80 | {{> updata}} |
package-lock.json
0 → 100644
This diff could not be displayed because it is too large.
@@ -83,6 +83,7 @@ | @@ -83,6 +83,7 @@ | ||
83 | "babel-polyfill": "^6.26.0", | 83 | "babel-polyfill": "^6.26.0", |
84 | "babel-preset-env": "^1.6.0", | 84 | "babel-preset-env": "^1.6.0", |
85 | "css-loader": "^0.28.7", | 85 | "css-loader": "^0.28.7", |
86 | + "echarts": "^3.7.1", | ||
86 | "eslint": "^4.7.0", | 87 | "eslint": "^4.7.0", |
87 | "eslint-config-yoho": "^1.0.9", | 88 | "eslint-config-yoho": "^1.0.9", |
88 | "eslint-loader": "^1.9.0", | 89 | "eslint-loader": "^1.9.0", |
public/hbs/home/chosen-city.hbs
0 → 100644
public/hbs/home/coin-get-list.hbs
0 → 100644
1 | +<div class="act-list"> | ||
2 | + {{# list}} | ||
3 | + <div class="act-item"> | ||
4 | + <div class="pic"> | ||
5 | + {{#if headimg}} | ||
6 | + <img class="lazy" data-original="{{image headimg mode=2 w=750 h=300 q=60}}" /> | ||
7 | + {{else}} | ||
8 | + <img class="lazy" data-original="{{image2 headPic mode=2 w=750 h=320 q=60}}" /> | ||
9 | + {{/if}} | ||
10 | + <div class="bg"></div> | ||
11 | + <div class="title">有效期:10.11~10.21</div> | ||
12 | + {{#if level}} | ||
13 | + <div class="level">Lv.{{level}}可兑换</div> | ||
14 | + {{/if}} | ||
15 | + </div> | ||
16 | + <div class="info"> | ||
17 | + <div class="left"> | ||
18 | + <div class="name eps">{{name}}</div> | ||
19 | + <div class="num"> | ||
20 | + <span class="coin-pic-s"></span> | ||
21 | + <span>{{#if points}}{{points}}{{/if}}{{#if point}}{{point}}{{/if}}</span> | ||
22 | + <span class="old-price">{{discountPoints}}</span> | ||
23 | + <span class="discount">Lv.3会员9折优惠</span> | ||
24 | + </div> | ||
25 | + <div class="remain">仅剩{{#if stock}}{{stock}}{{/if}}{{#if num}}{{num}}{{/if}}份</div> | ||
26 | + </div> | ||
27 | + <div class="right"> | ||
28 | + <a class="go-btn yohonow" href="yohoefashion4In1://yoho.cn/">兑换</a> | ||
29 | + <a class="go-btn mars" href="yohomars://yohomars.com/goapp?openby:mars=">兑换</a> | ||
30 | + </div> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + {{/ list}} | ||
34 | +</div> |
public/hbs/home/coin-list.hbs
0 → 100644
public/hbs/home/down-load-detail.hbs
0 → 100644
1 | +<div class="down-load-detail hide popover"> | ||
2 | + <div class="down-close"></div> | ||
3 | + <div class="back"></div> | ||
4 | + <div class="detail-content"> | ||
5 | + {{# downLoadData}} | ||
6 | + <div class="{{appName}} hide"> | ||
7 | + {{#imgList}} | ||
8 | + <img src="{{image src 640 1049}}"> | ||
9 | + {{/imgList}} | ||
10 | + | ||
11 | + {{#if winXinCode}} | ||
12 | + <a class="code-copy" href='//m.yohobuy.com/?openby:yohobuy={"action":"go.copy","params":{"text":"{{winXinCode}}","message":"复制成功"}}'>复制</a> | ||
13 | + {{/if}} | ||
14 | + </div> | ||
15 | + {{/ downLoadData}} | ||
16 | + </div> | ||
17 | +</div> |
public/hbs/home/integral-paradise.hbs
0 → 100644
1 | +<a class="integral-total" href="{{totalHref}}"> | ||
2 | + <span class="total">{{total}}</span> | ||
3 | + <span class="name">积分总计</span> | ||
4 | +</a> | ||
5 | +<div class="mark"> | ||
6 | + {{# list}} | ||
7 | + <div class="mark-item"> | ||
8 | + <span class="item-name">{{name}}</span> | ||
9 | + <span class="item-color" style="background-color: {{color}}"></span> | ||
10 | + <span class="item-val">{{value}}</span> | ||
11 | + <span class="item-percent">{{percent}}</span> | ||
12 | + </div> | ||
13 | + {{/list}} | ||
14 | + <div class="instruction"> | ||
15 | + 注: | ||
16 | + <span>YOHO!Family 所有产品积分可通用</span> | ||
17 | + </div> | ||
18 | +</div> |
public/hbs/home/vip-detail.hbs
0 → 100644
1 | +<div class="vip-detail"> | ||
2 | + <div class="close"></div> | ||
3 | + <div class="back"></div> | ||
4 | + <div class="detail-content"> | ||
5 | + <div class="banner"> | ||
6 | + </div> | ||
7 | + <div class="main"> | ||
8 | + <div class="user-info clearfix{{#if noUid}} hide{{/if}}"> | ||
9 | + <div class="base clearfix"> | ||
10 | + <div class="pic"{{#if headIco}} style="background-image:url({{image headIco 125 125}})"{{/if}}> | ||
11 | + <div class="level-pic {{#if showLevel}}vip-{{level}}{{/if}}"></div> | ||
12 | + </div> | ||
13 | + <div class="intro"> | ||
14 | + <div class="name"><span></span>您好!</div> | ||
15 | + <div class="level"> | ||
16 | + <span class="now">我的成长值:<span class="val">{{growthValue}}</span></span> | ||
17 | + {{#if valueToNextLevel}} | ||
18 | + <span class="next">下次升级还需:<span class="val">{{valueToNextLevel}}</span></span> | ||
19 | + {{/if}} | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + <div class="level-process clearfix"> | ||
24 | + <div class="line-c"> | ||
25 | + <div class="line" style="width:{{percent}}%"></div> | ||
26 | + <div class="point"> | ||
27 | + {{# vipLevelLis}} | ||
28 | + <div class="point-item"> | ||
29 | + <div class="level-text"> | ||
30 | + <p>{{name}}</p> | ||
31 | + <p>{{growthValue}}</p> | ||
32 | + </div> | ||
33 | + </div> | ||
34 | + {{/ vipLevelLis}} | ||
35 | + </div> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + | ||
40 | + <div class="privilege-list"> | ||
41 | + <div class="privilege-title"> | ||
42 | + <b></b> | ||
43 | + 当前可享受特权 | ||
44 | + <!-- <a class="more" href='{{link}}'>更多</a> --> | ||
45 | + </div> | ||
46 | + {{# privilegeList}} | ||
47 | + <a class="privilege-item"> | ||
48 | + <img class="icon" {{#if pic}}src="{{pic}}"{{/if}} {{#if icon}}src="{{icon}}{{/if}}"> | ||
49 | + <p> | ||
50 | + {{#if title}}{{title}}{{/if}} | ||
51 | + {{#if name}}{{name}}{{/if}} | ||
52 | + <span>{{#if description}}{{description}}{{/if}}{{#if desc}}{{desc}}{{/if}}</span> | ||
53 | + </p> | ||
54 | + </a> | ||
55 | + {{/ privilegeList}} | ||
56 | + <div class="transverse"> | ||
57 | + {{# privileges}} | ||
58 | + <div class="level-item"> | ||
59 | + <img class="item-ico" src="{{image icon 125 125}}"> | ||
60 | + <span class="le-name">{{name}}</span> | ||
61 | + <span class="state">{{status}}</span> | ||
62 | + </div> | ||
63 | + {{/ privileges}} | ||
64 | + </div> | ||
65 | + </div> | ||
66 | + | ||
67 | + {{#if birthShow}} | ||
68 | + <a href="" class="birthday"><b></b>生日礼,会员当月专享生日礼</a> | ||
69 | + {{/if}} | ||
70 | + </div> | ||
71 | + </div> | ||
72 | +</div> |
public/img/home/family/back.png
0 → 100644

1.07 KB
public/img/home/family/boy.png
0 → 100644

1.69 KB
public/img/home/family/chosen.png
0 → 100644

502 Bytes
public/img/home/family/close.png
0 → 100644

4.13 KB
public/img/home/family/foot.png
0 → 100644

4.84 KB
public/img/home/family/girl.png
0 → 100644

1.8 KB
public/img/home/family/ico-coffee.png
0 → 100644

16.5 KB
public/img/home/family/ico-green.png
0 → 100644

16.4 KB
public/img/home/family/ico-little.png
0 → 100644

16.4 KB
public/img/home/family/ico-mars.png
0 → 100644

1.97 KB
public/img/home/family/ico-yohobuy.png
0 → 100644

2.23 KB
public/img/home/family/ico-yohonow.png
0 → 100644

2.55 KB
public/img/home/family/mars-s.png
0 → 100644

804 Bytes
public/img/home/family/person-ewm.png
0 → 100644

1.02 KB
public/img/home/family/point.png
0 → 100644

1.63 KB
public/img/home/family/tag.png
0 → 100644

6.18 KB
public/img/home/family/vip-detail/mars.jpg
0 → 100644

46.2 KB

86.3 KB

36 KB

58.9 KB

47.6 KB
public/img/home/family/write-bg.png
0 → 100644

1.77 KB
public/img/home/family/yoho-family.png
0 → 100644

4.46 KB
public/img/home/family/yoho-s.png
0 → 100644

2.29 KB
public/img/home/family/yoho.png
0 → 100644

3.54 KB
public/img/home/index/family-entry.gif
0 → 100644

101 KB
@@ -58,7 +58,12 @@ $('.set-world').click(function() { | @@ -58,7 +58,12 @@ $('.set-world').click(function() { | ||
58 | 58 | ||
59 | point(1, $('.trend-world-area').val()); | 59 | point(1, $('.trend-world-area').val()); |
60 | 60 | ||
61 | - $('.trend-code').html($('.trend-world-area').val()); | 61 | + if ($('.yoho-page').hasClass('my-page')) { |
62 | + $('.trend-code').html('# ' + $('.trend-world-area').val() + ' #'); | ||
63 | + } else { | ||
64 | + $('.trend-code').html($('.trend-world-area').val()); | ||
65 | + } | ||
66 | + | ||
62 | $('.copy.button').eq(0).attr('href', copyUrl); | 67 | $('.copy.button').eq(0).attr('href', copyUrl); |
63 | 68 | ||
64 | setTimeout(function() { | 69 | setTimeout(function() { |
public/js/home/family-coin.page.js
0 → 100644
1 | +import 'home/family-coin.page.css'; | ||
2 | +import $ from 'yoho-jquery'; | ||
3 | +import Page from 'yoho-page'; | ||
4 | +import tip from 'plugin/tip'; | ||
5 | +import resultRender from 'home/coin-list.hbs'; | ||
6 | + | ||
7 | +class ScoreDetail extends Page { | ||
8 | + constructor() { | ||
9 | + super(); | ||
10 | + | ||
11 | + this.selector = { | ||
12 | + $coverBg: $('.cover-bg'), | ||
13 | + $tabItem: $('.tab-item'), | ||
14 | + $scoreDetailC: $('.score-detail-c'), | ||
15 | + $chosen: $('.tab-item .list').find('li'), | ||
16 | + $defaultChosen: $('.tab-item .list').find('li:first'), | ||
17 | + $defaultChosenTime: $('#time .list').find('li:last'), | ||
18 | + $result: $('.result'), | ||
19 | + $source: $('#source').find('.name'), | ||
20 | + $queryType: $('#queryType').find('.name'), | ||
21 | + $time: $('#time').find('.name') | ||
22 | + }; | ||
23 | + | ||
24 | + this.view = { | ||
25 | + resultRender | ||
26 | + }; | ||
27 | + | ||
28 | + this.source = window.queryString.plateType || -1; | ||
29 | + this.queryType = 0; | ||
30 | + this.endTime = Date.parse(new Date()); | ||
31 | + this.beginTime = parseInt(this.endTime, 10) - parseInt(31104000000, 10); // 默认显示一年内 | ||
32 | + this.page = 1; | ||
33 | + this.loading = false; | ||
34 | + this.end = false; | ||
35 | + | ||
36 | + this.init(); | ||
37 | + } | ||
38 | + | ||
39 | + init() { | ||
40 | + this.setHeight(); | ||
41 | + this.bindEvents(); | ||
42 | + this.chosenData(); | ||
43 | + this.scroll(); | ||
44 | + this.defaultTab(); | ||
45 | + } | ||
46 | + | ||
47 | + defaultTab() { | ||
48 | + this.selector.$defaultChosen.addClass('chosen'); | ||
49 | + this.selector.$defaultChosenTime.addClass('chosen').siblings('li').removeClass('chosen'); | ||
50 | + if (window.queryString.plateType) { | ||
51 | + let $defaultSource = $('#source').find(`li[data-source=${window.queryString.plateType}]`); | ||
52 | + | ||
53 | + $defaultSource.addClass('chosen').siblings('li').removeClass('chosen'); | ||
54 | + this.selector.$source.text($defaultSource.find('.title').text()); | ||
55 | + } | ||
56 | + } | ||
57 | + | ||
58 | + scroll() { | ||
59 | + $(window).scroll(() => { | ||
60 | + window.requestAnimationFrame(this.scrollHandler.bind(this)); | ||
61 | + }); | ||
62 | + } | ||
63 | + | ||
64 | + scrollHandler() { | ||
65 | + if (($(window).scrollTop() + $(window).height() >= $(document).height() * 0.8)) { | ||
66 | + this.doMore(); | ||
67 | + } | ||
68 | + } | ||
69 | + | ||
70 | + doMore() { | ||
71 | + if (!this.end && !this.loading) { | ||
72 | + this.page++; | ||
73 | + this.chosenData(); | ||
74 | + } | ||
75 | + } | ||
76 | + | ||
77 | + bindEvents() { | ||
78 | + this.selector.$tabItem.on('click', this.tab.bind(this)); | ||
79 | + this.selector.$coverBg.on('click', this.coverBg.bind(this)); | ||
80 | + this.selector.$chosen.on('click', this.chosen.bind(this)); | ||
81 | + } | ||
82 | + | ||
83 | + chosen(e) { | ||
84 | + let $this = $(e.currentTarget); | ||
85 | + let $parensId = $this.parents('.tab-item').attr('id'); | ||
86 | + | ||
87 | + this.selector.$result.empty(); | ||
88 | + switch ($parensId) { | ||
89 | + case 'source': | ||
90 | + this.source = $this.data('source'); | ||
91 | + this.selector.$source.text($this.find('.title').text()); | ||
92 | + break; | ||
93 | + case 'queryType': | ||
94 | + this.queryType = $this.data('type'); | ||
95 | + this.selector.$queryType.text($this.find('.title').text()); | ||
96 | + break; | ||
97 | + case 'time': | ||
98 | + if ($this.data('begin')) { | ||
99 | + this.beginTime = $this.data('begin'); | ||
100 | + this.endTime = Date.parse(new Date()); | ||
101 | + this.beginTime = parseInt(this.endTime, 10) - parseInt(this.beginTime, 10); | ||
102 | + } else { | ||
103 | + this.beginTime = ''; | ||
104 | + this.endTime = ''; | ||
105 | + } | ||
106 | + this.selector.$time.text($this.find('.title').text()); | ||
107 | + break; | ||
108 | + default: | ||
109 | + tip.show('请稍后再试~~'); | ||
110 | + } | ||
111 | + this.end = false; | ||
112 | + this.page = 1; | ||
113 | + this.chosenData(); | ||
114 | + $this.addClass('chosen').siblings('li').removeClass('chosen'); | ||
115 | + return false; | ||
116 | + } | ||
117 | + | ||
118 | + setHeight() { | ||
119 | + let wHeight = $(window).height(); | ||
120 | + | ||
121 | + this.selector.$coverBg.css('min-height', `${wHeight}px`); | ||
122 | + } | ||
123 | + | ||
124 | + tab(e) { | ||
125 | + let $this = $(e.currentTarget); | ||
126 | + | ||
127 | + // $this.find('li:first').addClass('chosen'); | ||
128 | + // $this.find('li:first').siblings('li').removeClass('chosen'); | ||
129 | + if ($this.hasClass('active')) { | ||
130 | + $this.removeClass('active'); | ||
131 | + this.selector.$scoreDetailC.removeClass('active'); | ||
132 | + } else { | ||
133 | + $this.addClass('active'); | ||
134 | + $this.siblings('.tab-item').removeClass('active'); | ||
135 | + this.selector.$scoreDetailC.addClass('active'); | ||
136 | + } | ||
137 | + } | ||
138 | + | ||
139 | + coverBg() { | ||
140 | + this.selector.$scoreDetailC.removeClass('active'); | ||
141 | + this.selector.$tabItem.removeClass('active'); | ||
142 | + } | ||
143 | + | ||
144 | + chosenData() { | ||
145 | + this.loading = true; | ||
146 | + this.ajax({ | ||
147 | + url: '/home/family/coinDetail/getCoinData', | ||
148 | + data: { | ||
149 | + source: this.source, | ||
150 | + queryType: this.queryType, | ||
151 | + beginTime: this.beginTime, | ||
152 | + endTime: this.endTime, | ||
153 | + page: this.page | ||
154 | + } | ||
155 | + }).then(result => { | ||
156 | + if (result && result.coinList.length > 0) { | ||
157 | + this.selector.$result.append(this.view.resultRender(result)); | ||
158 | + this.loading = false; | ||
159 | + } else { | ||
160 | + this.end = true; | ||
161 | + tip.show('没有更多数据了~~~'); | ||
162 | + } | ||
163 | + this.selector.$tabItem.removeClass('active'); | ||
164 | + this.selector.$scoreDetailC.removeClass('active'); | ||
165 | + }).catch(error => { | ||
166 | + console.error(error); | ||
167 | + }); | ||
168 | + } | ||
169 | +} | ||
170 | + | ||
171 | +$(() => { | ||
172 | + new ScoreDetail(); | ||
173 | +}); |
public/js/home/family-coinMall.page.js
0 → 100644
1 | +import 'home/family-coinMall.page.css'; | ||
2 | +import $ from 'yoho-jquery'; | ||
3 | +import Page from 'yoho-page'; | ||
4 | +import tip from 'plugin/tip'; | ||
5 | +import tabRender from 'home/coin-get-list.hbs'; | ||
6 | +import lazyLoad from 'yoho-jquery-lazyload'; | ||
7 | + | ||
8 | +class IconMall extends Page { | ||
9 | + constructor() { | ||
10 | + super(); | ||
11 | + | ||
12 | + this.selector = { | ||
13 | + $tabItem: $('.tab .tab-item'), | ||
14 | + $defaultTabItem: $('.tab .tab-item:first'), | ||
15 | + $coinMallC: $('.coin-mall-c'), | ||
16 | + $tabFixed: $('.tab-fixed'), | ||
17 | + $yohonowTab: $('#yohonow-tab'), | ||
18 | + $marsTab: $('#mars-tab') | ||
19 | + }; | ||
20 | + | ||
21 | + this.view = { | ||
22 | + tabRender | ||
23 | + }; | ||
24 | + | ||
25 | + this.page = 1; | ||
26 | + this.limit = 10; | ||
27 | + this.type = 'now'; | ||
28 | + this.loading = false; | ||
29 | + this.end = false; | ||
30 | + this.fixTop = this.selector.$tabFixed.offset().top; | ||
31 | + | ||
32 | + this.init(); | ||
33 | + } | ||
34 | + | ||
35 | + init() { | ||
36 | + this.bindEvents(); | ||
37 | + this.defaultChosen(); | ||
38 | + this.scroll(); | ||
39 | + this.getList(); | ||
40 | + } | ||
41 | + | ||
42 | + scrollHandler() { | ||
43 | + if (($(window).scrollTop() + $(window).height() >= $(document).height() * 0.8)) { | ||
44 | + this.doMore(); | ||
45 | + } | ||
46 | + } | ||
47 | + | ||
48 | + doMore() { | ||
49 | + if (!this.end && !this.loading) { | ||
50 | + this.page++; | ||
51 | + this.getList(); | ||
52 | + } | ||
53 | + } | ||
54 | + | ||
55 | + getList() { | ||
56 | + this.loading = true; | ||
57 | + this.ajax({ | ||
58 | + url: '/home/family/coinMall/getList', | ||
59 | + data: { | ||
60 | + type: this.type, | ||
61 | + page: this.page | ||
62 | + } | ||
63 | + }).then(result => { | ||
64 | + if (result && result.list.length > 0) { | ||
65 | + let $result = $(this.view.tabRender(result)); | ||
66 | + | ||
67 | + if (this.type === 'now') { | ||
68 | + this.selector.$yohonowTab.append($result); | ||
69 | + } | ||
70 | + if (this.type === 'mars') { | ||
71 | + this.selector.$marsTab.append($result); | ||
72 | + } | ||
73 | + this.loading = false; | ||
74 | + lazyLoad($result.find('img.lazy')); | ||
75 | + } else { | ||
76 | + this.end = true; | ||
77 | + tip.show('没有更多数据了~~~'); | ||
78 | + } | ||
79 | + }).catch(error => { | ||
80 | + console.error(error); | ||
81 | + }); | ||
82 | + } | ||
83 | + | ||
84 | + scroll() { | ||
85 | + $(window).scroll(() => { | ||
86 | + let $scrollTop = $(window).scrollTop(); | ||
87 | + | ||
88 | + if ($scrollTop >= this.fixTop) { | ||
89 | + this.selector.$tabFixed.find('.tab').addClass('fixed'); | ||
90 | + } else { | ||
91 | + this.selector.$tabFixed.find('.tab').removeClass('fixed'); | ||
92 | + } | ||
93 | + | ||
94 | + $(window).scroll(() => { | ||
95 | + window.requestAnimationFrame(this.scrollHandler.bind(this)); | ||
96 | + }); | ||
97 | + }); | ||
98 | + } | ||
99 | + | ||
100 | + bindEvents() { | ||
101 | + this.selector.$tabItem.on('click', this.tabItem.bind(this)); | ||
102 | + } | ||
103 | + | ||
104 | + defaultChosen() { | ||
105 | + let defaultId = this.selector.$defaultTabItem.attr('id'); | ||
106 | + | ||
107 | + this.selector.$defaultTabItem.addClass('active'); | ||
108 | + this.selector.$coinMallC.attr('id', defaultId); | ||
109 | + } | ||
110 | + | ||
111 | + tabItem(e) { | ||
112 | + let $this = $(e.currentTarget); | ||
113 | + let $thisId = $this.attr('id'); | ||
114 | + | ||
115 | + this.selector.$yohonowTab.empty(); | ||
116 | + this.selector.$marsTab.empty(); | ||
117 | + $(`#${$thisId}-tab`).show().siblings('.tab-item-c').hide(); | ||
118 | + this.selector.$coinMallC.removeAttr('id'); | ||
119 | + this.selector.$coinMallC.attr('id', $thisId); | ||
120 | + $this.addClass('active').siblings('div').removeClass('active'); | ||
121 | + if ($this.attr('id') === 'yohonow') { | ||
122 | + this.type = 'now'; | ||
123 | + } | ||
124 | + if ($this.attr('id') === 'mars') { | ||
125 | + this.type = 'mars'; | ||
126 | + } | ||
127 | + this.page = 1; | ||
128 | + this.getList(); | ||
129 | + } | ||
130 | +} | ||
131 | + | ||
132 | +$(() => { | ||
133 | + new IconMall(); | ||
134 | +}); |
public/js/home/family-userInfo.page.js
0 → 100644
1 | +import 'home/family-userInfo.page.css'; | ||
2 | +import 'home/family/city-swiper.css'; | ||
3 | +import CitySwiper from 'plugin/city-swiper'; | ||
4 | +import $ from 'yoho-jquery'; | ||
5 | +import Page from 'yoho-page'; | ||
6 | +import tip from 'plugin/tip'; | ||
7 | +import cityRender from 'home/chosen-city.hbs'; | ||
8 | +import yoho from 'yoho-app'; | ||
9 | + | ||
10 | +class UserInfo extends Page { | ||
11 | + constructor() { | ||
12 | + super(); | ||
13 | + | ||
14 | + this.selector = { | ||
15 | + $chosenCity: $('#chosen-city'), | ||
16 | + $citySwiper: $('.city-swiper'), | ||
17 | + $modifyInp: $('.inp.modify'), | ||
18 | + $nickName: $('.inp.nick-name'), | ||
19 | + $gender: $('.inp.gender'), | ||
20 | + $birthday: $('.inp.birthday'), | ||
21 | + $height: $('.inp.height'), | ||
22 | + $weight: $('.inp.weight'), | ||
23 | + $userAvatar: $('.user-avatar'), | ||
24 | + $province: $('#province'), | ||
25 | + $city: $('#city'), | ||
26 | + $cancelBtn: $('.swiper-header .cancel'), | ||
27 | + $okBtn: $('.swiper-header .ok'), | ||
28 | + $provinceText: $('.province-text'), | ||
29 | + $cityText: $('.city-text'), | ||
30 | + $userPic: $('.user-pic'), | ||
31 | + $noDate: $('.inp.modify[type!=date]'), | ||
32 | + }; | ||
33 | + | ||
34 | + this.view = { | ||
35 | + cityRender | ||
36 | + }; | ||
37 | + | ||
38 | + this.CityId = 0; | ||
39 | + this.province = this.selector.$provinceText.text(); | ||
40 | + this.city = this.selector.$cityText.text(); | ||
41 | + this.init(); | ||
42 | + } | ||
43 | + | ||
44 | + init() { | ||
45 | + this.bindEvents(); | ||
46 | + | ||
47 | + // city-swiper的回调函数 | ||
48 | + this.on('citySwiperCb', (event, data) => { // data是返回选中的slide | ||
49 | + let $data = $(data); | ||
50 | + let $parent = $data.parents('.swiper-wrapper'); | ||
51 | + | ||
52 | + if (($parent.attr('id') === 'province')) { // 当滑动省份列表时出发城市列表 | ||
53 | + this.CityId = $data.attr('id'); | ||
54 | + this.getCity(); | ||
55 | + } | ||
56 | + }); | ||
57 | + this.defaultPic(); | ||
58 | + this.getCity(); | ||
59 | + } | ||
60 | + | ||
61 | + bindEvents() { | ||
62 | + this.selector.$chosenCity.on('click', this.chosenCity.bind(this)); | ||
63 | + this.selector.$cancelBtn.on('click', this.cancelFun.bind(this)); | ||
64 | + this.selector.$okBtn.on('click', this.okFun.bind(this)); | ||
65 | + this.selector.$chosenCity.on('DOMNodeInserted', this.modifyInp.bind(this)); | ||
66 | + this.selector.$userPic.on('click', this.userPic.bind(this)); | ||
67 | + this.selector.$modifyInp.on('click', this.closeCitySwiper.bind(this)); | ||
68 | + if (yoho.isApp) { | ||
69 | + this.selector.$modifyInp.on('change', this.modifyInp.bind(this)); | ||
70 | + } else { | ||
71 | + this.selector.$noDate.on('change', this.modifyInp.bind(this)); | ||
72 | + this.selector.$birthday.on('blur', this.modifyInp.bind(this)); | ||
73 | + } | ||
74 | + } | ||
75 | + | ||
76 | + closeCitySwiper(e) { | ||
77 | + let $this = $(e.currentTarget); | ||
78 | + | ||
79 | + if ($this.attr('id') !== 'chosen-city') { | ||
80 | + this.selector.$citySwiper.hide(); | ||
81 | + } | ||
82 | + } | ||
83 | + | ||
84 | + userPic() { | ||
85 | + if (yoho.isApp) { | ||
86 | + yoho.ready(() => { | ||
87 | + yoho.invokeMethod('go.setAvatar', {}, (data) => { | ||
88 | + if (data) { | ||
89 | + let reg = /(\w*){mode}(.*){width}(.*){height}(.*)/g; | ||
90 | + | ||
91 | + data = data.replace(reg, '$12$2100$3100$4'); | ||
92 | + this.selector.$userAvatar.css('background-image', `url(${data})`); | ||
93 | + } | ||
94 | + }); | ||
95 | + }); | ||
96 | + } | ||
97 | + } | ||
98 | + | ||
99 | + cancelFun() { | ||
100 | + this.selector.$citySwiper.hide(); | ||
101 | + } | ||
102 | + | ||
103 | + okFun() { | ||
104 | + let $provinceActive = $('#province .swiper-slide-active'); | ||
105 | + let $cityActive = $('#city .swiper-slide-active'); | ||
106 | + let $chosenCityText = ''; | ||
107 | + | ||
108 | + this.province = $provinceActive.text(); | ||
109 | + this.city = $cityActive.text(); | ||
110 | + $chosenCityText = `<span class="province-text"> | ||
111 | + ${this.province}</span> <span class="city-text">${this.city}</span>`; | ||
112 | + this.selector.$chosenCity.find('.inp').html($chosenCityText); | ||
113 | + this.selector.$citySwiper.hide(); | ||
114 | + } | ||
115 | + | ||
116 | + defaultPic() { | ||
117 | + let myImage = new Image(), | ||
118 | + avatar; | ||
119 | + | ||
120 | + avatar = this.selector.$userAvatar.data('avatar'); | ||
121 | + myImage.src = avatar; | ||
122 | + myImage.onload = () => { | ||
123 | + this.selector.$userAvatar.css('background-image', 'url(' + avatar + ')'); | ||
124 | + }; | ||
125 | + } | ||
126 | + | ||
127 | + modifyInp() { | ||
128 | + this.ajax({ | ||
129 | + url: '/home/family/modify', | ||
130 | + data: { | ||
131 | + nickName: this.selector.$nickName.val(), | ||
132 | + gender: this.selector.$gender.val(), | ||
133 | + birthday: this.selector.$birthday.val(), | ||
134 | + height: this.selector.$height.val(), | ||
135 | + weight: this.selector.$weight.val(), | ||
136 | + province: this.province, | ||
137 | + city: this.city, | ||
138 | + }, | ||
139 | + }).then(result => { | ||
140 | + if (result && result.code === 200) { | ||
141 | + location.href = location.href; | ||
142 | + } else { | ||
143 | + tip.show(result.message); | ||
144 | + } | ||
145 | + }).catch(error => { | ||
146 | + tip.show(error); | ||
147 | + }); | ||
148 | + } | ||
149 | + | ||
150 | + chosenCity() { | ||
151 | + this.getCity(); | ||
152 | + this.selector.$citySwiper.show(); | ||
153 | + } | ||
154 | + | ||
155 | + getCity() { | ||
156 | + this.ajax({ | ||
157 | + url: '/home/family/userInfo/getCity', | ||
158 | + data: { | ||
159 | + id: this.CityId | ||
160 | + } | ||
161 | + }).then(result => { | ||
162 | + if (this.CityId === 0) { | ||
163 | + this.selector.$province.append(this.view.cityRender(result)); | ||
164 | + new CitySwiper({ | ||
165 | + lineNum: 5, // 每列行数 | ||
166 | + centeredSlides: true, // 剧中显示 | ||
167 | + hidePartingLine: false // 隐藏两条分割线 | ||
168 | + }); | ||
169 | + } else { | ||
170 | + this.selector.$city.empty(); | ||
171 | + this.selector.$city.append(this.view.cityRender(result)); | ||
172 | + } | ||
173 | + }).catch(error => { | ||
174 | + console.error(error); | ||
175 | + }); | ||
176 | + } | ||
177 | +} | ||
178 | + | ||
179 | +$(() => { | ||
180 | + new UserInfo(); | ||
181 | +}); |
public/js/home/family.page.js
0 → 100644
1 | +import 'home/family.page.css'; | ||
2 | +import $ from 'yoho-jquery'; | ||
3 | +import Page from 'yoho-page'; | ||
4 | +import tip from 'plugin/tip'; | ||
5 | +import yoho from 'yoho-app'; | ||
6 | +import integral from 'home/integral-paradise.hbs'; | ||
7 | +import vipDetailInfo from 'home/vip-detail.hbs'; | ||
8 | +import downLoadInfo from 'home/down-load-detail.hbs'; | ||
9 | + | ||
10 | +const Swiper = require('yoho-swiper2'); | ||
11 | +const echarts = require('echarts/lib/echarts'); | ||
12 | + | ||
13 | +require('echarts/lib/chart/pie'); | ||
14 | + | ||
15 | +class FamilyIndex extends Page { | ||
16 | + constructor() { | ||
17 | + super(); | ||
18 | + | ||
19 | + this.selector = { | ||
20 | + $diaC: $('.dia-c'), | ||
21 | + $userAvatar: $('.user-avatar'), | ||
22 | + $codeSet: $('.code-set'), | ||
23 | + $invition: $('.invition'), | ||
24 | + $invitonSet: $('.inviton-set'), | ||
25 | + $textarea: $('textarea'), | ||
26 | + integralCh: echarts.init(document.getElementById('charts')), | ||
27 | + chartWidth: $('.charts').width(), | ||
28 | + $integralContent: $('.integral-content'), | ||
29 | + $contentItem: $('.content-item'), | ||
30 | + $close: $('.close'), | ||
31 | + $userName: $('.user-name'), | ||
32 | + $trendWord: $('.trend-word'), | ||
33 | + $wordOuter: $('.word-outer'), | ||
34 | + $bannerCenterSwiper: $('.banner-center-swiper'), | ||
35 | + $back: $('.back'), | ||
36 | + $vipMore: $('more'), | ||
37 | + $trendCode: $('.trend-code'), | ||
38 | + $popover: $('.popover') | ||
39 | + }; | ||
40 | + | ||
41 | + this.view = { | ||
42 | + integral, | ||
43 | + vipDetailInfo, | ||
44 | + downLoadInfo | ||
45 | + }; | ||
46 | + | ||
47 | + this.vipInfo; | ||
48 | + | ||
49 | + this.init(); | ||
50 | + } | ||
51 | + | ||
52 | + init() { | ||
53 | + this.headIco(); | ||
54 | + this.integralCharts(); | ||
55 | + this.bindEvents(); | ||
56 | + this.viewVipInfo(); | ||
57 | + this.initTrend(); | ||
58 | + this.trendWordMarquee(); | ||
59 | + this.resources(); | ||
60 | + this.downLoadInfo(); | ||
61 | + } | ||
62 | + | ||
63 | + bindEvents() { | ||
64 | + this.selector.$codeSet.on('click', this.setTrendPop.bind(this)); | ||
65 | + this.selector.$textarea.on('blur', this.saveTrendWord.bind(this)); | ||
66 | + this.selector.integralCh.on('click', this.jump.bind(this)); | ||
67 | + this.selector.$contentItem.on('click', this.showInfo.bind(this)); | ||
68 | + this.selector.$diaC.on('click', this.selector.$close, this.hideVipInfo.bind(this)); | ||
69 | + this.selector.$back.on('click', this.goBack.bind(this)); | ||
70 | + this.selector.$popover.on('mousewheel touchmove', this.banSliding.bind(this)); | ||
71 | + } | ||
72 | + | ||
73 | + // 头像 | ||
74 | + headIco() { | ||
75 | + let myImage = new Image(), | ||
76 | + avatar; | ||
77 | + | ||
78 | + avatar = this.selector.$userAvatar.data('avatar'); | ||
79 | + myImage.src = avatar; | ||
80 | + myImage.onload = () => { | ||
81 | + this.selector.$userAvatar.css('background-image', 'url(' + avatar + ')'); | ||
82 | + }; | ||
83 | + } | ||
84 | + | ||
85 | + // 潮流口令滚动 | ||
86 | + trendWordMarquee() { | ||
87 | + let diff = $('.word-outer').scrollLeft() - $('.trend-word').eq(0).width(); | ||
88 | + | ||
89 | + $('.word-outer').scrollLeft($('.word-outer').scrollLeft() + 1); | ||
90 | + | ||
91 | + if (diff > 0) { | ||
92 | + $('.word-outer').scrollLeft(Math.abs(diff)); | ||
93 | + } | ||
94 | + } | ||
95 | + | ||
96 | + // 潮流口令初始化判断 | ||
97 | + initTrend() { | ||
98 | + if (this.selector.$trendWord.eq(0).width() > parseInt(this.selector.$wordOuter.css('max-width'), 10)) { | ||
99 | + | ||
100 | + this.selector.$trendWord.width(this.selector.$trendWord.width() + 40); | ||
101 | + | ||
102 | + this.selector.$wordOuter.append('<span class="trend-word">' + this.selector.$trendWord.html() + '</span>').css({ // eslint-disable-line | ||
103 | + width: 2 * this.selector.$trendWord.width() | ||
104 | + }); | ||
105 | + | ||
106 | + this.selector.$trendWord = $('.trend-word'); | ||
107 | + | ||
108 | + this.selector.$trendWord.addClass('rem-lin'); | ||
109 | + | ||
110 | + setInterval(this.trendWordMarquee, 40); | ||
111 | + } else { | ||
112 | + this.selector.$trendWord = $('.trend-word'); | ||
113 | + | ||
114 | + if (this.selector.$trendWord.length > 1) { | ||
115 | + this.selector.$trendWord.eq(1).remove(); | ||
116 | + } | ||
117 | + | ||
118 | + this.selector.$trendWord.removeClass('rem-lin'); | ||
119 | + } | ||
120 | + } | ||
121 | + | ||
122 | + // 积分乐园图表 | ||
123 | + integralCharts() { | ||
124 | + this.ajax({ | ||
125 | + type: 'GET', | ||
126 | + url: location.protocol + '//m.yohobuy.com/home/family/integralCharts' | ||
127 | + }).then(result => { | ||
128 | + if (result) { | ||
129 | + result.totalHref = location.protocol + '//m.yohobuy.com/home/family/coinDetail?openby:yohobuy={"action":"go.h5","params":{"url":"' + location.protocol + '//m.yohobuy.com/home/family/coinDetail"}}', // eslint-disable-line | ||
130 | + | ||
131 | + this.selector.$integralContent.append(this.view.integral(result)); | ||
132 | + | ||
133 | + this.selector.integralCh.setOption({ | ||
134 | + calculable: true, | ||
135 | + color: result.colorList, | ||
136 | + series: [ | ||
137 | + { | ||
138 | + type: 'pie', | ||
139 | + radius: [this.selector.chartWidth * 3 / 10, this.selector.chartWidth * 11 / 25], | ||
140 | + roseType: 'radius', | ||
141 | + center: ['50%', '50%'], | ||
142 | + label: { | ||
143 | + normal: false | ||
144 | + }, | ||
145 | + data: result.list | ||
146 | + } | ||
147 | + ] | ||
148 | + }); | ||
149 | + } | ||
150 | + }).catch(() => { | ||
151 | + tip.show('服务异常,请稍后重试'); | ||
152 | + }); | ||
153 | + } | ||
154 | + | ||
155 | + // 资源位初始化 | ||
156 | + resources() { | ||
157 | + if (this.selector.$bannerCenterSwiper.find('li').length > 0) { | ||
158 | + new Swiper('.banner-center-swiper', { | ||
159 | + pagination: '.swiper-pagination', | ||
160 | + lazyLoading: true, | ||
161 | + lazyLoadingInPrevNext: true, | ||
162 | + paginationClickable: true, | ||
163 | + autoplay: 3000 | ||
164 | + }); | ||
165 | + } | ||
166 | + } | ||
167 | + | ||
168 | + // 查看VIP信息 | ||
169 | + viewVipInfo() { | ||
170 | + this.ajax({ | ||
171 | + type: 'GET', | ||
172 | + url: location.protocol + '//m.yohobuy.com/home/family/vipDetailData' | ||
173 | + }).then(result => { | ||
174 | + this.vipInfo = result; | ||
175 | + }).catch(() => { | ||
176 | + tip.show('服务异常,请稍后重试'); | ||
177 | + }); | ||
178 | + } | ||
179 | + | ||
180 | + // 下载弹窗初始页面渲染 | ||
181 | + downLoadInfo() { | ||
182 | + let codeArr = []; | ||
183 | + | ||
184 | + $('.content-item').each(function() { | ||
185 | + codeArr.push({ | ||
186 | + name: $(this).data('name'), | ||
187 | + code: $(this).data('code') | ||
188 | + }); | ||
189 | + }); | ||
190 | + | ||
191 | + this.ajax({ | ||
192 | + type: 'GET', | ||
193 | + url: location.protocol + '//m.yohobuy.com/home/family/downLoadData', | ||
194 | + data: { | ||
195 | + codeArr: codeArr | ||
196 | + } | ||
197 | + }).then(result => { | ||
198 | + $('.yoho-family-page').append(this.view.downLoadInfo(result)); | ||
199 | + | ||
200 | + this.selector.$downLoadDetail = $('.down-load-detail'); | ||
201 | + this.selector.$downClose = $('.down-close'); | ||
202 | + this.selector.$downClose.on('click', this.downClose.bind(this)); | ||
203 | + this.selector.$popover = $('.popover'); | ||
204 | + this.selector.$popover.on('mousewheel touchmove', this.banSliding.bind(this)); | ||
205 | + }); | ||
206 | + } | ||
207 | + | ||
208 | + // 设置潮流口令 | ||
209 | + setTrendPop() { | ||
210 | + this.selector.$invition.hide(); | ||
211 | + this.selector.$invitonSet.show(); | ||
212 | + this.selector.$textarea.focus(); | ||
213 | + } | ||
214 | + | ||
215 | + // 提交口令 | ||
216 | + saveTrendWord() { | ||
217 | + let trendWord = this.selector.$textarea.val(); | ||
218 | + | ||
219 | + if (trendWord === '') { | ||
220 | + this.selector.$invition.show(); | ||
221 | + this.selector.$invitonSet.hide(); | ||
222 | + return; | ||
223 | + } | ||
224 | + | ||
225 | + this.ajax({ | ||
226 | + type: 'GET', | ||
227 | + url: location.protocol + '//m.yohobuy.com/home/family/set-trend-word', | ||
228 | + data: { | ||
229 | + trendWord: trendWord | ||
230 | + } | ||
231 | + }).then(result => { | ||
232 | + tip.show(result.message); | ||
233 | + | ||
234 | + if (result.code === 200) { | ||
235 | + this.selector.$invition.show(); | ||
236 | + this.selector.$invitonSet.hide(); | ||
237 | + if (this.selector.$invition.find('.trend-word') > 0) { | ||
238 | + this.selector.$invition.find('.trend-word').html(trendWord); | ||
239 | + } else { | ||
240 | + this.selector.$trendCode.html('# <span class="word-outer"><span class="trend-word">' + | ||
241 | + trendWord + '</span></span> #'); | ||
242 | + } | ||
243 | + this.selector.$trendWord.css({ | ||
244 | + width: 'auto' | ||
245 | + }); | ||
246 | + this.selector.$wordOuter.css({ | ||
247 | + width: 'auto' | ||
248 | + }); | ||
249 | + this.initTrend(); | ||
250 | + } else { | ||
251 | + this.selector.$textarea.focus(); | ||
252 | + } | ||
253 | + }).catch(() => { | ||
254 | + tip.show('服务异常,请稍后重试'); | ||
255 | + }); | ||
256 | + } | ||
257 | + | ||
258 | + // 积分图表点击跳转 | ||
259 | + jump(params) { | ||
260 | + yoho.goH5(`${location.protocol}//m.yohobuy.com/home/family/coinDetail?plateType=${params.data.plateType}`); | ||
261 | + } | ||
262 | + | ||
263 | + // 点击APP图标显示信息 | ||
264 | + showInfo(e) { | ||
265 | + let $this = $(e.currentTarget); | ||
266 | + let appType = $this.data('name').toLowerCase(); | ||
267 | + let isLogin = $this.data('login'); | ||
268 | + | ||
269 | + if (isLogin) { | ||
270 | + if (this.vipInfo[appType]) { | ||
271 | + this.selector.$diaC.append(this.view.vipDetailInfo(this.vipInfo[appType])); | ||
272 | + } else { | ||
273 | + this.viewVipInfo(); | ||
274 | + | ||
275 | + this.selector.$diaC.append(this.view.vipDetailInfo(this.vipInfo[appType])); | ||
276 | + } | ||
277 | + | ||
278 | + $('.vip-detail').addClass(appType); | ||
279 | + | ||
280 | + if (this.selector.$userAvatar.data('avatar')) { | ||
281 | + $('.base .pic').css('background-image', 'url(' + this.selector.$userAvatar.data('avatar') + ')'); | ||
282 | + } | ||
283 | + | ||
284 | + if (this.selector.$userName.text() !== '') { | ||
285 | + $('.intro .name span').text($('.user-name').text() + ','); | ||
286 | + } | ||
287 | + } else { | ||
288 | + this.selector.$downLoadDetail.removeClass('hide'); | ||
289 | + | ||
290 | + this.selector.$downLoadDetail.find('.detail-content .' + appType).removeClass('hide'); | ||
291 | + this.selector.$downLoadDetail.find('.detail-content .' + appType).siblings().addClass('hide'); | ||
292 | + } | ||
293 | + } | ||
294 | + | ||
295 | + // 点击关闭会员信息弹框 | ||
296 | + hideVipInfo() { | ||
297 | + $('.vip-detail').remove(); | ||
298 | + $('body,.main').css({ | ||
299 | + 'overflow-y': 'auto' | ||
300 | + }); | ||
301 | + } | ||
302 | + | ||
303 | + // 返回上一页 | ||
304 | + goBack() { | ||
305 | + if (yoho.isApp) { | ||
306 | + yoho.invokeMethod('go.back'); | ||
307 | + } | ||
308 | + } | ||
309 | + | ||
310 | + // 关闭下载弹窗 | ||
311 | + downClose() { | ||
312 | + this.selector.$downLoadDetail.addClass('hide'); | ||
313 | + $('body,.main').css({ | ||
314 | + 'overflow-y': 'auto' | ||
315 | + }); | ||
316 | + } | ||
317 | + | ||
318 | + // 弹窗出现禁止滑动 | ||
319 | + banSliding() { | ||
320 | + $('body,.main').css({ | ||
321 | + 'overflow-y': 'hidden' | ||
322 | + }); | ||
323 | + } | ||
324 | +} | ||
325 | + | ||
326 | +$(() => { | ||
327 | + new FamilyIndex(); | ||
328 | +}); |
@@ -53,54 +53,60 @@ lazyLoad(); | @@ -53,54 +53,60 @@ lazyLoad(); | ||
53 | 53 | ||
54 | headerNavHammer = new Hammer(document.getElementById('yoho-header')); | 54 | headerNavHammer = new Hammer(document.getElementById('yoho-header')); |
55 | 55 | ||
56 | -headerNavHammer.on('tap', function(e) { | 56 | +function submit() { |
57 | let suggestText = $('#suggest-textarea').val(), | 57 | let suggestText = $('#suggest-textarea').val(), |
58 | textReg = /\S+/; | 58 | textReg = /\S+/; |
59 | 59 | ||
60 | + if (!textReg.test(suggestText)) { | ||
61 | + diaLog.showDialog({ | ||
62 | + autoHide: true, | ||
63 | + dialogText: '意见不能为空' | ||
64 | + }); | ||
60 | 65 | ||
61 | - if ($(e.target).hasClass('nav-btn')) { | 66 | + return; |
67 | + } | ||
62 | 68 | ||
63 | - if (!textReg.test(suggestText)) { | 69 | + $.ajax({ |
70 | + method: 'post', | ||
71 | + url: '/home/savesuggest', | ||
72 | + data: { | ||
73 | + content: suggestText, | ||
74 | + image: imgStr | ||
75 | + } | ||
76 | + }).then(function(data) { | ||
77 | + if (data.code === 200) { | ||
64 | diaLog.showDialog({ | 78 | diaLog.showDialog({ |
65 | autoHide: true, | 79 | autoHide: true, |
66 | - dialogText: '意见不能为空' | 80 | + dialogText: '提交成功' |
67 | }); | 81 | }); |
68 | - | ||
69 | - return; | ||
70 | - } | ||
71 | - | ||
72 | - $.ajax({ | ||
73 | - method: 'post', | ||
74 | - url: '/home/savesuggest', | ||
75 | - data: { | ||
76 | - content: suggestText, | ||
77 | - image: imgStr | ||
78 | - } | ||
79 | - }).then(function(data) { | ||
80 | - if (data.code === 200) { | ||
81 | - diaLog.showDialog({ | ||
82 | - autoHide: true, | ||
83 | - dialogText: '提交成功' | ||
84 | - }); | ||
85 | - setTimeout(function() { | ||
86 | - location.pathname = 'home/suggest'; | ||
87 | - }, 2000); | ||
88 | - } else { | ||
89 | - diaLog.showDialog({ | ||
90 | - autoHide: true, | ||
91 | - dialogText: '提交失败~' | ||
92 | - }); | ||
93 | - } | ||
94 | - }).fail(function() { | ||
95 | - | 82 | + setTimeout(function() { |
83 | + location.pathname = 'home/suggest'; | ||
84 | + }, 2000); | ||
85 | + } else { | ||
96 | diaLog.showDialog({ | 86 | diaLog.showDialog({ |
97 | autoHide: true, | 87 | autoHide: true, |
98 | - dialogText: '网络错误~' | 88 | + dialogText: '提交失败~' |
99 | }); | 89 | }); |
90 | + } | ||
91 | + }).fail(function() { | ||
92 | + | ||
93 | + diaLog.showDialog({ | ||
94 | + autoHide: true, | ||
95 | + dialogText: '网络错误~' | ||
100 | }); | 96 | }); |
97 | + }); | ||
98 | +} | ||
99 | + | ||
100 | +headerNavHammer.on('tap', function(e) { | ||
101 | + if ($(e.target).hasClass('nav-btn')) { | ||
102 | + submit(); | ||
101 | } | 103 | } |
102 | }); | 104 | }); |
103 | 105 | ||
106 | +$('.submit').on('click', function() { | ||
107 | + submit(); | ||
108 | +}); | ||
109 | + | ||
104 | if (document.getElementById('img-form') !== null) { | 110 | if (document.getElementById('img-form') !== null) { |
105 | formHammer = new Hammer(document.getElementById('img-form')); | 111 | formHammer = new Hammer(document.getElementById('img-form')); |
106 | 112 |
public/js/plugin/city-swiper.js
0 → 100644
1 | +import Swiper from 'yoho-swiper'; | ||
2 | +import $ from 'yoho-jquery'; | ||
3 | +import Page from 'yoho-page'; | ||
4 | + | ||
5 | +class CitySwiper extends Page { | ||
6 | + constructor(data) { | ||
7 | + super(); | ||
8 | + this.selector = { | ||
9 | + $swiperC: $('.city-swiper'), | ||
10 | + $swiper: $('.city-swiper .swiper-list').find('.swiper-container'), | ||
11 | + $slide: $('.city-swiper .swiper-list').find('.swiper-slide'), | ||
12 | + $swiperLine: $('.city-swiper .swiper-line'), | ||
13 | + $swiperList: $('.city-swiper .swiper-list') | ||
14 | + }; | ||
15 | + this.provinceSwiper = ''; | ||
16 | + this.citySwiper = ''; | ||
17 | + this.init(data); | ||
18 | + } | ||
19 | + | ||
20 | + init(data) { | ||
21 | + let swiperParams = this.swiperParams(data); | ||
22 | + | ||
23 | + this.setStyle(data); | ||
24 | + this.provinceSwiper = new Swiper('.city-swiper #province-c', swiperParams); | ||
25 | + this.citySwiper = new Swiper('.city-swiper #city-c', swiperParams); | ||
26 | + } | ||
27 | + | ||
28 | + setStyle(data) { | ||
29 | + let lineHeight = this.selector.$swiperList.height() / data.lineNum; | ||
30 | + let lineTop = lineHeight / 2; | ||
31 | + | ||
32 | + if (data.hidePartingLine) { | ||
33 | + this.selector.$swiperLine.hide(); | ||
34 | + } | ||
35 | + this.selector.$swiperLine.css('height', `${lineHeight}px`); | ||
36 | + this.selector.$swiperLine.css('margin-top', `-${lineTop}px`); | ||
37 | + } | ||
38 | + | ||
39 | + swiperParams(data) { | ||
40 | + let $thisSwiper = ''; | ||
41 | + let newParams = { | ||
42 | + direction: 'vertical', | ||
43 | + slidesPerView: data.lineNum || 1, | ||
44 | + centeredSlides: data.centeredSlides, | ||
45 | + loop: data.true, | ||
46 | + observer: true, | ||
47 | + observeParents: true, | ||
48 | + slideToClickedSlide: true, | ||
49 | + onInit: (swiper) => { | ||
50 | + $thisSwiper = swiper.activeIndex; | ||
51 | + $thisSwiper = $(swiper.slides[`${$thisSwiper}`]); | ||
52 | + this.emit('citySwiperCb', $thisSwiper); | ||
53 | + }, | ||
54 | + onSlideChangeEnd: (swiper) => { | ||
55 | + if ($(swiper.container[0]).index() === 0) { | ||
56 | + this.citySwiper.slideTo(0, 1000, false); // 重选省份时,城市设置为第一个 | ||
57 | + } | ||
58 | + $thisSwiper = swiper.activeIndex; | ||
59 | + $thisSwiper = $(swiper.slides[`${$thisSwiper}`]); | ||
60 | + this.emit('citySwiperCb', $thisSwiper); | ||
61 | + } | ||
62 | + }; | ||
63 | + | ||
64 | + return newParams; | ||
65 | + } | ||
66 | +} | ||
67 | + | ||
68 | +module.exports = CitySwiper; |
@@ -37,6 +37,7 @@ yoho = { | @@ -37,6 +37,7 @@ yoho = { | ||
37 | /** | 37 | /** |
38 | * 判断是否是 APP | 38 | * 判断是否是 APP |
39 | */ | 39 | */ |
40 | + isNowApp: /yohonow/i.test(navigator.userAgent || ''), | ||
40 | isMarsApp: /YohoMars/i.test(navigator.userAgent || ''), | 41 | isMarsApp: /YohoMars/i.test(navigator.userAgent || ''), |
41 | isApp: /YohoMars/i.test(navigator.userAgent || '') || | 42 | isApp: /YohoMars/i.test(navigator.userAgent || '') || |
42 | /YohoBuy/i.test(navigator.userAgent || '') || | 43 | /YohoBuy/i.test(navigator.userAgent || '') || |
@@ -103,7 +103,7 @@ | @@ -103,7 +103,7 @@ | ||
103 | line-height: 46px; | 103 | line-height: 46px; |
104 | overflow: hidden; | 104 | overflow: hidden; |
105 | 105 | ||
106 | - .trend-code { | 106 | + .code { |
107 | display: inline-block; | 107 | display: inline-block; |
108 | vertical-align: top; | 108 | vertical-align: top; |
109 | } | 109 | } |
@@ -136,6 +136,18 @@ | @@ -136,6 +136,18 @@ | ||
136 | } | 136 | } |
137 | } | 137 | } |
138 | 138 | ||
139 | + .family-entry { | ||
140 | + width: 136px; | ||
141 | + height: 136px; | ||
142 | + position: absolute; | ||
143 | + bottom: 0; | ||
144 | + right: 0; | ||
145 | + display: block; | ||
146 | + background-size: 100%; | ||
147 | + background-repeat: no-repeat; | ||
148 | + background-image: resolve("home/index/family-entry.gif"); | ||
149 | + } | ||
150 | + | ||
139 | .login-btn { | 151 | .login-btn { |
140 | display: block; | 152 | display: block; |
141 | position: absolute; | 153 | position: absolute; |
@@ -176,6 +176,18 @@ | @@ -176,6 +176,18 @@ | ||
176 | outline: none; | 176 | outline: none; |
177 | resize: none; | 177 | resize: none; |
178 | } | 178 | } |
179 | + | ||
180 | + .submit { | ||
181 | + width: 350px; | ||
182 | + height: 70px; | ||
183 | + margin: 0 auto; | ||
184 | + background: #000; | ||
185 | + color: #fff; | ||
186 | + text-align: center; | ||
187 | + line-height: 70px; | ||
188 | + margin-top: 180px; | ||
189 | + border-radius: 10px; | ||
190 | + } | ||
179 | } | 191 | } |
180 | 192 | ||
181 | .img-form { | 193 | .img-form { |
public/scss/home/family-coin.page.css
0 → 100644
1 | +body, | ||
2 | +html { | ||
3 | + background-color: #f0f0f0; | ||
4 | +} | ||
5 | + | ||
6 | +.score-detail-c { | ||
7 | + .eps { | ||
8 | + white-space: nowrap; | ||
9 | + overflow: hidden; | ||
10 | + text-overflow: ellipsis; | ||
11 | + } | ||
12 | + | ||
13 | + .cover-bg { | ||
14 | + display: none; | ||
15 | + width: 100%; | ||
16 | + height: 100%; | ||
17 | + position: absolute; | ||
18 | + top: 0; | ||
19 | + left: 0; | ||
20 | + right: 0; | ||
21 | + bottom: 0; | ||
22 | + background-color: #000; | ||
23 | + opacity: 0.4; | ||
24 | + } | ||
25 | + | ||
26 | + &.active { | ||
27 | + .cover-bg { | ||
28 | + display: block; | ||
29 | + } | ||
30 | + } | ||
31 | + | ||
32 | + .tab { | ||
33 | + height: 86px; | ||
34 | + border-bottom: solid 1px #e0e0e0; | ||
35 | + padding: 18px 0; | ||
36 | + background-color: #fff; | ||
37 | + position: relative; | ||
38 | + z-index: 1; | ||
39 | + | ||
40 | + .tab-item { | ||
41 | + width: 250px; | ||
42 | + height: 50px; | ||
43 | + line-height: 50px; | ||
44 | + float: left; | ||
45 | + text-align: center; | ||
46 | + font-size: 30px; | ||
47 | + color: #1a1a1a; | ||
48 | + border-right: solid 1px #e0e0e0; | ||
49 | + | ||
50 | + .down { | ||
51 | + display: inline-block; | ||
52 | + } | ||
53 | + | ||
54 | + .up { | ||
55 | + display: none; | ||
56 | + } | ||
57 | + | ||
58 | + .iconfont { | ||
59 | + font-size: 12px; | ||
60 | + } | ||
61 | + | ||
62 | + &:last-child { | ||
63 | + border-right: 0; | ||
64 | + } | ||
65 | + | ||
66 | + .list { | ||
67 | + display: none; | ||
68 | + width: 750px; | ||
69 | + text-align: left; | ||
70 | + position: absolute; | ||
71 | + padding: 0 30px; | ||
72 | + background-color: #fff; | ||
73 | + top: 86px; | ||
74 | + left: 0; | ||
75 | + | ||
76 | + li { | ||
77 | + line-height: 90px; | ||
78 | + border-bottom: solid 1px #e0e0e0; | ||
79 | + color: #b0b0b0; | ||
80 | + position: relative; | ||
81 | + } | ||
82 | + | ||
83 | + li.chosen { | ||
84 | + color: #000; | ||
85 | + } | ||
86 | + | ||
87 | + .tick { | ||
88 | + width: 30px; | ||
89 | + height: 22px; | ||
90 | + background: url("/home/family/chosen.png"); | ||
91 | + position: absolute; | ||
92 | + top: 34px; | ||
93 | + right: 30px; | ||
94 | + display: none; | ||
95 | + } | ||
96 | + | ||
97 | + li:last-child { | ||
98 | + border-bottom: 0; | ||
99 | + } | ||
100 | + } | ||
101 | + | ||
102 | + li.chosen { | ||
103 | + .tick { | ||
104 | + display: block; | ||
105 | + } | ||
106 | + } | ||
107 | + | ||
108 | + &.active { | ||
109 | + .list { | ||
110 | + display: block; | ||
111 | + } | ||
112 | + | ||
113 | + .down { | ||
114 | + display: none; | ||
115 | + } | ||
116 | + | ||
117 | + .up { | ||
118 | + display: inline-block; | ||
119 | + } | ||
120 | + } | ||
121 | + } | ||
122 | + } | ||
123 | + | ||
124 | + .result { | ||
125 | + padding: 0 34px; | ||
126 | + background-color: #fff; | ||
127 | + | ||
128 | + .result-item { | ||
129 | + height: 125px; | ||
130 | + border-bottom: solid 1px #e0e0e0; | ||
131 | + padding: 20px 0 10px; | ||
132 | + | ||
133 | + .top { | ||
134 | + font-size: 28px; | ||
135 | + float: left; | ||
136 | + line-height: 45px; | ||
137 | + width: 100%; | ||
138 | + | ||
139 | + .pic { | ||
140 | + width: 40px; | ||
141 | + height: 40px; | ||
142 | + border-radius: 5px; | ||
143 | + overflow: hidden; | ||
144 | + float: left; | ||
145 | + margin-right: 10px; | ||
146 | + background-size: 100% 100%; | ||
147 | + } | ||
148 | + | ||
149 | + .pic.coffee { | ||
150 | + background-image: resolve("home/family/ico-coffee.png"); | ||
151 | + } | ||
152 | + | ||
153 | + .pic.green { | ||
154 | + background-image: resolve("home/family/ico-green.png"); | ||
155 | + } | ||
156 | + | ||
157 | + .pic.little { | ||
158 | + background-image: resolve("home/family/ico-little.png"); | ||
159 | + } | ||
160 | + | ||
161 | + .pic.mars { | ||
162 | + background-image: resolve("home/family/ico-mars.png"); | ||
163 | + } | ||
164 | + | ||
165 | + .pic.yohobuy { | ||
166 | + background-image: resolve("home/family/ico-yohobuy.png"); | ||
167 | + } | ||
168 | + | ||
169 | + .pic.store { | ||
170 | + background-image: resolve("home/family/ico-yohobuy.png"); | ||
171 | + } | ||
172 | + | ||
173 | + .pic.yohonow { | ||
174 | + background-image: resolve("home/family/ico-yohonow.png"); | ||
175 | + } | ||
176 | + | ||
177 | + .title { | ||
178 | + float: left; | ||
179 | + width: 500px; | ||
180 | + } | ||
181 | + | ||
182 | + .num { | ||
183 | + float: right; | ||
184 | + color: #b0b0b0; | ||
185 | + } | ||
186 | + | ||
187 | + .num.minus { | ||
188 | + color: #43b98a; | ||
189 | + } | ||
190 | + } | ||
191 | + | ||
192 | + .bottom { | ||
193 | + width: 100%; | ||
194 | + line-height: 50px; | ||
195 | + float: left; | ||
196 | + color: #b0b0b0; | ||
197 | + font-size: 24px; | ||
198 | + } | ||
199 | + | ||
200 | + &:last-child { | ||
201 | + border-bottom: 0; | ||
202 | + } | ||
203 | + } | ||
204 | + } | ||
205 | +} |
public/scss/home/family-coinMall.page.css
0 → 100644
1 | +body, | ||
2 | +html { | ||
3 | + background-color: #f0f0f0; | ||
4 | +} | ||
5 | + | ||
6 | +.coin-mall-c { | ||
7 | + img { | ||
8 | + width: 100%; | ||
9 | + } | ||
10 | + | ||
11 | + .eps { | ||
12 | + white-space: nowrap; | ||
13 | + overflow: hidden; | ||
14 | + text-overflow: ellipsis; | ||
15 | + } | ||
16 | + | ||
17 | + .coin-pic { | ||
18 | + width: 60px; | ||
19 | + height: 60px; | ||
20 | + display: inline-block; | ||
21 | + margin-right: 20px; | ||
22 | + background-size: 100% 100%; | ||
23 | + } | ||
24 | + | ||
25 | + .coin-pic.yohobuy { | ||
26 | + display: none; | ||
27 | + } | ||
28 | + | ||
29 | + .coin-pic.yohonow { | ||
30 | + background-image: resolve("home/family/yoho.png") !important; | ||
31 | + } | ||
32 | + | ||
33 | + .coin-pic.mars { | ||
34 | + background-image: resolve("home/family/mars-s.png") !important; | ||
35 | + } | ||
36 | + | ||
37 | + .coin-pic-s { | ||
38 | + width: 34px; | ||
39 | + height: 34px; | ||
40 | + background: resolve("home/family/yoho-s.png"); | ||
41 | + display: inline-block; | ||
42 | + margin-right: 5px; | ||
43 | + background-size: 100% 100%; | ||
44 | + } | ||
45 | + | ||
46 | + .tab-fixed { | ||
47 | + width: 750px; | ||
48 | + height: 100px; | ||
49 | + position: relative; | ||
50 | + clear: both; | ||
51 | + } | ||
52 | + | ||
53 | + .tab { | ||
54 | + background-color: #fff; | ||
55 | + float: left; | ||
56 | + | ||
57 | + .tab-item { | ||
58 | + width: 375px; | ||
59 | + float: left; | ||
60 | + line-height: 100px; | ||
61 | + font-size: 30px; | ||
62 | + color: #b0b0b0; | ||
63 | + text-align: center; | ||
64 | + } | ||
65 | + | ||
66 | + .tab-item.active { | ||
67 | + color: #000; | ||
68 | + } | ||
69 | + | ||
70 | + &.fixed { | ||
71 | + position: fixed; | ||
72 | + top: 0; | ||
73 | + left: 0; | ||
74 | + z-index: 1; | ||
75 | + } | ||
76 | + } | ||
77 | + | ||
78 | + .coin { | ||
79 | + background-color: #fff; | ||
80 | + font-size: 50px; | ||
81 | + text-align: center; | ||
82 | + color: #000; | ||
83 | + line-height: 160px; | ||
84 | + height: 160px; | ||
85 | + clear: both; | ||
86 | + display: flex; | ||
87 | + justify-content: center; | ||
88 | + align-items: center; | ||
89 | + } | ||
90 | + | ||
91 | + .coin.now { | ||
92 | + color: #fece02; | ||
93 | + } | ||
94 | + | ||
95 | + .btn-c { | ||
96 | + background-color: #fff; | ||
97 | + padding: 0 44px 60px; | ||
98 | + float: left; | ||
99 | + margin-bottom: 20px; | ||
100 | + | ||
101 | + a { | ||
102 | + display: block; | ||
103 | + width: 270px; | ||
104 | + height: 58px; | ||
105 | + background-color: #1a1a1a; | ||
106 | + color: #fff; | ||
107 | + line-height: 58px; | ||
108 | + text-align: center; | ||
109 | + font-size: 26px; | ||
110 | + float: left; | ||
111 | + margin: 0 30px; | ||
112 | + } | ||
113 | + } | ||
114 | + | ||
115 | + .act-list { | ||
116 | + clear: both; | ||
117 | + | ||
118 | + .act-item { | ||
119 | + margin-bottom: 20px; | ||
120 | + | ||
121 | + .pic { | ||
122 | + position: relative; | ||
123 | + | ||
124 | + .bg { | ||
125 | + width: 270px; | ||
126 | + height: 50px; | ||
127 | + line-height: 50px; | ||
128 | + background-color: #000; | ||
129 | + position: absolute; | ||
130 | + top: 0; | ||
131 | + right: 0; | ||
132 | + opacity: 0.5; | ||
133 | + display: none; | ||
134 | + } | ||
135 | + | ||
136 | + .title { | ||
137 | + font-size: 26px; | ||
138 | + width: 270px; | ||
139 | + height: 50px; | ||
140 | + line-height: 50px; | ||
141 | + color: #fff; | ||
142 | + position: absolute; | ||
143 | + top: 0; | ||
144 | + right: 0; | ||
145 | + text-align: center; | ||
146 | + display: none; | ||
147 | + } | ||
148 | + | ||
149 | + .level { | ||
150 | + width: 160px; | ||
151 | + height: 46px; | ||
152 | + line-height: 46px; | ||
153 | + text-align: center; | ||
154 | + background-color: #000; | ||
155 | + color: #fff; | ||
156 | + font-size: 26px; | ||
157 | + position: absolute; | ||
158 | + top: 0; | ||
159 | + right: 0; | ||
160 | + display: none; | ||
161 | + } | ||
162 | + } | ||
163 | + | ||
164 | + .info { | ||
165 | + padding: 20px 30px; | ||
166 | + height: 170px; | ||
167 | + background-color: #fff; | ||
168 | + | ||
169 | + .left { | ||
170 | + width: 560px; | ||
171 | + float: left; | ||
172 | + } | ||
173 | + | ||
174 | + .name { | ||
175 | + font-size: 30px; | ||
176 | + line-height: 50px; | ||
177 | + } | ||
178 | + | ||
179 | + .num { | ||
180 | + font-size: 30px; | ||
181 | + line-height: 50px; | ||
182 | + color: #fece02; | ||
183 | + display: flex; | ||
184 | + align-items: center; | ||
185 | + } | ||
186 | + | ||
187 | + .old-price { | ||
188 | + color: #b0b0b0; | ||
189 | + font-size: 24px; | ||
190 | + text-decoration: line-through; | ||
191 | + margin-left: 8px; | ||
192 | + display: none; | ||
193 | + } | ||
194 | + | ||
195 | + .discount { | ||
196 | + font-size: 22px; | ||
197 | + color: #89b374; | ||
198 | + border: solid 1px #89b374; | ||
199 | + line-height: 35px; | ||
200 | + padding: 0 10px; | ||
201 | + margin-left: 10px; | ||
202 | + display: none; | ||
203 | + } | ||
204 | + | ||
205 | + .remain { | ||
206 | + color: #b0b0b0; | ||
207 | + font-size: 20px; | ||
208 | + line-height: 30px; | ||
209 | + } | ||
210 | + | ||
211 | + .right { | ||
212 | + width: 130px; | ||
213 | + float: right; | ||
214 | + } | ||
215 | + | ||
216 | + .go-btn { | ||
217 | + width: 130px; | ||
218 | + height: 58px; | ||
219 | + line-height: 58px; | ||
220 | + text-align: center; | ||
221 | + color: #fff; | ||
222 | + font-size: 28px; | ||
223 | + background-color: #000; | ||
224 | + display: block; | ||
225 | + margin-top: 25px; | ||
226 | + } | ||
227 | + } | ||
228 | + } | ||
229 | + } | ||
230 | +} | ||
231 | + | ||
232 | +#mars { | ||
233 | + .go-btn.yohonow { | ||
234 | + display: none; | ||
235 | + } | ||
236 | + | ||
237 | + .coin-pic-s { | ||
238 | + background-image: resolve("home/family/mars-s.png") !important; | ||
239 | + } | ||
240 | + | ||
241 | + .act-item { | ||
242 | + .pic { | ||
243 | + .level { | ||
244 | + display: block !important; | ||
245 | + border-radius: 23px 0 0 23px; | ||
246 | + } | ||
247 | + } | ||
248 | + | ||
249 | + .info { | ||
250 | + .num { | ||
251 | + color: #000 !important; | ||
252 | + } | ||
253 | + | ||
254 | + .old-price { | ||
255 | + display: block !important; | ||
256 | + } | ||
257 | + | ||
258 | + .discount { | ||
259 | + display: block !important; | ||
260 | + } | ||
261 | + } | ||
262 | + } | ||
263 | +} | ||
264 | + | ||
265 | +#yohonow { | ||
266 | + .go-btn.mars { | ||
267 | + display: none; | ||
268 | + } | ||
269 | + | ||
270 | + .act-item { | ||
271 | + .pic { | ||
272 | + .bg { | ||
273 | + display: block !important; | ||
274 | + } | ||
275 | + | ||
276 | + .title { | ||
277 | + display: block !important; | ||
278 | + } | ||
279 | + } | ||
280 | + } | ||
281 | +} | ||
282 | + | ||
283 | +.is-now-app { | ||
284 | + #mars-tab { | ||
285 | + .go-btn { | ||
286 | + background-color: #ccc; | ||
287 | + color: #fff; | ||
288 | + } | ||
289 | + } | ||
290 | +} | ||
291 | + | ||
292 | +.is-mars-app { | ||
293 | + #yohonow-tab { | ||
294 | + .go-btn { | ||
295 | + background-color: #ccc; | ||
296 | + color: #fff; | ||
297 | + } | ||
298 | + } | ||
299 | +} |
public/scss/home/family-userInfo.page.css
0 → 100644
1 | +html, | ||
2 | +body { | ||
3 | + background-color: #f0f0f0; | ||
4 | +} | ||
5 | + | ||
6 | +input, | ||
7 | +select { | ||
8 | + border: 0; | ||
9 | + background: 0; | ||
10 | + appearance: none; | ||
11 | + -moz-appearance: none; | ||
12 | + -webkit-appearance: none; | ||
13 | +} | ||
14 | + | ||
15 | +input::-webkit-clear-button { | ||
16 | + width: 0; | ||
17 | +} | ||
18 | + | ||
19 | +input::-webkit-calendar-picker-indicator { | ||
20 | + width: 0; | ||
21 | +} | ||
22 | + | ||
23 | +.family-user-info { | ||
24 | + .info-list { | ||
25 | + padding-left: 30px; | ||
26 | + background-color: #fff; | ||
27 | + margin-bottom: 20px; | ||
28 | + | ||
29 | + .list-item { | ||
30 | + display: block; | ||
31 | + height: 90px; | ||
32 | + line-height: 90px; | ||
33 | + padding-right: 30px; | ||
34 | + border-bottom: solid 1px #e0e0e0; | ||
35 | + | ||
36 | + .title { | ||
37 | + width: 220px; | ||
38 | + float: left; | ||
39 | + font-size: 30px; | ||
40 | + } | ||
41 | + | ||
42 | + .main { | ||
43 | + width: 450px; | ||
44 | + float: left; | ||
45 | + min-height: 90px; | ||
46 | + padding: 10px 0; | ||
47 | + padding-right: 20px; | ||
48 | + position: relative; | ||
49 | + | ||
50 | + .ewm { | ||
51 | + width: 43px; | ||
52 | + height: 43px; | ||
53 | + background-image: resolve("home/family/person-ewm.png"); | ||
54 | + float: right; | ||
55 | + margin-top: 12px; | ||
56 | + background-size: 100% 100%; | ||
57 | + } | ||
58 | + } | ||
59 | + | ||
60 | + .arr { | ||
61 | + width: 20px; | ||
62 | + float: left; | ||
63 | + color: #b0b0b0; | ||
64 | + } | ||
65 | + | ||
66 | + select.inp { | ||
67 | + width: auto; | ||
68 | + direction: rtl; | ||
69 | + } | ||
70 | + | ||
71 | + .inp { | ||
72 | + width: 430px; | ||
73 | + height: 70px; | ||
74 | + line-height: 70px; | ||
75 | + font-size: 30px; | ||
76 | + color: #b0b0b0; | ||
77 | + text-align: right; | ||
78 | + float: right; | ||
79 | + padding: 0; | ||
80 | + } | ||
81 | + | ||
82 | + .inp-2 { | ||
83 | + float: right; | ||
84 | + width: 400px; | ||
85 | + padding-right: 3%; | ||
86 | + } | ||
87 | + | ||
88 | + label { | ||
89 | + width: 30px; | ||
90 | + float: right; | ||
91 | + line-height: 70px; | ||
92 | + font-size: 30px; | ||
93 | + color: #b0b0b0; | ||
94 | + } | ||
95 | + | ||
96 | + .date-c { | ||
97 | + position: absolute; | ||
98 | + top: 10px; | ||
99 | + right: -20px; | ||
100 | + width: 300px; | ||
101 | + white-space: nowrap; | ||
102 | + overflow: hidden; | ||
103 | + direction: rtl; | ||
104 | + } | ||
105 | + | ||
106 | + .select-c { | ||
107 | + position: absolute; | ||
108 | + top: 10px; | ||
109 | + right: 20px; | ||
110 | + width: 70px; | ||
111 | + white-space: nowrap; | ||
112 | + overflow: hidden; | ||
113 | + direction: rtl; | ||
114 | + } | ||
115 | + | ||
116 | + .pic { | ||
117 | + float: right; | ||
118 | + width: 100px; | ||
119 | + height: 100px; | ||
120 | + border-radius: 50%; | ||
121 | + overflow: hidden; | ||
122 | + background-size: contain; | ||
123 | + background-position: center center; | ||
124 | + background-image: resolve("home/index/user-avatar.png"); | ||
125 | + } | ||
126 | + | ||
127 | + &.user-pic { | ||
128 | + height: 140px; | ||
129 | + line-height: 140px; | ||
130 | + | ||
131 | + .main { | ||
132 | + padding: 20px 0; | ||
133 | + padding-right: 20px; | ||
134 | + } | ||
135 | + } | ||
136 | + } | ||
137 | + | ||
138 | + .list-item:last-child { | ||
139 | + border-bottom: 0; | ||
140 | + } | ||
141 | + } | ||
142 | + | ||
143 | + .foot-tip { | ||
144 | + background-color: #f0f0f0 !important; | ||
145 | + margin-top: 80px; | ||
146 | + | ||
147 | + .pic { | ||
148 | + background-image: resolve("home/family/foot.png"); | ||
149 | + width: 140px; | ||
150 | + height: 80px; | ||
151 | + background-size: 100% 100%; | ||
152 | + margin: 0 auto 15px; | ||
153 | + } | ||
154 | + | ||
155 | + width: 750px; | ||
156 | + padding: 30px; | ||
157 | + font-size: 24px; | ||
158 | + color: #b0b0b0; | ||
159 | + line-height: 38px; | ||
160 | + } | ||
161 | +} |
public/scss/home/family.page.css
0 → 100644
1 | +@import "layout/swiper"; | ||
2 | +@import "family/down-load"; | ||
3 | + | ||
4 | +.yoho-family-page { | ||
5 | + background-color: #f0f0f0; | ||
6 | + margin-bottom: 40px; | ||
7 | + | ||
8 | + .family-heade { | ||
9 | + background: linear-gradient(#46ba8e, #67c7c0); | ||
10 | + padding-bottom: 50px; | ||
11 | + | ||
12 | + .header-top { | ||
13 | + height: 126px; | ||
14 | + line-height: 96px; | ||
15 | + color: #fff; | ||
16 | + padding: 34px 30px 0; | ||
17 | + | ||
18 | + .back { | ||
19 | + width: 40px; | ||
20 | + height: 40px; | ||
21 | + background-image: resolve("home/family/back.png"); | ||
22 | + background-size: 50% 100%; | ||
23 | + background-repeat: no-repeat; | ||
24 | + display: block; | ||
25 | + float: left; | ||
26 | + margin-top: 10px; | ||
27 | + } | ||
28 | + | ||
29 | + .headings { | ||
30 | + display: inline-block; | ||
31 | + height: 50px; | ||
32 | + width: 87px; | ||
33 | + background-image: resolve("home/family/yoho-family.png"); | ||
34 | + background-size: 100% 100%; | ||
35 | + background-repeat: no-repeat; | ||
36 | + margin-left: 280px; | ||
37 | + } | ||
38 | + } | ||
39 | + | ||
40 | + .person-detail { | ||
41 | + padding-left: 40px; | ||
42 | + color: #fff; | ||
43 | + vertical-align: bottom; | ||
44 | + height: 160px; | ||
45 | + | ||
46 | + .user-avatar { | ||
47 | + float: left; | ||
48 | + position: relative; | ||
49 | + width: 160px; | ||
50 | + height: 160px; | ||
51 | + border-radius: 50%; | ||
52 | + background-image: resolve("home/index/user-avatar.png"); | ||
53 | + background-size: 100%; | ||
54 | + overflow: hidden; | ||
55 | + margin-right: 30px; | ||
56 | + } | ||
57 | + | ||
58 | + .basic-info { | ||
59 | + line-height: 55px; | ||
60 | + } | ||
61 | + | ||
62 | + .user-name { | ||
63 | + padding-right: 14px; | ||
64 | + font-size: 48px; | ||
65 | + height: 55px; | ||
66 | + font-weight: bold; | ||
67 | + line-height: 55px; | ||
68 | + } | ||
69 | + | ||
70 | + .gender { | ||
71 | + background-size: 100% 100%; | ||
72 | + display: inline-block; | ||
73 | + width: 29px; | ||
74 | + height: 38px; | ||
75 | + } | ||
76 | + | ||
77 | + .boy { | ||
78 | + background-image: resolve("home/family/boy.png"); | ||
79 | + } | ||
80 | + | ||
81 | + .girl { | ||
82 | + background-image: resolve("home/family/girl.png"); | ||
83 | + } | ||
84 | + | ||
85 | + .info { | ||
86 | + font-size: 24px; | ||
87 | + margin-left: 160px; | ||
88 | + text-align: left; | ||
89 | + } | ||
90 | + | ||
91 | + .birthday { | ||
92 | + margin-left: 15px; | ||
93 | + } | ||
94 | + | ||
95 | + .invition { | ||
96 | + margin-top: 15px; | ||
97 | + font-size: 30px; | ||
98 | + } | ||
99 | + | ||
100 | + .inviton-set { | ||
101 | + width: 495px; | ||
102 | + height: 48px; | ||
103 | + margin-top: 15px; | ||
104 | + background-image: resolve("home/family/write-bg.png"); | ||
105 | + background-size: 100%; | ||
106 | + background-repeat: no-repeat; | ||
107 | + margin-left: 190px; | ||
108 | + } | ||
109 | + | ||
110 | + textarea { | ||
111 | + width: 460px; | ||
112 | + height: 40px; | ||
113 | + border: none; | ||
114 | + resize: none; | ||
115 | + margin-left: 30px; | ||
116 | + line-height: 40px; | ||
117 | + color: #807e7e; | ||
118 | + font-size: 18px; | ||
119 | + } | ||
120 | + | ||
121 | + .trend-code { | ||
122 | + display: inline-block; | ||
123 | + vertical-align: top; | ||
124 | + line-height: 40px; | ||
125 | + | ||
126 | + .word-outer { | ||
127 | + display: inline-block; | ||
128 | + overflow: hidden; | ||
129 | + vertical-align: top; | ||
130 | + height: 40px; | ||
131 | + max-width: 156px; | ||
132 | + white-space: nowrap; | ||
133 | + } | ||
134 | + | ||
135 | + .trend-word { | ||
136 | + display: inline-block; | ||
137 | + overflow: hidden; | ||
138 | + vertical-align: top; | ||
139 | + height: 40px; | ||
140 | + position: relative; | ||
141 | + white-space: nowrap; | ||
142 | + } | ||
143 | + | ||
144 | + .rem-lin { | ||
145 | + margin-right: -8px; | ||
146 | + } | ||
147 | + } | ||
148 | + | ||
149 | + .code-set { | ||
150 | + background-image: resolve("home/index/code-set.png"); | ||
151 | + background-repeat: no-repeat; | ||
152 | + background-size: 100% 93%; | ||
153 | + display: inline-block; | ||
154 | + width: 40px; | ||
155 | + height: 44px; | ||
156 | + margin-left: 5px; | ||
157 | + } | ||
158 | + | ||
159 | + .code-tip { | ||
160 | + background-image: resolve("home/family/tag.png"); | ||
161 | + background-repeat: no-repeat; | ||
162 | + background-size: 100%; | ||
163 | + width: 125px; | ||
164 | + height: 36px; | ||
165 | + display: inline-block; | ||
166 | + margin-left: 13px; | ||
167 | + } | ||
168 | + } | ||
169 | + } | ||
170 | + | ||
171 | + .title { | ||
172 | + font-size: 34px; | ||
173 | + line-height: 100px; | ||
174 | + height: 100px; | ||
175 | + display: inline-block; | ||
176 | + color: #1a1a1a; | ||
177 | + padding-left: 30px; | ||
178 | + width: 100%; | ||
179 | + background-color: #fff; | ||
180 | + } | ||
181 | + | ||
182 | + .vip-grade { | ||
183 | + background-color: #fff; | ||
184 | + | ||
185 | + .grade-content { | ||
186 | + width: 100%; | ||
187 | + overflow: hidden; | ||
188 | + } | ||
189 | + | ||
190 | + .content-item { | ||
191 | + width: 250px; | ||
192 | + margin-bottom: 50px; | ||
193 | + float: left; | ||
194 | + text-align: center; | ||
195 | + height: 240px; | ||
196 | + | ||
197 | + .item-tag { | ||
198 | + width: 140px; | ||
199 | + height: 140px; | ||
200 | + margin-bottom: 12px; | ||
201 | + border-radius: 20px; | ||
202 | + overflow: hidden; | ||
203 | + } | ||
204 | + | ||
205 | + .name { | ||
206 | + font-size: 28px; | ||
207 | + color: #43b938; | ||
208 | + display: block; | ||
209 | + line-height: 46px; | ||
210 | + } | ||
211 | + | ||
212 | + .level { | ||
213 | + font-size: 24px; | ||
214 | + color: #b0b0b0; | ||
215 | + display: block; | ||
216 | + } | ||
217 | + } | ||
218 | + } | ||
219 | + | ||
220 | + .integral { | ||
221 | + margin: 30px 0; | ||
222 | + | ||
223 | + .integral-content { | ||
224 | + background-color: #fff; | ||
225 | + padding-left: 30px; | ||
226 | + padding-bottom: 40px; | ||
227 | + overflow: hidden; | ||
228 | + position: relative; | ||
229 | + | ||
230 | + .charts { | ||
231 | + float: left; | ||
232 | + } | ||
233 | + } | ||
234 | + | ||
235 | + .integral-total { | ||
236 | + width: 180px; | ||
237 | + position: relative; | ||
238 | + top: 110px; | ||
239 | + left: -264px; | ||
240 | + text-align: center; | ||
241 | + overflow: hidden; | ||
242 | + border-radius: 39px; | ||
243 | + display: block; | ||
244 | + | ||
245 | + .total { | ||
246 | + font-size: 55px; | ||
247 | + color: #43b989; | ||
248 | + } | ||
249 | + | ||
250 | + .name { | ||
251 | + font-size: 24px; | ||
252 | + display: inline-block; | ||
253 | + width: 100%; | ||
254 | + } | ||
255 | + } | ||
256 | + | ||
257 | + .mark { | ||
258 | + width: 350px; | ||
259 | + position: absolute; | ||
260 | + right: 30px; | ||
261 | + font-size: 24px; | ||
262 | + top: 20px; | ||
263 | + } | ||
264 | + | ||
265 | + .mark-item { | ||
266 | + color: #000; | ||
267 | + display: inline-block; | ||
268 | + line-height: 40px; | ||
269 | + width: 100%; | ||
270 | + | ||
271 | + .item-name { | ||
272 | + margin-right: 14px; | ||
273 | + text-align: right; | ||
274 | + width: 120px; | ||
275 | + display: inline-block; | ||
276 | + } | ||
277 | + | ||
278 | + .item-color { | ||
279 | + display: inline-block; | ||
280 | + width: 20px; | ||
281 | + height: 20px; | ||
282 | + border-radius: 10px; | ||
283 | + margin-right: 14px; | ||
284 | + } | ||
285 | + | ||
286 | + .item-percent { | ||
287 | + float: right; | ||
288 | + color: #b0b0b0; | ||
289 | + width: 50px; | ||
290 | + } | ||
291 | + } | ||
292 | + | ||
293 | + .instruction { | ||
294 | + color: #b0b0b0; | ||
295 | + display: inline-block; | ||
296 | + width: 100%; | ||
297 | + line-height: 32px; | ||
298 | + margin-top: 10px; | ||
299 | + | ||
300 | + span { | ||
301 | + width: 84%; | ||
302 | + float: right; | ||
303 | + } | ||
304 | + } | ||
305 | + } | ||
306 | + | ||
307 | + .resource-content { | ||
308 | + overflow: hidden; | ||
309 | + | ||
310 | + .resource-own { | ||
311 | + margin-bottom: 20px; | ||
312 | + } | ||
313 | + } | ||
314 | + | ||
315 | + .vip-detail { | ||
316 | + position: fixed; | ||
317 | + top: 0; | ||
318 | + width: 100%; | ||
319 | + height: 100%; | ||
320 | + z-index: 5; | ||
321 | + | ||
322 | + .close { | ||
323 | + height: 50px; | ||
324 | + width: 50px; | ||
325 | + background-image: resolve("home/family/close.png"); | ||
326 | + background-size: 100%; | ||
327 | + background-repeat: no-repeat; | ||
328 | + position: relative; | ||
329 | + top: 150px; | ||
330 | + right: -668px; | ||
331 | + z-index: 6; | ||
332 | + } | ||
333 | + | ||
334 | + .back { | ||
335 | + width: 100%; | ||
336 | + height: 100%; | ||
337 | + position: fixed; | ||
338 | + left: 0; | ||
339 | + right: 0; | ||
340 | + top: 0; | ||
341 | + bottom: 0; | ||
342 | + background: #000; | ||
343 | + opacity: 0.5; | ||
344 | + } | ||
345 | + | ||
346 | + .detail-content { | ||
347 | + width: 630px; | ||
348 | + height: auto; | ||
349 | + background-color: #fff; | ||
350 | + position: fixed; | ||
351 | + top: 0; | ||
352 | + left: 50%; | ||
353 | + margin-top: 180px; | ||
354 | + margin-left: -315px; | ||
355 | + border-bottom-left-radius: 10px; | ||
356 | + border-bottom-right-radius: 10px; | ||
357 | + } | ||
358 | + | ||
359 | + .banner { | ||
360 | + width: 100%; | ||
361 | + height: 200px; | ||
362 | + } | ||
363 | + | ||
364 | + .user-info { | ||
365 | + padding: 34px 40px 115px; | ||
366 | + background-color: #fff; | ||
367 | + border-bottom: solid 1px #e5e5e5; | ||
368 | + | ||
369 | + .base { | ||
370 | + .intro { | ||
371 | + padding: 0 0 15px 30px; | ||
372 | + float: left; | ||
373 | + width: 400px; | ||
374 | + } | ||
375 | + | ||
376 | + .name { | ||
377 | + color: #000; | ||
378 | + font-size: 30px; | ||
379 | + line-height: 60px; | ||
380 | + } | ||
381 | + | ||
382 | + .level { | ||
383 | + font-size: 24px; | ||
384 | + line-height: 32px; | ||
385 | + color: #000; | ||
386 | + } | ||
387 | + | ||
388 | + .now { | ||
389 | + float: left; | ||
390 | + } | ||
391 | + | ||
392 | + .next { | ||
393 | + float: left; | ||
394 | + } | ||
395 | + } | ||
396 | + | ||
397 | + .pic { | ||
398 | + width: 120px; | ||
399 | + height: 120px; | ||
400 | + float: left; | ||
401 | + background-size: 100% 100%; | ||
402 | + background-position: center; | ||
403 | + border-radius: 50%; | ||
404 | + border: 1px solid #eee; | ||
405 | + position: relative; | ||
406 | + background-image: resolve("home/index/user-avatar.png"); | ||
407 | + | ||
408 | + .level-pic { | ||
409 | + width: 82px; | ||
410 | + height: 36px; | ||
411 | + background-size: 100% 100%; | ||
412 | + position: absolute; | ||
413 | + bottom: -18px; | ||
414 | + left: 50%; | ||
415 | + margin-left: -41px; | ||
416 | + } | ||
417 | + | ||
418 | + .vip-3 { | ||
419 | + background-image: url("/home/grade-new/vip-3.png"); | ||
420 | + } | ||
421 | + | ||
422 | + .vip-2 { | ||
423 | + background-image: url("/home/grade-new/vip-2.png"); | ||
424 | + } | ||
425 | + | ||
426 | + .vip-1 { | ||
427 | + background-image: url("/home/grade-new/vip-1.png"); | ||
428 | + } | ||
429 | + } | ||
430 | + | ||
431 | + .level-process { | ||
432 | + padding: 0 10px; | ||
433 | + | ||
434 | + .line-c { | ||
435 | + width: 530px; | ||
436 | + height: 4px; | ||
437 | + background-color: #f0f0f0; | ||
438 | + margin: 50px auto 0; | ||
439 | + position: relative; | ||
440 | + } | ||
441 | + | ||
442 | + .line { | ||
443 | + width: 470px; | ||
444 | + height: 100%; | ||
445 | + max-width: 100%; | ||
446 | + background-color: #444; | ||
447 | + } | ||
448 | + | ||
449 | + .point { | ||
450 | + width: 490px; | ||
451 | + position: absolute; | ||
452 | + top: -9px; | ||
453 | + left: -2px; | ||
454 | + } | ||
455 | + | ||
456 | + .point-item { | ||
457 | + width: 23px; | ||
458 | + height: 23px; | ||
459 | + background-image: resolve("home/family/point.png"); | ||
460 | + background-size: 100%; | ||
461 | + background-repeat: no-repeat; | ||
462 | + float: left; | ||
463 | + position: relative; | ||
464 | + } | ||
465 | + | ||
466 | + .point-item:last-child { | ||
467 | + margin-right: 0; | ||
468 | + } | ||
469 | + | ||
470 | + .level-text { | ||
471 | + width: 120px; | ||
472 | + position: absolute; | ||
473 | + top: 29px; | ||
474 | + left: 50%; | ||
475 | + margin-left: -60px; | ||
476 | + font-size: 24px; | ||
477 | + text-align: center; | ||
478 | + line-height: 40px; | ||
479 | + } | ||
480 | + } | ||
481 | + } | ||
482 | + | ||
483 | + .privilege-list { | ||
484 | + .privilege-title { | ||
485 | + height: 70px; | ||
486 | + line-height: 70px; | ||
487 | + font-size: 24px; | ||
488 | + border-bottom: 1px solid #e5e5e5; | ||
489 | + display: inline-block; | ||
490 | + width: 100%; | ||
491 | + color: #000; | ||
492 | + padding-left: 40px; | ||
493 | + | ||
494 | + b { | ||
495 | + display: block; | ||
496 | + width: 10px; | ||
497 | + height: 10px; | ||
498 | + background-color: #000; | ||
499 | + float: left; | ||
500 | + margin-top: 30px; | ||
501 | + margin-right: 10px; | ||
502 | + } | ||
503 | + | ||
504 | + .more { | ||
505 | + float: right; | ||
506 | + margin-right: 47px; | ||
507 | + } | ||
508 | + } | ||
509 | + | ||
510 | + .icon { | ||
511 | + float: left; | ||
512 | + display: block; | ||
513 | + width: 1.75rem; | ||
514 | + height: 1.75rem; | ||
515 | + } | ||
516 | + | ||
517 | + .transverse { | ||
518 | + overflow-x: scroll; | ||
519 | + overflow-y: hidden; | ||
520 | + white-space: nowrap; | ||
521 | + width: 100%; | ||
522 | + } | ||
523 | + | ||
524 | + .privilege-item { | ||
525 | + clear: both; | ||
526 | + float: left; | ||
527 | + padding: 25px 0; | ||
528 | + border-bottom: solid 1px #e5e5e5; | ||
529 | + position: relative; | ||
530 | + margin-left: 40px; | ||
531 | + | ||
532 | + &:last-child { | ||
533 | + border-bottom: none; | ||
534 | + } | ||
535 | + | ||
536 | + .iconfont { | ||
537 | + float: right; | ||
538 | + line-height: 70px; | ||
539 | + position: absolute; | ||
540 | + top: 50%; | ||
541 | + transform: translate(-50%, -50%); | ||
542 | + right: -10px; | ||
543 | + } | ||
544 | + } | ||
545 | + | ||
546 | + .privilege-item:last-child { | ||
547 | + border-bottom: none; | ||
548 | + } | ||
549 | + | ||
550 | + p { | ||
551 | + font-size: 28px; | ||
552 | + margin-left: 30px; | ||
553 | + min-height: 70px; | ||
554 | + width: 480px; | ||
555 | + float: left; | ||
556 | + } | ||
557 | + | ||
558 | + span { | ||
559 | + display: block; | ||
560 | + color: #b0b0b0; | ||
561 | + font-size: 22px; | ||
562 | + } | ||
563 | + | ||
564 | + .level-item { | ||
565 | + width: 175px; | ||
566 | + text-align: center; | ||
567 | + display: inline-block; | ||
568 | + margin-bottom: 50px; | ||
569 | + margin-right: 40px; | ||
570 | + vertical-align: top; | ||
571 | + | ||
572 | + .item-ico { | ||
573 | + width: 125px; | ||
574 | + height: 125px; | ||
575 | + border-radius: 50%; | ||
576 | + overflow: hidden; | ||
577 | + margin-top: 30px; | ||
578 | + margin-bottom: 20px; | ||
579 | + } | ||
580 | + | ||
581 | + .le-name { | ||
582 | + font-size: 28px; | ||
583 | + line-height: 36px; | ||
584 | + color: #000; | ||
585 | + white-space: normal; | ||
586 | + } | ||
587 | + | ||
588 | + .state { | ||
589 | + font-size: 24px; | ||
590 | + color: #b0b0b0; | ||
591 | + margin-top: 10px; | ||
592 | + } | ||
593 | + } | ||
594 | + } | ||
595 | + | ||
596 | + .birthday { | ||
597 | + margin-left: 40px; | ||
598 | + font-size: 24px; | ||
599 | + color: #1a1a1a; | ||
600 | + margin-bottom: 30px; | ||
601 | + display: inherit; | ||
602 | + | ||
603 | + b { | ||
604 | + display: block; | ||
605 | + width: 10px; | ||
606 | + height: 10px; | ||
607 | + background-color: #000; | ||
608 | + float: left; | ||
609 | + margin-top: 11px; | ||
610 | + margin-right: 10px; | ||
611 | + } | ||
612 | + } | ||
613 | + } | ||
614 | + | ||
615 | + .yohobuy { | ||
616 | + .banner { | ||
617 | + background-image: resolve("home/family/vip-detail/yohobuy.jpg"); | ||
618 | + background-repeat: no-repeat; | ||
619 | + background-size: 100%; | ||
620 | + } | ||
621 | + | ||
622 | + .user-info { | ||
623 | + .level-process { | ||
624 | + padding: 0 30px; | ||
625 | + | ||
626 | + .line-c { | ||
627 | + width: 490px; | ||
628 | + } | ||
629 | + | ||
630 | + .point-item { | ||
631 | + margin-right: 132px; | ||
632 | + } | ||
633 | + } | ||
634 | + } | ||
635 | + } | ||
636 | + | ||
637 | + .mars { | ||
638 | + .banner { | ||
639 | + background-image: resolve("home/family/vip-detail/mars.jpg"); | ||
640 | + background-repeat: no-repeat; | ||
641 | + background-size: 100%; | ||
642 | + } | ||
643 | + | ||
644 | + .user-info { | ||
645 | + .level-process { | ||
646 | + .line-c { | ||
647 | + width: 530px; | ||
648 | + } | ||
649 | + | ||
650 | + .point { | ||
651 | + width: 540px; | ||
652 | + } | ||
653 | + | ||
654 | + .point-item { | ||
655 | + margin-right: 80px; | ||
656 | + } | ||
657 | + } | ||
658 | + } | ||
659 | + } | ||
660 | + | ||
661 | + .coffee { | ||
662 | + .banner { | ||
663 | + background-image: resolve("home/family/vip-detail/yocoffee.jpg"); | ||
664 | + background-repeat: no-repeat; | ||
665 | + background-size: 100%; | ||
666 | + } | ||
667 | + | ||
668 | + .user-info { | ||
669 | + .level-process { | ||
670 | + .line-c { | ||
671 | + width: 530px; | ||
672 | + } | ||
673 | + | ||
674 | + .point { | ||
675 | + width: 540px; | ||
676 | + } | ||
677 | + | ||
678 | + .point-item { | ||
679 | + margin-right: 232px; | ||
680 | + } | ||
681 | + } | ||
682 | + } | ||
683 | + } | ||
684 | + | ||
685 | + .green { | ||
686 | + .banner { | ||
687 | + background-image: resolve("home/family/vip-detail/yogreen.jpg"); | ||
688 | + background-repeat: no-repeat; | ||
689 | + background-size: 100%; | ||
690 | + } | ||
691 | + | ||
692 | + .user-info { | ||
693 | + .level-process { | ||
694 | + .line-c { | ||
695 | + width: 520px; | ||
696 | + } | ||
697 | + | ||
698 | + .point { | ||
699 | + width: 540px; | ||
700 | + } | ||
701 | + | ||
702 | + .point-item { | ||
703 | + margin-right: 146px; | ||
704 | + } | ||
705 | + } | ||
706 | + } | ||
707 | + } | ||
708 | + | ||
709 | + .little { | ||
710 | + .banner { | ||
711 | + background-image: resolve("home/family/vip-detail/yolittle.jpg"); | ||
712 | + background-repeat: no-repeat; | ||
713 | + background-size: 100%; | ||
714 | + } | ||
715 | + | ||
716 | + .user-info { | ||
717 | + .level-process { | ||
718 | + .line-c { | ||
719 | + width: 530px; | ||
720 | + } | ||
721 | + | ||
722 | + .point { | ||
723 | + width: 540px; | ||
724 | + } | ||
725 | + | ||
726 | + .point-item { | ||
727 | + margin-right: 232px; | ||
728 | + } | ||
729 | + } | ||
730 | + } | ||
731 | + } | ||
732 | +} |
public/scss/home/family/_down-load.css
0 → 100644
1 | +.down-load-detail { | ||
2 | + position: fixed; | ||
3 | + top: 0; | ||
4 | + width: 100%; | ||
5 | + height: 100%; | ||
6 | + z-index: 5; | ||
7 | + | ||
8 | + .down-close { | ||
9 | + height: 50px; | ||
10 | + width: 50px; | ||
11 | + background-image: resolve("home/family/close.png"); | ||
12 | + background-size: 100%; | ||
13 | + background-repeat: no-repeat; | ||
14 | + position: relative; | ||
15 | + top: 80px; | ||
16 | + right: -668px; | ||
17 | + z-index: 6; | ||
18 | + } | ||
19 | + | ||
20 | + .back { | ||
21 | + width: 100%; | ||
22 | + height: 100%; | ||
23 | + position: fixed; | ||
24 | + left: 0; | ||
25 | + right: 0; | ||
26 | + top: 0; | ||
27 | + bottom: 0; | ||
28 | + background: #000; | ||
29 | + opacity: 0.5; | ||
30 | + } | ||
31 | + | ||
32 | + .detail-content { | ||
33 | + height: auto; | ||
34 | + margin-top: 109px; | ||
35 | + position: fixed; | ||
36 | + top: 0; | ||
37 | + left: 50%; | ||
38 | + border-radius: 10px; | ||
39 | + } | ||
40 | + | ||
41 | + .yohobuy, | ||
42 | + .now, | ||
43 | + .mars { | ||
44 | + width: 630px; | ||
45 | + margin-left: -315px; | ||
46 | + } | ||
47 | + | ||
48 | + .coffee, | ||
49 | + .little, | ||
50 | + .green { | ||
51 | + width: 670px; | ||
52 | + margin-left: -340px; | ||
53 | + | ||
54 | + .code-copy { | ||
55 | + width: 64px; | ||
56 | + height: 38px; | ||
57 | + display: inline-block; | ||
58 | + position: relative; | ||
59 | + line-height: 38px; | ||
60 | + text-align: center; | ||
61 | + border: 1px solid; | ||
62 | + color: #fff; | ||
63 | + background-color: #444; | ||
64 | + border-radius: 5px; | ||
65 | + font-size: 24px; | ||
66 | + } | ||
67 | + } | ||
68 | + | ||
69 | + .green { | ||
70 | + .code-copy { | ||
71 | + top: -684px; | ||
72 | + left: 356px; | ||
73 | + } | ||
74 | + } | ||
75 | + | ||
76 | + .little { | ||
77 | + .code-copy { | ||
78 | + top: -656px; | ||
79 | + left: 380px; | ||
80 | + } | ||
81 | + } | ||
82 | + | ||
83 | + .coffee { | ||
84 | + .code-copy { | ||
85 | + top: -684px; | ||
86 | + left: 364px; | ||
87 | + } | ||
88 | + } | ||
89 | + | ||
90 | + .hide { | ||
91 | + display: none; | ||
92 | + } | ||
93 | +} |
public/scss/home/family/city-swiper.css
0 → 100644
1 | +.city-swiper { | ||
2 | + display: none; | ||
3 | + width: 750px; | ||
4 | + height: 430px; | ||
5 | + position: fixed; | ||
6 | + bottom: 0; | ||
7 | + left: 0; | ||
8 | + background-color: #d2d5da; | ||
9 | + border-top: solid 1px #939598; | ||
10 | + | ||
11 | + .swiper-header { | ||
12 | + height: 70px; | ||
13 | + background-color: #f0f0f1; | ||
14 | + | ||
15 | + div { | ||
16 | + line-height: 70px; | ||
17 | + color: #3478f6; | ||
18 | + font-size: 30px; | ||
19 | + padding: 0 20px; | ||
20 | + } | ||
21 | + | ||
22 | + .cancel { | ||
23 | + float: left; | ||
24 | + } | ||
25 | + | ||
26 | + .ok { | ||
27 | + float: right; | ||
28 | + } | ||
29 | + } | ||
30 | + | ||
31 | + .swiper-list { | ||
32 | + height: 360px; | ||
33 | + width: 750px; | ||
34 | + overflow: hidden; | ||
35 | + position: relative; | ||
36 | + } | ||
37 | + | ||
38 | + .swiper-container { | ||
39 | + width: 50%; | ||
40 | + height: 360px; | ||
41 | + float: left; | ||
42 | + } | ||
43 | + | ||
44 | + .swiper-slide { | ||
45 | + text-align: center; | ||
46 | + transform: rotateX(45deg); | ||
47 | + -webkit-transform: rotateX(45deg); | ||
48 | + color: #aeb0b5; | ||
49 | + font-size: 30px; | ||
50 | + display: -webkit-flex; | ||
51 | + display: flex; | ||
52 | + -webkit-box-align: center; | ||
53 | + -webkit-align-items: center; | ||
54 | + align-items: center; | ||
55 | + -webkit-justify-content: center; | ||
56 | + justify-content: center; | ||
57 | + } | ||
58 | + | ||
59 | + .swiper-slide-prev { | ||
60 | + transform: rotateX(30deg); | ||
61 | + -webkit-transform: rotateX(30deg); | ||
62 | + color: #888a8e; | ||
63 | + } | ||
64 | + | ||
65 | + .swiper-slide-next { | ||
66 | + transform: rotateX(30deg); | ||
67 | + -webkit-transform: rotateX(30deg); | ||
68 | + color: #888a8e; | ||
69 | + } | ||
70 | + | ||
71 | + .swiper-slide-active { | ||
72 | + transform: rotateX(0); | ||
73 | + -webkit-transform: rotateX(0); | ||
74 | + color: #2a2a2b; | ||
75 | + } | ||
76 | + | ||
77 | + .swiper-line { | ||
78 | + position: absolute; | ||
79 | + top: 50%; | ||
80 | + left: 0; | ||
81 | + width: 750px; | ||
82 | + border-top: solid 1px #a8abae; | ||
83 | + border-bottom: solid 1px #a8abae; | ||
84 | + z-index: -1; | ||
85 | + } | ||
86 | +} |
@@ -148,6 +148,18 @@ | @@ -148,6 +148,18 @@ | ||
148 | color: #fff; | 148 | color: #fff; |
149 | display: block; | 149 | display: block; |
150 | } | 150 | } |
151 | + | ||
152 | + .family-entry { | ||
153 | + width: 136px; | ||
154 | + height: 136px; | ||
155 | + position: absolute; | ||
156 | + bottom: 0; | ||
157 | + right: 0; | ||
158 | + display: block; | ||
159 | + background-size: 100%; | ||
160 | + background-repeat: no-repeat; | ||
161 | + background-image: resolve("home/index/family-entry.gif"); | ||
162 | + } | ||
151 | } | 163 | } |
152 | 164 | ||
153 | .notice-c { | 165 | .notice-c { |
-
Please register or login to post a comment