Showing
11 changed files
with
185 additions
and
18 deletions
@@ -507,6 +507,151 @@ const content = [ | @@ -507,6 +507,151 @@ const content = [ | ||
507 | ] | 507 | ] |
508 | } | 508 | } |
509 | ] | 509 | ] |
510 | + }, | ||
511 | + | ||
512 | + { | ||
513 | + id: '5', | ||
514 | + content: [ | ||
515 | + { | ||
516 | + bigTitle: 'YOHO!BLK 隐私条款' | ||
517 | + }, | ||
518 | + { | ||
519 | + normal: [ | ||
520 | + {normalData: '欢迎访问YOHO!BLK 网站!我们以本隐私申明声明对访问者隐私保护的许诺。'} | ||
521 | + ] | ||
522 | + }, | ||
523 | + { | ||
524 | + stepTitle: 'YOHO!BLK的信息收集与使用' | ||
525 | + }, | ||
526 | + { | ||
527 | + steps: [ | ||
528 | + {stepData: 'YOHO!BLK收集用户提交的个人识别信息(下称“个人识别信息”), 一旦注册,YOHO!BLK用户即可以建立由一页' + | ||
529 | + '或多页网页组成的含有用户信息的用户档案。我们将收集用户发布在其用户档案中的数据,包括但不限于: 会员信息,联系信' + | ||
530 | + '息,购物&着装习惯和喜爱品牌(合称为“用户档案信息”),我们使用这些信息来获得用户的统计资料。我们将会用这些统计数' + | ||
531 | + '据来给我们的用户分类,以便有针对性地向我们的用户提供新的服务。我们会通过您的邮件地址来通知您这些新的服务。'} | ||
532 | + ] | ||
533 | + }, | ||
534 | + { | ||
535 | + steps: [ | ||
536 | + {stepData: '我们同样从用户处收集其他非个人识别信息(下称“非个人识别信息”),包括IP地址、集合的用户数据和浏览器' + | ||
537 | + '类型。该等数据会被用来管理YOHO!BLK,跟踪使用记录,改进YOHO!BLK的服务。该等非个人识别信息通常被用于下列目的' + | ||
538 | + ':研究和分析站点的使用情况,订制您浏览的广告和内容,满足您对服务的要求,以及改进我们的服务。出于安全和监管的目的' + | ||
539 | + ',用户的IP地址将会被记录。'} | ||
540 | + ] | ||
541 | + }, | ||
542 | + { | ||
543 | + steps: [ | ||
544 | + {stepData: '我们或其商业伙伴可能在YOHO!BLK上不时地进行促销或者抽奖。用户可能会被要求提供个人识别信息,包括姓' + | ||
545 | + '名,电子邮件地址或家庭住址。因进行促销或者抽奖而收集个人识别信息时,您将清楚地被告知个人识别信息的收集方以及' + | ||
546 | + '适用的隐私政策。'} | ||
547 | + ] | ||
548 | + }, | ||
549 | + { | ||
550 | + stepTitle: 'YOHO!BLK收集信息的共享与披露' | ||
551 | + }, | ||
552 | + { | ||
553 | + steps: [ | ||
554 | + {stepData: '除本隐私政策另有规定,我们不会在未经您同意的情况下在YOHO!BLK及其母公司、子公司或者关联公司(' + | ||
555 | + '为本隐私政策之目的,包括遵守本隐私政策的技术提供者)之外泄露您的个人识别信息或者用户档案信息,除非我们认为这' + | ||
556 | + '种披露是有必要的:(1)为遵守法律的要求或者回应我们收到的传票、搜查令或者其他法律程序,而不论该等回应是否为适' + | ||
557 | + '用法律所要求的;(2)为回应主管政府部门的要求;(3)为了保护公众和服务用户的安全;或者(4)为了维护我们的法律权' + | ||
558 | + '利和利益。'}, | ||
559 | + {stepData: '当我们出售YOHO!BLK或其全部资产时,我们保留向其继任者转让个人识别信息和用户档案信息的权利。'}, | ||
560 | + {stepData: '我们也可以向某些您明确同意接收其信息的广告合作伙伴转让您的个人识别信息和用户档案信息。因此进行个' + | ||
561 | + '人识别信息的收集时,您将清楚地被告知适用的隐私政策。'} | ||
562 | + ] | ||
563 | + }, | ||
564 | + { | ||
565 | + stepTitle: '用户名和密码' | ||
566 | + }, { | ||
567 | + steps: [ | ||
568 | + {stepData: 'YOHO!BLK用户账号通过用户创设的密码确保其安全性。您应当对您密码的保密负全部责任。请不要和他人' + | ||
569 | + '分享此信息。如果您泄漏了密码,您可能丢失了您的个人识别信息,并且有可能导致对您不利的司法行为。如果您和他人共' + | ||
570 | + '享一台电脑,您应该在离开YOHO!BLK时退出系统以保证您的信息不被后来使用该电脑者获取。'}, | ||
571 | + {stepData: '因此不管任何原因使您的密码安全受到危及,您应该立即通过我们的客服热线:400-889-9646和我们取得联系 。'} | ||
572 | + ] | ||
573 | + }, | ||
574 | + { | ||
575 | + stepTitle: '您的交易行为' | ||
576 | + }, | ||
577 | + { | ||
578 | + steps: [ | ||
579 | + {stepData: '我们跟踪IP地址仅仅只是为了安全的必要。如果我们没有发现任何安全问题,我们会及时删除我们收集到的' + | ||
580 | + 'IP地址。我们还跟踪全天的页面访问数据。全天页面访问数据被用来反映网站的流量,我们可以为未来的发展制定计划(' + | ||
581 | + '例如,增加服务器)。'} | ||
582 | + ] | ||
583 | + }, | ||
584 | + { | ||
585 | + stepTitle: '邮件 / 短信 / 会刊服务' | ||
586 | + }, | ||
587 | + { | ||
588 | + steps: [ | ||
589 | + {stepData: '我们保留通过邮件、短信、邮寄会刊的形式,对本网站注册、购物用户发送订单信息、促销活动等告知服务的' + | ||
590 | + '权利。如果您在YOHO!BLK注册、购物,表明您已默示同意接受此项服务。如果您不想接收来自我们的邮件、短信或会刊,' + | ||
591 | + '您可以向我们的客服提出退阅申请,并注明您的E-mail地址、手机号或相关地址信息,我们会在收到申请后为您办理退阅。'} | ||
592 | + ] | ||
593 | + }, | ||
594 | + { | ||
595 | + stepTitle: 'Cookies 的使用' | ||
596 | + }, | ||
597 | + { | ||
598 | + steps: [ | ||
599 | + {stepData: '我们使用cookies来储存用户的喜好和记录活动信息以确保用户不会重复收到同样的广告和定制的时事通讯' + | ||
600 | + '、广告以及基于浏览器类型和用户档案信息的网页内容。我们不会把在cookies中保存的信息与您在我们网站上提交的任何' + | ||
601 | + '个人识别信息相连接。您可以通过设置您的浏览器以接受或者拒绝全部或部分的cookies,或要求在cookies被设置时通知' + | ||
602 | + '您。由于每个浏览器是不同的,请查看浏览器的“帮助”菜单来了解如何更改您的cookies选择参数。但是,您应允许来自YO' + | ||
603 | + 'HO!BLK的cookies以使您可以使用网站的更多的功能。'} | ||
604 | + ] | ||
605 | + }, | ||
606 | + { | ||
607 | + stepTitle: '外部链接' | ||
608 | + }, | ||
609 | + { | ||
610 | + steps: [ | ||
611 | + {stepData: 'YOHO!BLK包含其他网站的链接。但我们不对其他网站上的隐私政策和/或其执行承担责任。当链接到其他网' + | ||
612 | + '站时,用户应该阅读该网站贴示的隐私政策。我们的隐私政策仅适用于自YOHO!BLK收集的信息。'} | ||
613 | + ] | ||
614 | + }, | ||
615 | + { | ||
616 | + stepTitle: '第三方广告' | ||
617 | + }, | ||
618 | + { | ||
619 | + steps: [ | ||
620 | + {stepData: '我们可能会通过与第三方合作向用户提供服务。因此,我们可能向该第三方提供您通过YOHO!BLK提交给我们' + | ||
621 | + '的个人识别信息和用户档案信息;但该第三方应同意承担与我们相同的责任以保护用户的隐私。另外,在不会披露用户的个' + | ||
622 | + '人识别信息和用户档案信息的前提下,我们可以对集合的用户个人识别信息和用户档案进行分析和商业性使用。'} | ||
623 | + ] | ||
624 | + }, | ||
625 | + { | ||
626 | + stepTitle: '安全' | ||
627 | + }, | ||
628 | + { | ||
629 | + steps: [ | ||
630 | + {stepData: '我们会采取合理措施保护存储在我们数据库中的用户个人识别信息和用户档案信息,并且对那些需要履行其' + | ||
631 | + '工作职责的雇员,比如我们的客户服务人员和技术人员,获取用户个人识别信息和用户档案信息进行限制。请注意,我们无' + | ||
632 | + '法保证用户个人识别信息和用户档案信息的安全性。未授权的登陆或使用、硬件或软件的故障、以及其他因素均可能在任何时' + | ||
633 | + '候危及用户个人识别信息的安全性。'} | ||
634 | + ] | ||
635 | + }, | ||
636 | + { | ||
637 | + stepTitle: '隐私政策的变更' | ||
638 | + }, | ||
639 | + { | ||
640 | + steps: [ | ||
641 | + {stepData: '我们可能对本隐私政策不时进行修改。如果我们进行任何修改,我们将在YOHO!BLK主页上发布为期30天的通知' + | ||
642 | + '以使用户知道被修改内容的类型以及指示用户审阅更新的隐私政策。如果您在对本隐私政策任何细微修改发布后继续使用网' + | ||
643 | + '站,则表示您同意遵守任何该等修改。'} | ||
644 | + ] | ||
645 | + }, | ||
646 | + { | ||
647 | + stepTitle: '联系我们' | ||
648 | + }, | ||
649 | + { | ||
650 | + steps: [ | ||
651 | + {stepData: '如果您就本隐私政策有任何疑问,请与我们客服联系客服热线:400-889-9646。'} | ||
652 | + ] | ||
653 | + } | ||
654 | + ] | ||
510 | } | 655 | } |
511 | 656 | ||
512 | ]; | 657 | ]; |
@@ -196,6 +196,12 @@ const favorite = { | @@ -196,6 +196,12 @@ const favorite = { | ||
196 | editorialList: data.data | 196 | editorialList: data.data |
197 | }; | 197 | }; |
198 | 198 | ||
199 | + _.forEach(retData.editorialList, (e) => { | ||
200 | + if (e.tag) { | ||
201 | + e.tags = e.tag.split(','); | ||
202 | + } | ||
203 | + }); | ||
204 | + | ||
199 | retData.total = data.total; | 205 | retData.total = data.total; |
200 | retData.paginationData = { | 206 | retData.paginationData = { |
201 | page: page, | 207 | page: page, |
@@ -44,7 +44,6 @@ const favorite = { | @@ -44,7 +44,6 @@ const favorite = { | ||
44 | * @returns {*} | 44 | * @returns {*} |
45 | */ | 45 | */ |
46 | getFavoriteEditoreial(param) { | 46 | getFavoriteEditoreial(param) { |
47 | - param.app_type = 1; | ||
48 | return ServiceAPI.get('guang/api/*/favorite/getUserFavArticleList', param); | 47 | return ServiceAPI.get('guang/api/*/favorite/getUserFavArticleList', param); |
49 | }, | 48 | }, |
50 | 49 |
@@ -26,13 +26,18 @@ const getMeThumb = () => { | @@ -26,13 +26,18 @@ const getMeThumb = () => { | ||
26 | cache: true, | 26 | cache: true, |
27 | code: 200 | 27 | code: 200 |
28 | }).then(result => { | 28 | }).then(result => { |
29 | + const obj = _.get(result, 'data.list[0].data[0]', {}); | ||
29 | 30 | ||
30 | - let thumb = { | 31 | + if (result.data) { |
32 | + return { | ||
31 | banner: result.data.list[0].data[0].src, | 33 | banner: result.data.list[0].data[0].src, |
32 | url: result.data.list[0].data[0].url | 34 | url: result.data.list[0].data[0].url |
33 | }; | 35 | }; |
34 | - | ||
35 | - return thumb; | 36 | + } |
37 | + return { | ||
38 | + banner: obj.src || '', | ||
39 | + url: obj.url || '' | ||
40 | + }; | ||
36 | }); | 41 | }); |
37 | }; | 42 | }; |
38 | 43 |
@@ -31,10 +31,13 @@ | @@ -31,10 +31,13 @@ | ||
31 | {{intro}} | 31 | {{intro}} |
32 | </p> | 32 | </p> |
33 | 33 | ||
34 | - <!--<div class="editorial-tags">--> | ||
35 | - <!--<span>户外</span>--> | ||
36 | - <!--<span>学院</span>--> | ||
37 | - <!--</div>--> | 34 | + <div class="editorial-tags"> |
35 | + <div class="tags-wrap"> | ||
36 | + {{#each tags}} | ||
37 | + <span>{{this}}</span> | ||
38 | + {{/each}} | ||
39 | + </div> | ||
40 | + </div> | ||
38 | </div> | 41 | </div> |
39 | <div class="fav-cancel"> | 42 | <div class="fav-cancel"> |
40 | <span class="iconfont"></span> | 43 | <span class="iconfont"></span> |
@@ -42,7 +42,7 @@ const getProductBaseAsync = (productId, uid, skn) => { | @@ -42,7 +42,7 @@ const getProductBaseAsync = (productId, uid, skn) => { | ||
42 | */ | 42 | */ |
43 | const getUserIsFav = (uid, productId) => { | 43 | const getUserIsFav = (uid, productId) => { |
44 | return SingleAPI.get('', { | 44 | return SingleAPI.get('', { |
45 | - method: 'app.favorite.isFavorite', | 45 | + method: 'app.favorite.isFavoriteNew', |
46 | id: productId, | 46 | id: productId, |
47 | uid: uid, | 47 | uid: uid, |
48 | type: 'product' | 48 | type: 'product' |
@@ -144,7 +144,7 @@ const ShopService = { | @@ -144,7 +144,7 @@ const ShopService = { | ||
144 | info.isFavorite = brandInfo.isFavorite === 'Y'; | 144 | info.isFavorite = brandInfo.isFavorite === 'Y'; |
145 | info.showShopName = shopIntro.isShowShopName === 'Y'; | 145 | info.showShopName = shopIntro.isShowShopName === 'Y'; |
146 | 146 | ||
147 | - let shopData = yield Promise.all([ShopService.getShopDecorator(shopId), | 147 | + let shopData = yield Promise.all([ShopService.getShopDecorator(info.shopId), |
148 | ShopService.getShopSecondSorts(info.brandId, shopId)]); | 148 | ShopService.getShopSecondSorts(info.brandId, shopId)]); |
149 | let shopList = shopData[0]; | 149 | let shopList = shopData[0]; |
150 | let sorts = shopData[1]; | 150 | let sorts = shopData[1]; |
@@ -43,7 +43,7 @@ | @@ -43,7 +43,7 @@ | ||
43 | {{#each newProducts}} | 43 | {{#each newProducts}} |
44 | <div class="goods-info" data-skn="{{productSkn}}"> | 44 | <div class="goods-info" data-skn="{{productSkn}}"> |
45 | <a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank"> | 45 | <a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank"> |
46 | - <img class="lazy thumb" data-original="{{src}}" style="display: block;"> | 46 | + <img class="lazy thumb" data-original="{{src}}"> |
47 | </a> | 47 | </a> |
48 | <div class="desc"> | 48 | <div class="desc"> |
49 | <a class="name" href="" target="_blank">{{productName}}</a> | 49 | <a class="name" href="" target="_blank">{{productName}}</a> |
@@ -56,7 +56,7 @@ | @@ -56,7 +56,7 @@ | ||
56 | {{/if}} | 56 | {{/if}} |
57 | 57 | ||
58 | {{#if hotProducts}} | 58 | {{#if hotProducts}} |
59 | - <div class="center-content clearfix hot-product-warp"> | 59 | + <div class="center-content clearfix new-arrival-warp"> |
60 | <div class="floor-header clearfix"> | 60 | <div class="floor-header clearfix"> |
61 | <h2 class="floor-title en-size">HOT</h2> | 61 | <h2 class="floor-title en-size">HOT</h2> |
62 | <p class="floor-title zh-size">人气单品</p> | 62 | <p class="floor-title zh-size">人气单品</p> |
@@ -67,7 +67,7 @@ | @@ -67,7 +67,7 @@ | ||
67 | {{#each hotProducts}} | 67 | {{#each hotProducts}} |
68 | <div class="goods-info" data-skn="{{productSkn}}"> | 68 | <div class="goods-info" data-skn="{{productSkn}}"> |
69 | <a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank"> | 69 | <a href="/product/pro_{{productId}}_{{goodsId}}/{{cnAlphabet}}.html" target="_blank"> |
70 | - <img class="lazy thumb" data-original="{{src}}" style="display: block;"> | 70 | + <img class="lazy thumb" data-original="{{src}}"> |
71 | </a> | 71 | </a> |
72 | <div class="desc-cover"></div> | 72 | <div class="desc-cover"></div> |
73 | <div class="desc"> | 73 | <div class="desc"> |
@@ -88,8 +88,10 @@ if (isProduction) { | @@ -88,8 +88,10 @@ if (isProduction) { | ||
88 | Object.assign(module.exports, { | 88 | Object.assign(module.exports, { |
89 | appName: 'www.yohoblk.com', | 89 | appName: 'www.yohoblk.com', |
90 | domains: { | 90 | domains: { |
91 | + singleApi: 'http://api_single.yoho.cn/', | ||
91 | api: 'http://api.yoho.yohoops.org/', | 92 | api: 'http://api.yoho.yohoops.org/', |
92 | - service: 'http://service.yoho.yohoops.org/' | 93 | + service: 'http://service.yoho.yohoops.org/', |
94 | + search: 'http://search.yohoops.org/yohosearch/' | ||
93 | }, | 95 | }, |
94 | memcache: { | 96 | memcache: { |
95 | master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'], | 97 | master: ['memcache1.yohoops.org:12111', 'memcache2.yohoops.org:12111', 'memcache3.yohoops.org:12111'], |
@@ -97,14 +97,18 @@ | @@ -97,14 +97,18 @@ | ||
97 | height: 18px; | 97 | height: 18px; |
98 | line-height: 18px; | 98 | line-height: 18px; |
99 | } | 99 | } |
100 | - | ||
101 | } | 100 | } |
102 | 101 | ||
103 | .editorial-tags { | 102 | .editorial-tags { |
104 | - | ||
105 | position: absolute; | 103 | position: absolute; |
106 | bottom: 0; | 104 | bottom: 0; |
107 | 105 | ||
106 | + .tags-wrap { | ||
107 | + position: relative; | ||
108 | + height: 25px; | ||
109 | + overflow: hidden; | ||
110 | + } | ||
111 | + | ||
108 | span { | 112 | span { |
109 | background-color: #bbb; | 113 | background-color: #bbb; |
110 | color: #fff; | 114 | color: #fff; |
@@ -112,6 +116,7 @@ | @@ -112,6 +116,7 @@ | ||
112 | padding: 5px 10px; | 116 | padding: 5px 10px; |
113 | font-size: 14px; | 117 | font-size: 14px; |
114 | margin-right: 10px; | 118 | margin-right: 10px; |
119 | + margin-bottom: 5px; | ||
115 | } | 120 | } |
116 | } | 121 | } |
117 | 122 | ||
@@ -128,8 +133,6 @@ | @@ -128,8 +133,6 @@ | ||
128 | margin-right: 30px; | 133 | margin-right: 30px; |
129 | color: #999; | 134 | color: #999; |
130 | } | 135 | } |
131 | - | ||
132 | } | 136 | } |
133 | } | 137 | } |
134 | - | ||
135 | } | 138 | } |
-
Please register or login to post a comment