Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHOBUYPC
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
2
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Plain Diff
Browse Files
Authored by
xuqi
9 years ago
Commit
462022e35ef19c6bdf72eb6ba1141b42e8b50ab8
2 parents
c255059b
86670c57
Merge branch 'test' into develop
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
553 additions
and
263 deletions
library/Configs/CacheConfig.php
library/LibModels/Wap/Product/SearchData.php
library/Plugin/DataProcess/ListProcess.php
library/Plugin/Helpers.php
library/Plugin/Images.php
script/nginx/conf/vhosts/nginx.test.yohobuy.conf
static/dist/myohobuy/0.0.6/index-debug.js
static/dist/myohobuy/0.0.6/index.css
static/dist/myohobuy/0.0.6/index.js
yohobuy/m.yohobuy.com/application/controllers/Search.php
yohobuy/m.yohobuy.com/application/models/Category/Brand.php
yohobuy/m.yohobuy.com/application/models/Product/List.php
yohobuy/m.yohobuy.com/application/models/Product/Search.php
yohobuy/m.yohobuy.com/application/modules/Guang/controllers/Index.php
yohobuy/m.yohobuy.com/configs/application.preview.ini
library/Configs/CacheConfig.php
View file @
462022e
...
...
@@ -39,5 +39,7 @@ class CacheConfig
const
KEY_ACTION_PRODUCT_BRAND_DOMAINS
=
'key_action_product_brand_domains'
;
// 所有品牌域名列表
const
KEY_ACTION_PRODUCT_BRAND_NAMES
=
'key_action_product_brand_names'
;
// 所有品牌名称列表
const
KEY_ACTION_PRODUCT_BRAND_LOGO
=
'key_action_product_brand_logo'
;
// 品牌信息
const
KEY_ACTION_INDEX_SEARCH
=
'key_action_search_search'
;
// 搜索的数据
}
...
...
library/LibModels/Wap/Product/SearchData.php
View file @
462022e
...
...
@@ -16,20 +16,27 @@ use Api\Sign;
*/
class
SearchData
{
/**
*
阿里云外网
*
获取搜索的服务地址
*
* @var string
* 备注:此处是根据环境来确定使用阿里云内网还是外网的URL
*
* @return string
*/
protected
static
$_searchurl
=
'http://101.200.31.165/yohosearch/search.json'
;
// /**
// * 阿里云内网
// *
// * @var string
// */
// protected static $_searchurl = 'http://100.98.132.63/yohosearch/search.json';
private
static
function
getSearchUrl
()
{
defined
(
'APPLICATION_ENV'
)
||
define
(
'APPLICATION_ENV'
,
'developer'
);
switch
(
APPLICATION_ENV
)
{
case
'release'
:
case
'test'
:
case
'preview'
:
return
'http://100.98.132.63/yohosearch/search.json'
;
case
'developer'
:
default
:
return
'http://101.200.31.165/yohosearch/search.json'
;
}
}
/**
* 模糊搜索提供的关键词
...
...
@@ -50,7 +57,7 @@ class SearchData
}
/**
* 根据给定查询数据搜索数据列表
* 根据给定查询数据搜索数据列表
(老的)
*
* @param string $query 查询条件, 默认为null
* @param string $brand 品牌,默认为null
...
...
@@ -71,47 +78,29 @@ class SearchData
* @param integer $channel表示哪个频道,1表示男生,2表示女生,3表示潮童,4表示创意生活
* @return array 搜索到的数据
*/
public
static
function
search
LiDatas
(
$query
=
null
,
$brand
=
null
,
$gender
=
null
,
$color
=
null
,
$size
=
null
,
$price
=
null
,
$p_d
=
null
,
$sort
=
null
,
$order
=
's_t_desc'
,
$page
=
1
,
$limit
=
60
,
$channel
=
null
)
public
static
function
search
ByCondition
(
$condition
)
{
// 排序数据映射表
$order_map
=
array
(
's_t_desc'
=>
'shelve_time:desc'
,
's_t_asc'
=>
'shelve_time:asc'
,
's_p_asc'
=>
'sales_price:asc'
,
's_p_desc'
=>
'sales_price:desc'
,
's_d_desc'
=>
'discount:desc'
,
's_d_asc'
=>
'discount:asc'
,
'skn_desc'
=>
'product_skn:desc'
,
'skn_asc'
=>
'product_skn:asc'
,
'activities_desc'
=>
'activities.order_by:desc'
,
'activities_asc'
=>
'activities.order_by:asc'
,
's_n_asc'
=>
'sales_num:asc'
,
's_n_desc'
=>
'sales_num:desc'
,
'activities_id_desc'
=>
'activities.activity_id:desc'
,
'activities_id_asc'
=>
'activities.activity_id:asc'
,
);
$param
=
array
();
is_null
(
$query
)
||
$param
[
'query'
]
=
$query
;
is_null
(
$brand
)
||
$param
[
'brand'
]
=
$brand
;
is_null
(
$gender
)
||
$param
[
'gender'
]
=
$gender
;
is_null
(
$color
)
||
$param
[
'color'
]
=
$color
;
is_null
(
$size
)
||
$param
[
'size'
]
=
$size
;
is_null
(
$price
)
||
$param
[
'price'
]
=
$price
;
is_null
(
$p_d
)
||
$param
[
'p_d'
]
=
$p_d
;
is_null
(
$sort
)
||
$param
[
'sort'
]
=
$sort
;
// is_null($channel) || $param['channel'] = $channel;
$param
[
'order'
]
=
$order_map
[
$order
];
$param
[
'page'
]
=
$page
;
$param
[
'viewNum'
]
=
$limit
;
// 每页记录数
$param
[
'status'
]
=
1
;
// 是否上架,1表示在架,2表示不在
$param
=
Yohobuy
::
param
();
$param
[
'method'
]
=
'app.search.li'
;
if
(
!
isset
(
$condition
[
'order'
]))
{
$param
[
'order'
]
=
's_t_desc'
;
}
if
(
!
isset
(
$condition
[
'page'
]))
{
$param
[
'page'
]
=
1
;
}
if
(
!
isset
(
$condition
[
'limit'
]))
{
$param
[
'limit'
]
=
60
;
}
if
(
!
empty
(
$condition
))
{
$param
+=
$condition
;
}
$param
[
'client_secret'
]
=
Sign
::
getSign
(
$param
);
return
Yohobuy
::
get
(
self
::
$_searchurl
,
$param
);
return
Yohobuy
::
get
(
Yohobuy
::
API_URL
,
$param
);
}
/**
* 根据给定查询数据搜索数据列表
* 根据给定查询数据搜索数据列表
(新的)
*
* @param string $query 查询条件, 默认为null
* @param string $brand 品牌,默认为null
...
...
@@ -132,19 +121,47 @@ class SearchData
* @param integer $channel表示哪个频道,1表示男生,2表示女生,3表示潮童,4表示创意生活
* @return array 搜索到的数据
*/
public
static
function
search
ByCondition
(
$condition
,
$order
=
's_t_desc'
,
$page
=
1
,
$limit
=
60
)
public
static
function
search
ElasticByCondition
(
$condition
)
{
$param
=
Yohobuy
::
param
();
$param
[
'method'
]
=
'app.search.li'
;
$param
[
'order'
]
=
$order
;
$param
[
'page'
]
=
$page
;
$param
[
'limit'
]
=
$limit
;
// 排序数据映射表
$orderMaps
=
array
(
's_t_desc'
=>
'shelve_time:desc'
,
's_t_asc'
=>
'shelve_time:asc'
,
's_p_asc'
=>
'sales_price:asc'
,
's_p_desc'
=>
'sales_price:desc'
,
's_d_desc'
=>
'discount:desc'
,
's_d_asc'
=>
'discount:asc'
,
'skn_desc'
=>
'product_skn:desc'
,
'skn_asc'
=>
'product_skn:asc'
,
'activities_desc'
=>
'activities.order_by:desc'
,
'activities_asc'
=>
'activities.order_by:asc'
,
's_n_asc'
=>
'sales_num:asc'
,
's_n_desc'
=>
'sales_num:desc'
,
'activities_id_desc'
=>
'activities.activity_id:desc'
,
'activities_id_asc'
=>
'activities.activity_id:asc'
,
);
$param
=
array
();
$param
[
'status'
]
=
1
;
// 是否上架,1表示在架,2表示不在
if
(
!
isset
(
$orderMaps
[
$condition
[
'order'
]
]
))
{
$param
[
'order'
]
=
$orderMaps
[
's_t_desc'
];
}
else
{
$param
[
'order'
]
=
$orderMaps
[
$condition
[
'order'
]
];
}
if
(
!
isset
(
$condition
[
'page'
]))
{
$param
[
'page'
]
=
1
;
}
if
(
!
isset
(
$condition
[
'limit'
]))
{
$param
[
'viewNum'
]
=
60
;
}
else
{
$param
[
'viewNum'
]
=
$condition
[
'limit'
];
unset
(
$condition
[
'limit'
]);
}
if
(
!
empty
(
$condition
))
{
$param
+=
$condition
;
}
$param
[
'client_secret'
]
=
Sign
::
getSign
(
$param
);
return
Yohobuy
::
get
(
Yohobuy
::
API_URL
,
$param
,
600
);
// 有缓存10分钟
return
Yohobuy
::
get
(
self
::
getSearchUrl
(),
$param
);
}
}
...
...
library/Plugin/DataProcess/ListProcess.php
View file @
462022e
...
...
@@ -16,14 +16,14 @@ class ListProcess
* @param $data
* @return array 处理之后的商品数据
*/
public
static
function
getListData
(
$data
)
public
static
function
getListData
(
$data
,
$returnFilter
=
true
)
{
$result
=
array
(
'new'
=>
array
(),
'filter'
=>
array
());
if
(
isset
(
$data
[
'product_list'
]))
{
$result
[
'new'
]
=
self
::
getProductData
(
$data
[
'product_list'
]);
}
if
(
isset
(
$data
[
'filter'
]))
{
if
(
$returnFilter
&&
isset
(
$data
[
'filter'
]))
{
$result
[
'filter'
]
=
self
::
getFilterData
(
$data
[
'filter'
]);
}
...
...
@@ -42,7 +42,7 @@ class ListProcess
$products
=
array
();
foreach
(
$data
as
$value
)
{
$products
[]
=
Helpers
::
formatProduct
(
$value
,
true
,
true
,
true
,
true
);
$products
[]
=
Helpers
::
formatProduct
(
$value
,
true
,
true
,
true
);
}
return
$products
;
...
...
library/Plugin/Helpers.php
View file @
462022e
...
...
@@ -193,7 +193,7 @@ class Helpers
// 如果$productData['default_images']为空,就取$productData['goods_list']中第一个,为空就不处理
if
(
empty
(
$productData
[
'default_images'
]))
{
$productData
[
'default_images'
]
=
$productData
[
'goods_list'
][
0
];
$productData
[
'default_images'
]
=
$productData
[
'goods_list'
][
0
]
[
'images_url'
]
;
}
$result
=
array
();
...
...
@@ -265,8 +265,11 @@ class Helpers
$result
[
'share'
]
=
$isApp
&&
isset
(
$articleData
[
'share'
][
'url'
])
?
$articleData
[
'share'
][
'url'
]
:
false
;
// 判断是否显示作者信息
if
(
$showAuthor
)
{
$result
[
'author'
]
=
empty
(
$articleData
[
'author'
])
?
false
:
$articleData
[
'author'
];
if
(
$showAuthor
&&
!
empty
(
$articleData
[
'author'
]))
{
if
(
!
$isApp
)
{
$articleData
[
'author'
][
'url'
]
=
Helpers
::
getFilterUrl
(
$articleData
[
'author'
][
'url'
]);
}
$result
[
'author'
]
=
$articleData
[
'author'
];
}
// 模板中需要的标签标识
...
...
library/Plugin/Images.php
View file @
462022e
<?php
/**
* User: Zip
* Date: 15/10/28
* Time: 下午13:08
*/
namespace
Plugin
;
class
Images
{
private
static
$domain
=
'.static.yhbimg.com'
;
private
static
$default_image
=
'/2015/08/25/02/01dd632a6e07bfef457ce4beda21dd6413.png'
;
private
static
$domainList
=
array
(
...
...
@@ -20,13 +24,11 @@ class Images
),
'yhb-head'
=>
'head.static.yhbimg.com'
);
private
static
$staticDomain
=
array
(
'bucket'
=>
''
);
private
static
$qiniuDomain
=
'yhfair.qiniudn.com'
;
/**
* 缩略图模板
* @param $fileName
...
...
@@ -39,7 +41,7 @@ class Images
{
return
self
::
url
(
$fileName
,
$bucket
,
$mode
);
}
/**
*
* @param unknown $fileName
...
...
@@ -48,13 +50,13 @@ class Images
*/
public
static
function
getSourceUrl
(
$fileName
,
$bucket
=
'yhfair'
)
{
if
(
stripos
(
$fileName
,
'http://'
)
===
0
)
{
if
(
stripos
(
$fileName
,
'http://'
)
===
0
)
{
return
$fileName
;
}
$domain
=
self
::
getDomain
(
$bucket
,
$fileName
);
return
'http://'
.
$domain
.
'/'
.
$bucket
.
$fileName
;
}
/**
* 根据尺寸获得图片url
* @param unknown $fileName
...
...
@@ -64,14 +66,17 @@ class Images
* @param string $bucket
* @return mixed
*/
public
static
function
getImageUrl
(
$fileName
,
$width
,
$height
,
$mode
=
1
,
$bucket
=
'goodsimg'
)
public
static
function
getImageUrl
(
$fileName
,
$width
,
$height
,
$mode
=
2
,
$bucket
=
'goodsimg'
)
{
if
(
stripos
(
$fileName
,
'http://'
)
!==
0
){
$fileName
=
self
::
template
(
$fileName
,
$bucket
,
$mode
);
}
return
strtr
(
$fileName
,
array
(
'{width}'
=>
$width
,
'{height}'
=>
$height
,
'{mode}'
=>
$mode
));
if
(
!
is_string
(
$fileName
))
{
return
self
::
template
(
self
::
$default_image
,
$bucket
,
$mode
);
}
if
(
stripos
(
$fileName
,
'http://'
)
!==
0
)
{
$fileName
=
self
::
template
(
$fileName
,
$bucket
,
$mode
);
}
return
strtr
(
$fileName
,
array
(
'{width}'
=>
$width
,
'{height}'
=>
$height
,
'{mode}'
=>
$mode
));
}
/**
* 获取图片URL模板
* @param $fileName
...
...
@@ -84,13 +89,13 @@ class Images
$domain
=
self
::
getDomain
(
$bucket
,
$fileName
);
return
self
::
getImgTemplateUrl
(
$bucket
.
$fileName
,
$mode
,
$domain
);
}
public
static
function
getDomain
(
$bucket
,
$fileName
)
{
$domain
=
''
;
if
(
!
empty
(
self
::
$domainList
[
$bucket
]))
{
if
(
!
empty
(
self
::
$domainList
[
$bucket
]))
{
$domain
=
self
::
$domainList
[
$bucket
];
}
else
{
}
else
{
$node
=
mb_substr
(
$fileName
,
15
,
2
);
if
(
!
empty
(
self
::
$domainList
[
$node
]))
{
$domainList
=
self
::
$domainList
[
$node
];
...
...
@@ -100,7 +105,7 @@ class Images
}
return
$domain
;
}
/**
* 获取模板的图片地址
* @param $fileName
...
...
@@ -118,13 +123,13 @@ class Images
$baseUrl
=
self
::
MakeBaseUrl
(
$domain
,
$fileName
);
return
self
::
MakeTemplateRequest
(
$baseUrl
);
}
private
static
function
MakeBaseUrl
(
$domain
,
$key
)
// => $baseUrl
{
$keyEsc
=
str_replace
(
"%2F"
,
"/"
,
rawurlencode
(
$key
));
return
"http://
$domain
/
$keyEsc
"
;
}
private
static
function
MakeTemplateRequest
(
$url
)
{
$ops
=
array
();
...
...
@@ -135,7 +140,8 @@ class Images
if
(
empty
(
$ops
))
{
return
$url
;
}
return
$url
.
"?imageView/"
.
implode
(
'/'
,
$ops
);
}
}
\ No newline at end of file
}
...
...
script/nginx/conf/vhosts/nginx.test.yohobuy.conf
View file @
462022e
...
...
@@ -237,25 +237,6 @@ server
proxy_set_header
X
-
Forwarded
-
For
$
proxy_add_x_forwarded_for
;
proxy_set_header
Accept
-
Encoding
"gzip"
;
}
# # 子域名
# if ($host = "sale.test.yoho.cn" ) {
# proxy_redirect off;
# proxy_pass http://61.155.222.162;
# proxy_set_header Host cuxiao.m.yohobuy.com;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Accept-Encoding "gzip";
# }
# if ($host = "cuxiao.test.yoho.cn" ) {
# proxy_redirect off;
# proxy_pass http://101.201.176.121;
# proxy_set_header Host cuxiao.m.yohobuy.com;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Accept-Encoding "gzip";
# }
#location ~* \.html$ {
# root /Data/code/git/yohobuy/assets;
...
...
@@ -274,18 +255,18 @@ server
location
=/
sitemap
.
xml
{
expires
1
d
;
}
location
=/
robots
.
txt
{
location
=/
robots
.
txt
{
expires
1
d
;
}
location
/ {
proxy_redirect
off
;
proxy_pass
http
://
yohobuy
;
proxy_set_header
Host
$
host
;
proxy_set_header
X
-
Real
-
IP
$
remote_addr
;
proxy_set_header
X
-
Forwarded
-
For
$
proxy_add_x_forwarded_for
;
proxy_set_header
Accept
-
Encoding
"gzip"
;
}
#location / {
# proxy_redirect off;
# proxy_pass http://yohobuy;
# proxy_set_header Host $host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Accept-Encoding "gzip";
# }
}
...
...
@@ -310,4 +291,33 @@ server
expires
30
d
;
}
}
server
{
listen
80
;
server_name
sale
.
test
.
yoho
.
cn
;
location
/ {
proxy_redirect
off
;
proxy_pass
http
://
61
.
155
.
222
.
163
;
proxy_set_header
Host
sale
.
m
.
yohobuy
.
com
;
proxy_set_header
X
-
Real
-
IP
$
remote_addr
;
proxy_set_header
X
-
Forwarded
-
For
$
proxy_add_x_forwarded_for
;
proxy_set_header
Accept
-
Encoding
"gzip"
;
}
}
server
{
listen
80
;
server_name
cuxiao
.
test
.
yoho
.
cn
;
location
/ {
proxy_redirect
off
;
proxy_pass
http
://
101
.
201
.
176
.
121
;
proxy_set_header
Host
cuxiao
.
m
.
yohobuy
.
com
;
proxy_set_header
X
-
Real
-
IP
$
remote_addr
;
proxy_set_header
X
-
Forwarded
-
For
$
proxy_add_x_forwarded_for
;
proxy_set_header
Accept
-
Encoding
"gzip"
;
}
}
\ No newline at end of file
...
...
static/dist/myohobuy/0.0.6/index-debug.js
View file @
462022e
...
...
@@ -294,13 +294,62 @@ if ($brandList.length > 0) {
});
}
myHammer
=
new
Hammer
(
$
(
'#right-bar .con'
).
find
(
'b'
).
unbind
()[
0
]);
myHammer
.
on
(
'tap'
,
function
(
e
)
{
var
index
=
$
(
this
).
index
();
if
(
$
(
'#right-bar .con'
).
find
(
'b'
).
unbind
()[
0
])
{
myHammer
=
new
Hammer
(
$
(
'#right-bar .con'
).
find
(
'b'
).
unbind
()[
0
]);
myHammer
.
on
(
'tap'
,
function
(
e
)
{
var
index
=
$
(
this
).
index
();
if
(
$
(
'.bar-'
+
index
).
size
()
>
0
)
{
document
.
body
.
scrollTop
=
parseInt
(
$
(
'.bar-'
+
index
)[
0
].
offsetTop
)
-
parseInt
(
brandSwipe
-
1
);
}
if
(
$
(
'.bar-'
+
index
).
size
()
>
0
)
{
document
.
body
.
scrollTop
=
parseInt
(
$
(
'.bar-'
+
index
)[
0
].
offsetTop
)
-
parseInt
(
brandSwipe
-
1
);
}
});
}
function
searchResult
(
type
)
{
var
keyword
=
$
(
'#keyword'
).
val
(),
gender
=
$
(
'#gender'
).
val
();
$
.
get
(
'/brands/search'
,
{
keyword
:
keyword
,
gender
:
gender
,
type
:
type
},
function
(
html
)
{
$
(
'.search-result'
).
html
(
html
);
});
}
$
(
'#keyword'
).
on
(
'keyup'
,
function
()
{
searchResult
(
0
);
}).
on
(
'keydown'
,
function
()
{
$
(
this
).
closest
(
'.search-box'
).
css
(
'width'
,
'11.25rem'
);
$
(
'.search-action'
).
show
();
}).
on
(
'blur'
,
function
()
{
$
(
this
).
closest
(
'.search-box'
).
css
(
'width'
,
'12.5rem'
);
$
(
'.search-action'
).
hide
();
});
$
(
'#search-btn'
).
on
(
'tap'
,
function
()
{
searchResult
(
1
);
});
$
(
'.clear-text'
).
on
(
'tap'
,
function
()
{
$
(
'#keyword'
).
val
(
''
).
trigger
(
'input'
);
});
$
(
'form.search-box'
).
on
(
'submit'
,
function
()
{
return
false
;
});
$
(
'.clear-history'
).
on
(
'tap'
,
function
()
{
// setcookie('h_brands', '', {
// expire: -1,
// path: '/',
// domain: '.m.yohobuy.com'
// });
$
(
'#history-keyword'
).
remove
();
$
(
this
).
hide
();
});
});
...
...
@@ -444,7 +493,9 @@ likeHammer.on('tap', function(e) {
success
:
function
(
data
)
{
if
(
data
.
code
===
200
)
{
$this
.
toggleClass
(
'like'
);
}
else
if
(
data
.
code
===
400
)
{
}
else
if
(
data
.
code
===
400
||
data
.
code
===
412
)
{
//code:412 用户ID不正确,即未登录
tip
.
show
(
'未登录'
);
}
else
{
tip
.
show
(
data
.
message
);
...
...
@@ -1226,6 +1277,7 @@ navHammer.on('tap', function(event) {
});
event
.
srcEvent
.
stopPropagation
();
return
false
;
});
mobileWrapHammer
=
new
Hammer
(
$
(
'.mobile-wrap'
)[
0
]);
...
...
@@ -1243,11 +1295,12 @@ mobileWrapHammer.on('tap', function(e) {
$
(
'.overlay'
).
hide
();
},
300
);
e
.
srcEvent
.
stopPropagation
();
return
false
;
}
});
//点击一级导航,弹出二级导航
$sideNav
.
on
(
'touch
start
'
,
'li'
,
function
()
{
$sideNav
.
on
(
'touch
end
'
,
'li'
,
function
()
{
if
(
$
(
this
).
find
(
'.sub-nav'
).
size
()
>
0
)
{
$
(
'.sub-nav'
).
removeClass
(
'show'
);
$
(
this
).
find
(
'.sub-nav'
).
addClass
(
'show'
);
...
...
@@ -1256,10 +1309,12 @@ $sideNav.on('touchstart', 'li', function () {
//返回一级导航,收起二级导航
$
(
'.sub-nav'
).
each
(
function
()
{
$
(
this
).
find
(
'li'
).
eq
(
0
).
on
(
'touch
start
'
,
function
(
e
)
{
$
(
this
).
find
(
'li'
).
eq
(
0
).
on
(
'touch
end
'
,
function
(
e
)
{
$
(
'.sub-nav'
).
removeClass
(
'show'
);
e
.
stopPropagation
()
;
return
false
;
});
}).
on
(
'touchend'
,
function
()
{
$
(
'.sub-nav'
).
find
(
'li'
).
removeClass
(
'current'
);
});
//头部banner轮播
...
...
@@ -1375,7 +1430,7 @@ function tsAnimate() {
setTimeout
(
tsAnimate
,
3000
);
});
define
(
"js/home/maybe-like"
,
[
"jquery"
,
"lazyload"
],
function
(
require
,
exports
,
module
){
define
(
"js/home/maybe-like"
,
[
"jquery"
,
"
hammer"
,
"
lazyload"
],
function
(
require
,
exports
,
module
){
/**
* “你可能喜欢”模块JS
* @author: liangzhifeng<zhifeng.liang@yoho.cn>
...
...
@@ -1383,10 +1438,12 @@ define("js/home/maybe-like", ["jquery","lazyload"], function(require, exports, m
*/
var
$
=
require
(
"jquery"
),
Hammer
=
require
(
"hammer"
),
tip
=
require
(
"js/plugin/tip"
),
lazyLoad
=
require
(
"lazyload"
);
var
winH
=
$
(
window
).
height
(),
var
navHammer
,
winH
=
$
(
window
).
height
(),
loadMoreH
=
$
(
'#load-more'
).
height
(),
$goodList
=
$
(
'#goods-list'
),
loading
=
false
,
...
...
@@ -1413,93 +1470,103 @@ if (kidsType) {
$curNav
=
$navList
.
children
(
'.focus'
);
$
(
'#maybe-like-nav'
).
delegate
(
'li'
,
'tap'
,
function
()
{
var
$this
=
$
(
this
),
$goods
=
$
(
'.goods-list'
),
$content
;
if
(
lifestyleType
)
{
navHammer
=
new
Hammer
(
$navList
[
0
]);
navHammer
.
on
(
'tap'
,
function
(
e
)
{
var
$this
=
$
(
e
.
target
).
closest
(
'li'
),
$goods
=
$
(
'.goods-list'
),
$content
;
if
(
$this
.
hasClass
(
'focus'
))
{
return
;
}
if
(
$this
.
hasClass
(
'focus'
))
{
return
;
}
index
=
$this
.
index
();
index
=
$this
.
index
();
$this
.
addClass
(
'focus'
);
$curNav
.
removeClass
(
'focus'
);
$this
.
addClass
(
'focus'
);
$curNav
.
removeClass
(
'focus'
);
$goods
.
not
(
'.hide'
).
addClass
(
'hide'
);
$content
=
$goods
.
eq
(
index
);
$content
.
removeClass
(
'hide'
);
$goods
.
not
(
'.hide'
).
addClass
(
'hide'
);
$content
=
$goods
.
eq
(
index
);
$content
.
removeClass
(
'hide'
);
$curNav
=
$this
;
$curNav
=
$this
;
$
(
document
).
trigger
(
'scroll'
);
//Trigger lazyLoad
});
}
$
(
document
).
trigger
(
'scroll'
);
//Trigger lazyLoad
});
//srcoll to load more
$
(
window
).
scroll
(
function
()
{
if
(
$
(
window
).
scrollTop
()
+
winH
>=
$
(
document
).
height
()
-
loadMoreH
-
50
)
{
if
(
loading
)
{
return
;
}
loading
=
true
;
//num = $goodList.find('.good-info').length;
$
.
ajax
({
type
:
'GET'
,
url
:
url
,
data
:
{
page
:
page
+
1
},
success
:
function
(
data
)
{
if
(
data
===
' '
)
{
loading
=
true
;
if
(
gender
)
{
if
(
gender
===
'1,3'
)
{
url
=
'/boys/bottomBanner'
;
}
else
{
url
=
'/girls/bottomBanner'
;
}
$
.
ajax
({
type
:
'GET'
,
url
:
url
,
success
:
function
(
data
)
{
if
(
data
&&
data
[
0
]
&&
data
[
0
].
banner
[
0
])
{
$
(
'#load-more-img'
).
show
();
$
(
'#load-more-img a'
).
attr
(
'url'
,
data
[
0
].
banner
[
0
].
url
);
$
(
'#load-more-img a > img'
).
attr
(
'src'
,
data
[
0
].
banner
[
0
].
img
);
}
},
error
:
function
()
{
}
});
function
search
()
{
if
(
loading
)
{
return
;
}
loading
=
true
;
//num = $goodList.find('.good-info').length;
$
.
ajax
({
type
:
'GET'
,
url
:
url
,
data
:
{
page
:
page
+
1
},
success
:
function
(
data
)
{
if
(
data
===
' '
)
{
loading
=
true
;
if
(
gender
)
{
if
(
gender
===
'1,3'
)
{
url
=
'/boys/bottomBanner'
;
}
else
{
url
=
'/girls/bottomBanner'
;
}
return
;
$
.
ajax
({
type
:
'GET'
,
url
:
url
,
success
:
function
(
data
)
{
if
(
data
)
{
$
(
'#load-more-img'
).
show
();
$
(
'#load-more-img a'
).
attr
(
'href'
,
data
.
url
);
$
(
'#load-more-img a > img'
).
attr
(
'src'
,
data
.
img
);
}
},
error
:
function
()
{
}
});
}
return
;
}
num
=
$goodList
.
find
(
'.good-info'
).
length
;
num
=
$goodList
.
find
(
'.good-info'
).
length
;
$goodList
.
append
(
data
);
$goodList
.
append
(
data
);
// 2015/10/31 fei.hong: 修复第一页分页不显示图片的问题
if
(
num
===
0
)
{
lazyLoad
(
$goodList
.
find
(
'.good-info'
).
find
(
'img.lazy'
));
}
else
{
lazyLoad
(
$goodList
.
find
(
'.good-info:gt('
+
(
num
-
1
)
+
')'
).
find
(
'img.lazy'
));
}
loading
=
false
;
page
++
;
},
error
:
function
()
{
tip
.
show
(
'网络断开连接了~'
);
loading
=
false
;
// 2015/10/31 fei.hong: 修复第一页分页不显示图片的问题
if
(
num
===
0
)
{
lazyLoad
(
$goodList
.
find
(
'.good-info'
).
find
(
'img.lazy'
));
}
else
{
lazyLoad
(
$goodList
.
find
(
'.good-info:gt('
+
(
num
-
1
)
+
')'
).
find
(
'img.lazy'
));
}
});
}
loading
=
false
;
page
++
;
},
error
:
function
()
{
tip
.
show
(
'网络断开连接了~'
);
loading
=
false
;
}
});
}
$
(
'.maybe-like p'
).
on
(
'touchstart'
,
function
(
e
)
{
search
();
});
//srcoll to load more
$
(
window
).
scroll
(
function
()
{
if
(
$
(
window
).
scrollTop
()
+
winH
>=
$
(
document
).
height
()
-
loadMoreH
-
50
)
{
search
();
}
});
});
define
(
"js/index/entry"
,
[
"jquery"
,
"hammer"
],
function
(
require
,
exports
,
module
){
...
...
@@ -1511,6 +1578,7 @@ define("js/index/entry", ["jquery","hammer"], function(require, exports, module)
require
(
"js/index/search"
);
require
(
"js/index/footer"
);
require
(
"js/index/channel"
);
});
define
(
"js/index/search"
,
[
"jquery"
,
"hammer"
],
function
(
require
,
exports
,
module
){
/**
...
...
@@ -1701,6 +1769,49 @@ if ($('#float-layer-btn') && $('#float-layer-btn')[0]) {
}
});
define
(
"js/index/channel"
,
[
"jquery"
],
function
(
require
,
exports
,
module
){
/**
* 频道选择页面顶部搜索
* @author: bikai<kai.bi@yoho.cn>
* @date: 2015/10/28
*/
var
$
=
require
(
"jquery"
);
var
$searchBox
=
$
(
'.search-box'
),
$indexSearch
=
$
(
'.index-search'
),
$indexLogo
=
$
(
'.index-logo'
);
$searchBox
.
find
(
'input'
).
on
(
'focus'
,
function
()
{
$indexLogo
.
css
({
width
:
0
});
$searchBox
.
css
({
width
:
'12.8rem'
});
$indexSearch
.
css
({
width
:
'15.5rem'
});
$
(
'.clear-text, .no-search'
).
show
();
}).
on
(
'blur'
,
function
()
{
$indexLogo
.
css
({
width
:
'5.4rem'
});
$searchBox
.
css
({
width
:
'8.8rem'
});
$indexSearch
.
css
({
width
:
'9.6rem'
});
$
(
'.clear-text, .no-search'
).
hide
();
});
$searchBox
.
find
(
'.clear-text'
).
click
(
function
()
{
$searchBox
.
find
(
'input'
).
val
(
''
).
trigger
(
'focus'
);
});
$searchBox
.
find
(
'.search-icon'
).
click
(
function
()
{
$indexSearch
.
submit
();
});
});
define
(
"js/passport/entry"
,
[
"jquery"
],
function
(
require
,
exports
,
module
){
/**
* 注册、登录、密码找回打包入口
...
...
@@ -2644,6 +2755,8 @@ var defaultOpt = {
dayLimit
:
1
};
var
storeOpt
=
$
.
extend
({},
defaultOpt
);
//存储默认筛选条件以便重置
var
now
=
new
Date
(),
month
=
now
.
getMonth
()
+
1
,
date
=
now
.
getDate
();
...
...
@@ -2870,8 +2983,7 @@ $.ajax({
//切换active状态到$pre上
$pre
.
addClass
(
'active'
);
$pre
.
siblings
(
'.filter'
).
removeClass
(
'active'
);
},
missStatus
:
true
}
});
}
});
...
...
@@ -2946,6 +3058,10 @@ navHammer.on('tap', function(e) {
$dgc
.
removeClass
(
'hide'
);
break
;
}
//重置筛选项
filter
.
resetFilter
();
defaultOpt
=
$
.
extend
({},
storeOpt
);
}
$active
.
removeClass
(
'active'
);
...
...
@@ -2993,13 +3109,6 @@ var missStatus; //是否忽略选中状态
//隐藏筛选界面
function
hideFilter
()
{
$filter
.
addClass
(
'hide'
);
if
(
missStatus
)
{
//重置一级筛选项选中状态
$filter
.
find
(
'.classify-item.active'
).
removeClass
(
'active'
);
$filter
.
find
(
'.classify-item:first-child'
).
addClass
(
'active'
);
}
}
//显示筛选界面
...
...
@@ -3007,6 +3116,7 @@ function showFilter() {
$filter
.
removeClass
(
'hide'
);
}
//主筛选项Tap事件句柄
function
classifyTapEvt
(
$this
)
{
if
(
$this
.
hasClass
(
'active'
))
{
return
;
...
...
@@ -3017,9 +3127,8 @@ function classifyTapEvt($this) {
$this
.
addClass
(
'active'
);
}
function
subClassifyTapEvt
(
$this
)
{
var
id
=
$this
.
data
(
'id'
);
//子筛选项选中处理
function
setSubClassify
(
$this
)
{
var
$sub
=
$this
.
closest
(
'.sub-classify'
);
var
$shower
=
$sub
.
siblings
(
'.shower'
);
...
...
@@ -3048,6 +3157,17 @@ function subClassifyTapEvt($this) {
$shower
.
removeClass
(
'default'
);
}
return
$sub
;
}
//子筛选项Tap句柄
function
subClassifyTapEvt
(
$this
)
{
var
id
=
$this
.
data
(
'id'
);
var
$sub
;
$sub
=
setSubClassify
(
$this
);
if
(
fCbFn
)
{
fCbFn
({
type
:
$sub
.
data
(
'type'
),
...
...
@@ -3056,12 +3176,6 @@ function subClassifyTapEvt($this) {
}
hideFilter
();
//重置选中状态
if
(
missStatus
)
{
$this
.
removeClass
(
'chosed'
);
$sub
.
children
(
':first-child'
).
addClass
(
'chosed'
);
}
}
//初始化筛选
...
...
@@ -3109,11 +3223,28 @@ function initFilter(opt) {
});
}
//重置筛选面板
function
resetFilter
()
{
if
(
typeof
$filter
===
'undefined'
)
{
return
;
}
//重置子筛选项
$
(
'.sub-classify'
).
each
(
function
()
{
setSubClassify
(
$
(
this
).
children
(
':first-child'
));
});
//重置主筛选项
classifyTapEvt
(
$
(
'.classify > :first-child'
));
}
exports
.
initFilter
=
initFilter
;
exports
.
showFilter
=
showFilter
;
exports
.
hideFilter
=
hideFilter
;
exports
.
resetFilter
=
resetFilter
;
});
define
(
"js/product/newsale/discount"
,
[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
require
,
exports
,
module
){
/**
...
...
@@ -3877,6 +4008,8 @@ if ($brandHeader.length > 0) {
success
:
function
(
data
)
{
if
(
data
.
code
===
200
)
{
$this
.
toggleClass
(
'coled'
);
}
else
if
(
data
.
code
===
400
||
data
.
code
===
412
)
{
tip
.
show
(
'未登录'
);
}
else
{
tip
.
show
(
data
.
message
);
}
...
...
static/dist/myohobuy/0.0.6/index.css
View file @
462022e
This diff could not be displayed because it is too large.
static/dist/myohobuy/0.0.6/index.js
View file @
462022e
define
(
"index"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"mlellipsis"
,
"iscroll-probe"
,
"index"
],
function
(
e
,
a
,
s
){
var
n
;
e
(
"js/common"
),
e
(
"js/category/entry"
),
e
(
"js/guang/entry"
),
e
(
"js/home/entry"
),
e
(
"js/index/entry"
),
e
(
"js/passport/entry"
),
e
(
"js/product/entry"
),
s
.
exports
=
n
}),
define
(
"js/common"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
,
s
,
n
=
document
.
cookie
;
return
document
.
cookie
&&
""
!==
document
.
cookie
&&
(
s
=
n
.
indexOf
(
e
+
"="
),
s
>-
1
&&
(
s
+=
e
.
length
+
1
,
a
=
decodeURIComponent
(
d
.
trim
(
n
.
substring
(
s
,
n
.
indexOf
(
";"
,
s
)))))),
a
}
function
i
(
e
,
a
,
s
){
var
n
,
i
,
t
,
o
,
r
=
""
;
"undefined"
!=
typeof
a
&&
(
s
=
s
||
{},
null
===
a
&&
(
a
=
""
,
s
.
expires
=-
1
),
s
.
expires
&&
(
"number"
==
typeof
s
.
expires
||
s
.
expires
.
toUTCString
)
&&
(
"number"
==
typeof
s
.
expires
?(
o
=
new
Date
,
o
.
setTime
(
o
.
getTime
()
+
24
*
s
.
expires
*
60
*
60
*
1
e3
)):
o
=
s
.
expires
,
r
=
"; expires="
+
o
.
toUTCString
()),
n
=
s
.
path
?
"; path="
+
s
.
path
:
""
,
i
=
s
.
domain
?
"; domain="
+
s
.
domain
:
""
,
t
=
s
.
secure
?
"; secure"
:
""
,
document
.
cookie
=
[
e
,
"="
,
encodeURIComponent
(
a
),
r
,
n
,
i
,
t
].
join
(
""
))}
function
t
(){
var
e
,
a
=
n
(
"_UID"
);
return
"undefined"
==
typeof
a
?
0
:(
e
=
a
.
split
(
"::"
),
"undefined"
==
typeof
e
||
e
.
length
<
4
?
0
:
e
)}
function
o
(){
var
e
=
t
();
return
0
===
e
?
0
:
e
[
1
]}
function
r
(){
var
e
=
n
(
"_g"
);
return
"undefined"
==
typeof
e
?
""
:
JSON
.
parse
(
e
).
k
}
function
l
(){
0
!==
c
.
length
&&
(
d
(
"body"
).
height
()
<
d
(
window
).
height
()
-
u
?
c
.
addClass
(
"bottom"
):
c
.
removeClass
(
"bottom"
))}
var
d
=
e
(
"jquery"
),
c
=
d
(
"#yoho-footer"
),
u
=
120
;
!
function
(){
var
e
=
c
.
children
(
".op-row"
),
a
=
t
();
d
(
"body"
).
height
()
<
d
(
window
).
height
()
-
u
&&
c
.
addClass
(
"bottom"
),
0
===
a
?
e
.
prepend
(
'<a href="http://m.yohobuy.com/signin.html">登录</a><span class="sep-line">|</span><a href="http://m.yohobuy.com/reg.html">注册</a>'
):
e
.
prepend
(
'Hi,<a class="user-name" href="http://m.yohobuy.com/home?tmp='
+
Math
.
random
()
+
'">'
+
a
[
0
]
+
'</a><a href="http://m.yohobuy.com/passport/signout/index?token='
+
a
[
3
]
+
'">退出</a>'
),
c
.
removeClass
(
"hide"
)}(),
window
.
cookie
=
n
,
window
.
setCookie
=
i
,
window
.
getUser
=
t
,
window
.
getUid
=
o
,
window
.
getShoppingKey
=
r
,
window
.
rePosFooter
=
l
}),
define
(
"js/category/entry"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
e
(
"js/category/index"
),
e
(
"js/category/brand"
)}),
define
(
"js/category/index"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
t
(
".category-nav"
),
l
=
t
(
".category-container"
),
d
=
l
.
children
(
".content"
),
c
=
d
.
not
(
".hide"
);
t
(
"#search-input"
).
focus
(
function
(){
t
(
this
).
blur
()}),
n
=
new
o
(
r
[
0
]),
n
.
on
(
"tap"
,
function
(
e
){
var
a
=
t
(
e
.
target
).
closest
(
"li"
),
s
=
a
.
index
();
a
.
hasClass
(
"focus"
)
||
(
r
.
find
(
"li.focus"
).
removeClass
(
"focus"
),
a
.
addClass
(
"focus"
),
c
.
addClass
(
"hide"
),
c
=
d
.
eq
(
s
).
removeClass
(
"hide"
))}),
i
=
new
o
(
l
[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
n
,
i
=
t
(
e
.
target
);
if
(
s
=
i
.
closest
(
".p-level-item"
),
s
.
length
>
0
){
if
(
n
=
s
.
index
(),
a
=
i
.
closest
(
".content"
).
find
(
".sub-level"
),
i
.
hasClass
(
"focus"
))
return
;
i
.
closest
(
".primary-level"
).
children
(
".focus"
).
removeClass
(
"focus"
),
i
.
addClass
(
"focus"
),
a
.
not
(
".hide"
).
addClass
(
"hide"
),
a
.
eq
(
n
).
removeClass
(
"hide"
)}})}),
define
(
"js/category/brand"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
e
(
"swiper"
),
l
=
e
(
"lazyload"
),
d
=
t
(
".brand-list"
),
c
=
t
(
".newbrand-search"
).
outerHeight
(),
u
=
t
(
".yoho-header"
).
outerHeight
(),
p
=
parseInt
(
c
)
+
parseInt
(
u
)
-
1
;
n
=
new
r
(
".swiper-container"
,{
lazyLoading
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
pagination
:
".swiper-pagination .pagination-inner"
}),
l
(
t
(
"img.lazy"
)),
t
(
".yoho-header"
).
css
({
"z-index"
:
2
,
position
:
"fixed"
}),
t
(
".banner-top"
).
css
(
"padding-top"
,
"90px"
),
d
.
length
>
0
&&
t
(
window
).
scroll
(
function
(){
var
e
=
t
(
window
).
scrollTop
();
t
(
".brand-list"
).
each
(
function
(){
var
a
=
t
(
this
).
offset
().
top
-
p
;
e
>=
a
?(
d
.
find
(
".title-bar"
).
css
(
"position"
,
"static"
),
t
(
this
).
find
(
".title-bar"
).
css
({
position
:
"fixed"
,
top
:
p
})):
t
(
this
).
find
(
".title-bar"
).
css
(
"position"
,
"static"
)})}),
i
=
new
o
(
t
(
"#right-bar .con"
).
find
(
"b"
).
unbind
()[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
=
t
(
this
).
index
();
t
(
".bar-"
+
a
).
size
()
>
0
&&
(
document
.
body
.
scrollTop
=
parseInt
(
t
(
".bar-"
+
a
)[
0
].
offsetTop
)
-
parseInt
(
p
-
1
))})}),
define
(
"js/guang/entry"
,[
"jquery"
,
"hammer"
,
"lazyload"
,
"swiper"
,
"mlellipsis"
,
"iscroll-probe"
,
"index"
],
function
(
e
,
a
,
s
){
e
(
"js/guang/plus-star/list"
),
e
(
"js/guang/plus-star/detail"
),
e
(
"js/guang/home"
),
e
(
"js/guang/list"
),
e
(
"js/guang/detail"
)}),
define
(
"js/guang/plus-star/list"
,[
"jquery"
,
"hammer"
,
"lazyload"
,
"swiper"
,
"index"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
e
(
"lazyload"
),
l
=
e
(
"swiper"
),
d
=
t
(
"#nav-tab > li"
),
c
=
t
(
"#ps-content > .content"
);
r
(
t
(
"img.lazy"
)),
n
=
new
l
(
".swiper-container"
,{
lazyLoading
:
!
0
,
pagination
:
".swiper-pagination"
}),
i
=
new
o
(
document
.
getElementById
(
"nav-tab"
)),
i
.
on
(
"tap"
,
function
(
e
){
var
a
=
t
(
e
.
target
).
closest
(
"li"
);
a
.
hasClass
(
"focus"
)
||
(
d
.
toggleClass
(
"focus"
),
c
.
toggleClass
(
"hide"
),
t
(
document
).
trigger
(
"scroll"
))})}),
define
(
"js/guang/plus-star/detail"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
,
o
,
r
=
e
(
"jquery"
),
l
=
e
(
"hammer"
),
d
=
e
(
"mlellipsis"
),
c
=
e
(
"lazyload"
),
u
=
r
(
"#intro"
),
p
=
r
(
"#intro-more-txt"
),
h
=
r
(
"#related-infos-container"
),
f
=
e
(
"js/guang/info"
),
g
=
e
(
"js/plugin/tip"
),
m
=
r
(
"#brand-info"
).
data
(
"id"
);
d
.
init
(),
c
(
r
(
"img.lazy"
)),
u
[
0
].
mlellipsis
(
3
),
setTimeout
(
function
(){
n
=
u
.
text
(),
i
=
u
.
attr
(
"title"
)}),
f
.
initInfosEvt
(
h
),
t
=
new
l
(
document
.
getElementById
(
"more-intro"
)),
t
.
on
(
"tap"
,
function
(
e
){
var
a
=
r
(
e
.
target
).
closest
(
"#more-intro"
);
a
.
toggleClass
(
"spread"
),
a
.
hasClass
(
"spread"
)?(
u
.
text
(
i
),
p
.
text
(
"收起"
)):(
u
.
text
(
n
),
p
.
text
(
"more"
),
r
(
window
).
scrollTop
(
0
,
400
)),
e
.
preventDefault
()}),
o
=
new
l
(
document
.
getElementById
(
"brand-like"
)),
o
.
on
(
"tap"
,
function
(
e
){
var
a
=
"ok"
,
s
=
r
(
e
.
target
);
e
.
preventDefault
(),
s
.
hasClass
(
"like"
)
&&
(
a
=
"cancel"
),
r
.
ajax
({
type
:
"POST"
,
url
:
"/product/opt/favoriteBrand"
,
data
:{
id
:
m
,
opt
:
a
},
success
:
function
(
e
){
200
===
e
.
code
?
s
.
toggleClass
(
"like"
):
400
===
e
.
code
?
g
.
show
(
"未登录"
):
g
.
show
(
e
.
message
)},
error
:
function
(){
g
.
show
(
"网络断开连接了~"
)}})})}),
define
(
"js/guang/info"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
d
(
e
.
find
(
"img.lazy"
)),
e
.
each
(
function
(){
var
e
=
o
(
this
),
a
=
e
.
find
(
".info-title"
),
s
=
e
.
find
(
".info-text"
);
a
[
0
].
mlellipsis
(
2
),
s
[
0
].
mlellipsis
(
2
)})}
function
i
(
e
){
var
a
=
new
r
(
e
[
0
]);
a
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
n
=
o
(
e
.
target
),
i
=
"ok"
;
a
=
n
.
closest
(
".like-btn"
),
a
.
length
>
0
&&
(
a
.
hasClass
(
"like"
)
&&
(
i
=
"cancel"
),
s
=
n
.
closest
(
".guang-info"
),
o
.
ajax
({
type
:
"POST"
,
url
:
"/guang/opt/praiseArticle"
,
data
:{
id
:
s
.
data
(
"id"
),
opt
:
i
},
success
:
function
(
e
){
var
s
=
e
.
code
;
200
===
s
&&
(
a
.
next
(
".like-count"
).
text
(
e
.
data
),
a
.
toggleClass
(
"like"
))},
error
:
function
(){
c
.
show
(
"网络断开连接了~"
)}}))}),
n
(
e
.
find
(
".guang-info"
))}
function
t
(
e
,
a
){
var
s
;
g
||
a
.
end
||
(
1
===
a
.
page
&&
u
.
showLoadingMask
(),
s
=
e
.
find
(
".guang-info"
).
length
,
g
=!
0
,
o
.
ajax
({
type
:
"GET"
,
url
:
" /guang/index/page"
,
data
:
a
,
success
:
function
(
i
){
var
t
;
return
" "
===
i
?(
a
.
end
=!
0
,
g
=!
1
,
h
.
addClass
(
"hide"
),
void
f
.
removeClass
(
"hide"
)):(
e
.
append
(
i
),
t
=
s
>
0
?
e
.
find
(
".guang-info:gt("
+
(
s
-
1
)
+
")"
):
e
.
find
(
".guang-info"
),
n
(
t
),
1
===
a
.
page
&&
u
.
hideLoadingMask
(),
a
.
page
++
,
void
(
g
=!
1
))},
error
:
function
(){
c
.
show
(
"网络断开连接了~"
),
g
=!
1
}}))}
var
o
=
e
(
"jquery"
),
r
=
e
(
"hammer"
),
l
=
e
(
"mlellipsis"
),
d
=
e
(
"lazyload"
),
c
=
e
(
"js/plugin/tip"
),
u
=
e
(
"js/plugin/loading"
),
p
=
o
(
"#load-more-info"
),
h
=
o
(
""
),
f
=
o
(
""
),
g
=!
1
;
l
.
init
(),
p
.
length
>
0
&&
(
h
=
p
.
children
(
".loading"
),
f
=
p
.
children
(
".no-more"
)),
a
.
initInfosEvt
=
i
,
a
.
setLazyLoadAndMellipsis
=
n
,
a
.
loadMore
=
t
}),
define
(
"js/plugin/tip"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(
e
,
a
){
var
s
,
n
;
"undefined"
!=
typeof
e
&&
(
s
=
e
.
toString
(),
n
=
a
&&
a
>
0
?
a
:
2
e3
,
i
.
text
(
s
).
show
(),
t
=
setTimeout
(
function
(){
"block"
===
i
.
css
(
"display"
)
&&
i
.
hide
()},
n
))}
var
i
,
t
,
o
=
e
(
"jquery"
);
!
function
(){
var
e
=
'<div id="yoho-tip" class="yoho-tip"></div>'
;
o
(
".yoho-page"
).
append
(
e
),
i
=
o
(
"#yoho-tip"
),
i
.
on
(
"tap"
,
function
(){
i
.
hide
(),
clearTimeout
(
t
)})}(),
a
.
show
=
n
}),
define
(
"js/plugin/loading"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(){
t
.
removeClass
(
"hide"
)}
function
i
(){
t
.
addClass
(
"hide"
)}
var
t
,
o
=
e
(
"jquery"
),
r
=
o
(
".yoho-page"
);
!
function
(){
var
e
=
'<div class="loading-mask hide"><div class="loading"></div></div>'
;
r
.
append
(
e
),
t
=
r
.
children
(
".loading-mask"
)}(),
a
.
showLoadingMask
=
n
,
a
.
hideLoadingMask
=
i
}),
define
(
"js/guang/home"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"mlellipsis"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
e
(
"swiper"
),
l
=
e
(
"js/guang/info"
),
d
=
l
.
loadMore
,
c
=
t
(
"#load-more-info"
),
u
=
t
(
""
),
p
=
t
(
""
),
h
=
t
(
window
).
height
(),
f
=
c
.
height
(),
g
=
t
(
"#info-list"
),
m
=
g
.
children
(
".info-list"
),
v
=
t
(
"#guang-nav"
),
w
=
v
.
children
(
".focus"
),
y
=
w
.
data
(
"type"
),
b
=
{};
c
.
length
>
0
&&
(
u
=
c
.
children
(
".loading"
),
p
=
c
.
children
(
".no-more"
)),
n
=
new
r
(
".swiper-container"
,{
lazyLoading
:
!
0
,
pagination
:
".swiper-pagination"
}),
l
.
initInfosEvt
(
g
),
function
(){
var
e
=
t
(
"#gender"
).
val
();
v
.
children
(
".guang-nav-item"
).
each
(
function
(){
var
a
=
t
(
this
).
data
(
"type"
),
s
=
t
(
this
).
hasClass
(
"focus"
);
b
[
a
]
=
{
page
:
s
?
2
:
1
,
gender
:
e
,
type
:
a
,
end
:
!
1
}})}(),
i
=
new
o
(
v
[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
n
=
t
(
e
.
target
).
closest
(
".guang-nav-item"
);
n
.
hasClass
(
"focus"
)
||
(
s
=
n
.
index
(),
n
.
addClass
(
"focus"
),
w
.
removeClass
(
"focus"
),
m
.
not
(
".hide"
).
addClass
(
"hide"
),
a
=
m
.
eq
(
s
),
a
.
removeClass
(
"hide"
),
w
=
n
,
y
=
n
.
data
(
"type"
),
1
===
b
[
y
].
page
&&
d
(
a
,
b
[
y
]),
b
[
y
].
end
?(
u
.
addClass
(
"hide"
),
p
.
removeClass
(
"hide"
)):(
u
.
removeClass
(
"hide"
),
p
.
addClass
(
"hide"
)))}),
t
(
document
).
scroll
(
function
(){
t
(
window
).
scrollTop
()
+
h
>=
t
(
document
).
height
()
-
f
&&
d
(
m
.
not
(
".hide"
),
b
[
y
])})}),
define
(
"js/guang/list"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
e
(
"js/guang/info"
),
t
=
i
.
loadMore
,
o
=
n
(
window
).
height
(),
r
=
n
(
"#load-more"
).
height
(),
l
=
n
(
"#author-infos"
),
d
=
n
(
"#tag"
),
c
=
n
(
"#gender"
),
u
=
n
(
"#isApp"
),
p
=
{
page
:
2
,
end
:
!
1
},
h
=
n
(
"#info-list"
);
i
.
initInfosEvt
(
h
),
l
.
length
>
0
&&
n
.
extend
(
p
,{
authorId
:
l
.
data
(
"id"
)}),
d
.
length
>
0
&&
n
.
extend
(
p
,{
tag
:
d
.
val
(),
gender
:
c
.
val
(),
isApp
:
u
.
val
()}),
n
(
document
).
scroll
(
function
(){
n
(
window
).
scrollTop
()
+
o
>=
n
(
document
).
height
()
-
r
-
50
&&
t
(
h
,
p
)})}),
define
(
"js/guang/detail"
,[
"jquery"
,
"mlellipsis"
,
"lazyload"
,
"iscroll-probe"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
=
e
.
offset
().
left
,
s
=-
b
+
a
+
w
/
2
+
"px"
;
o
.
css
({
backgroundPosition
:
s
+
" bottom"
}),
m
&&
y
.
css
({
backgroundPosition
:
s
+
" bottom"
})}
function
i
(
e
){
var
a
,
s
,
i
,
p
=
u
(
e
.
currentTarget
),
f
=
p
.
index
();
p
.
hasClass
(
"focus"
)
||
(
r
.
filter
(
".focus"
).
removeClass
(
"focus"
),
m
&&
(
a
=
p
.
closest
(
".fixed-thumb-container"
).
length
>
0
?
o
:
y
,
s
=
a
.
find
(
".thumb"
).
eq
(
f
),
y
.
find
(
".thumb.focus"
).
removeClass
(
"focus"
),
s
.
addClass
(
"focus"
)),
p
.
addClass
(
"focus"
),
n
(
p
),
l
.
not
(
".hide"
).
addClass
(
"hide"
),
i
=
l
.
eq
(
f
),
i
.
removeClass
(
"hide"
),
h
(
i
.
find
(
".lazy"
)),
m
?
c
&&
c
.
scrollToElement
(
d
,
400
):
u
(
"body"
).
animate
({
scrollTop
:
t
.
offset
().
top
},
400
))}
var
t
,
o
,
r
,
l
,
d
,
c
,
u
=
e
(
"jquery"
),
p
=
e
(
"mlellipsis"
),
h
=
e
(
"lazyload"
),
f
=
e
(
"iscroll-probe"
),
g
=
u
(
".author .intro"
),
m
=
navigator
.
userAgent
.
indexOf
(
"iPhone"
)
>
0
?
!
0
:
!
1
,
v
=
u
(
".collocation-block"
).
length
>
0
?
!
0
:
!
1
,
w
=
0
,
y
=
u
(
""
),
d
=
document
.
querySelector
(
"#wrapper .collocation-block"
),
b
=
u
(
window
).
width
();
e
(
"js/plugin/wx-share"
)(),
m
&&
u
(
"#wrapper"
).
addClass
(
"ios"
),
p
.
init
(),
h
(
u
(
".lazy"
)),
u
(
".info-list .title, .one-good .reco-name"
).
each
(
function
(){
this
.
mlellipsis
(
2
)}),
parseInt
(
g
.
offset
().
left
,
10
)
===
parseInt
(
g
.
css
(
"margin-left"
),
10
)
&&
g
.
css
(
"padding-top"
,
0
),
v
&&
(
t
=
u
(
".collocation-block"
),
o
=
t
.
children
(
".thumb-container"
),
r
=
o
.
find
(
"li"
),
l
=
t
.
find
(
".prod"
),
w
=
r
.
width
(),
m
&&
(
y
=
u
(
"#wrapper"
).
after
(
o
.
clone
().
addClass
(
"fixed-thumb-container fixed-bottom"
)).
next
(
".thumb-container"
),
h
(
y
.
find
(
".lazy"
),{
event
:
"sporty"
})),
n
(
r
.
filter
(
".focus"
)),
o
.
delegate
(
".thumb"
,
"touchend"
,
i
),
m
&&
y
.
delegate
(
".thumb"
,
"touchend"
,
i
)),
window
.
onload
=
function
(){
var
e
,
a
,
s
,
n
,
i
,
r
=
u
(
"#scroller"
);
if
(
m
){
if
(
c
=
new
f
(
"#wrapper"
,{
probeType
:
3
,
mouseWheel
:
!
0
,
click
:
!
0
}),
document
.
addEventListener
(
"touchmove"
,
function
(
e
){
e
.
preventDefault
()},
!
1
),
!
v
)
return
void
c
.
on
(
"scroll"
,
function
(){
r
.
trigger
(
"scroll"
)});
e
=
u
(
window
).
height
(),
i
=
y
[
0
],
a
=
o
.
height
(),
s
=
t
.
height
(),
n
=
t
.
offset
().
top
,
c
.
on
(
"scroll"
,
function
(){
var
t
=-
this
.
y
,
o
=
i
.
className
;
n
-
e
+
a
>=
t
?
-
1
===
o
.
indexOf
(
"fixed-bottom"
)
&&
y
.
addClass
(
"fixed-bottom"
).
removeClass
(
"hide"
):
n
>=
t
?
-
1
===
o
.
indexOf
(
"hide"
)
&&
y
.
addClass
(
"hide"
).
removeClass
(
"fixed-bottom fixed-top"
):
n
+
s
-
a
>=
t
?
-
1
===
o
.
indexOf
(
"fixed-top"
)
&&
y
.
addClass
(
"fixed-top"
).
removeClass
(
"hide absolute"
).
css
(
"top"
,
""
):
n
+
s
>=
t
?(
-
1
===
o
.
indexOf
(
"absolute"
)
&&
y
.
addClass
(
"absolute"
).
removeClass
(
"fixed-top hide"
),
i
.
style
.
top
=
n
+
s
-
a
-
t
+
"px"
):
t
>
n
+
s
&&-
1
===
o
.
indexOf
(
"hide"
)
&&
y
.
addClass
(
"hide"
).
removeClass
(
"absolute"
),
r
.
trigger
(
"scroll"
)})}}}),
define
(
"js/plugin/wx-share"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
);
s
.
exports
=
function
(){
var
e
=
"http://www.yohoshow.com/api/wechat/getSignPackage"
;
n
.
getJSON
(
e
+
"?pageurl="
+
encodeURIComponent
(
location
.
href
.
split
(
"#"
)[
0
])
+
"&callback=?"
,
function
(
e
){
var
a
,
s
,
n
,
i
;
void
0
!==
e
&&
""
!==
e
&&
(
a
=
e
.
appId
.
toString
(),
s
=
e
.
timestamp
,
n
=
e
.
nonceStr
.
toString
(),
i
=
e
.
signature
.
toString
(),
wx
.
config
({
debug
:
!
1
,
appId
:
a
,
timestamp
:
s
,
nonceStr
:
n
,
signature
:
i
,
jsApiList
:[
"checkJsApi"
,
"onMenuShareTimeline"
,
"onMenuShareAppMessage"
,
"onMenuShareQQ"
,
"onMenuShareWeibo"
,
"hideMenuItems"
,
"showMenuItems"
,
"hideAllNonBaseMenuItem"
,
"showAllNonBaseMenuItem"
,
"translateVoice"
,
"startRecord"
,
"stopRecord"
,
"onRecordEnd"
,
"playVoice"
,
"pauseVoice"
,
"stopVoice"
,
"uploadVoice"
,
"downloadVoice"
,
"chooseImage"
,
"previewImage"
,
"uploadImage"
,
"downloadImage"
,
"getNetworkType"
,
"openLocation"
,
"getLocation"
,
"hideOptionMenu"
,
"showOptionMenu"
,
"closeWindow"
,
"scanQRCode"
,
"chooseWXPay"
,
"openProductSpecificView"
,
"addCard"
,
"chooseCard"
,
"openCard"
]}))}),
wx
.
ready
(
function
(){
var
e
=
n
(
"#shareTitle"
).
val
(),
a
=
n
(
"#shareImg"
).
val
(),
s
=
n
(
"#shareDesc"
).
val
(),
i
=
n
(
"#shareLink"
).
val
(),
t
=
{
title
:
e
,
desc
:
s
,
imgUrl
:
a
,
link
:
i
};
wx
.
onMenuShareAppMessage
(
t
),
wx
.
onMenuShareTimeline
(
t
),
wx
.
onMenuShareQQ
(
t
),
wx
.
onMenuShareWeibo
(
t
)})}}),
define
(
"js/home/entry"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
e
(
"js/home/home"
),
e
(
"js/home/maybe-like"
)}),
define
(
"js/home/home"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
function
n
(){
x
+=
10
,
k
.
css
({
transform
:
"rotateX("
+
x
+
"deg)"
,
"-webkit-transform"
:
"rotateX("
+
x
+
"deg)"
,
"-moz-transform"
:
"rotateX("
+
x
+
"deg)"
}),
x
/
90
%
2
===
1
&&
(
q
?(
k
.
addClass
(
"animate"
),
q
=!
1
):(
k
.
removeClass
(
"animate"
),
q
=!
0
)),
x
/
90
%
2
===
0
&&
x
%
360
!==
0
?
window
.
setTimeout
(
n
,
3
e3
):
x
%
360
===
0
?
window
.
setTimeout
(
n
,
6
e4
):
d
(
function
(){
n
()})}
var
i
,
t
,
o
,
r
,
l
,
d
,
c
,
u
,
p
,
h
,
f
,
g
,
m
=
e
(
"jquery"
),
v
=
e
(
"hammer"
),
w
=
e
(
"swiper"
),
y
=
e
(
"lazyload"
),
b
=
m
(
".mobile-wrap"
),
C
=
m
(
".overlay"
),
j
=
m
(
".side-nav"
),
x
=
0
,
k
=
m
(
".home-header .logo"
),
q
=!
0
;
e
(
"js/home/maybe-like"
),
y
(
m
(
"img.lazy"
)),
f
=
new
v
(
m
(
".nav-btn"
)[
0
]),
f
.
on
(
"tap"
,
function
(
e
){
b
.
addClass
(
"menu-open"
),
C
.
show
().
css
(
"opacity"
,.
3
),
j
.
addClass
(
"on"
),
m
(
"body"
).
css
({
height
:
m
(
window
).
height
(),
width
:
"100%"
,
overflow
:
"hidden"
}),
e
.
srcEvent
.
stopPropagation
()}),
g
=
new
v
(
m
(
".mobile-wrap"
)[
0
]),
g
.
on
(
"tap"
,
function
(
e
){
b
.
hasClass
(
"menu-open"
)
&&
(
b
.
removeClass
(
"menu-open"
),
C
.
css
(
"opacity"
,
0
),
m
(
".sub-nav"
).
removeClass
(
"show"
),
j
.
removeClass
(
"on"
),
m
(
"body"
).
css
({
height
:
"auto"
,
overflow
:
"auto"
}),
setTimeout
(
function
(){
m
(
".overlay"
).
hide
()},
300
),
e
.
srcEvent
.
stopPropagation
())}),
j
.
on
(
"touchstart"
,
"li"
,
function
(){
m
(
this
).
find
(
".sub-nav"
).
size
()
>
0
&&
(
m
(
".sub-nav"
).
removeClass
(
"show"
),
m
(
this
).
find
(
".sub-nav"
).
addClass
(
"show"
))}),
m
(
".sub-nav"
).
each
(
function
(){
m
(
this
).
find
(
"li"
).
eq
(
0
).
on
(
"touchstart"
,
function
(
e
){
m
(
".sub-nav"
).
removeClass
(
"show"
),
e
.
stopPropagation
()})}),
m
(
".banner-swiper"
).
find
(
"li"
).
size
()
>
1
&&
(
i
=
new
w
(
".banner-swiper"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
".banner-top .pagination-inner"
})),
o
=
new
w
(
".brands-swiper"
,{
grabCursor
:
!
0
,
slidesPerView
:
"auto"
,
wrapperClass
:
"brands-list"
,
slideElement
:
"li"
}),
t
=
new
w
(
".recommend-swiper"
,{
grabCursor
:
!
0
,
slidesPerView
:
"auto"
,
wrapperClass
:
"recommend-list"
,
slideElement
:
"li"
}),
m
(
".trend-topic-swiper"
).
find
(
"li"
).
size
()
>
1
&&
(
r
=
new
w
(
".trend-topic-swiper"
,{
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
".trend-topic-content .pagination-inner"
})),
m
(
".category-swiper"
).
each
(
function
(
e
,
a
){
p
=
"category-swiper"
+
e
,
m
(
this
).
addClass
(
p
),
m
(
"."
+
p
).
find
(
".swiper-slide"
).
size
()
>
1
&&
(
l
=
new
w
(
"."
+
p
,{
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
"."
+
p
+
" .pagination-inner"
}))}),
d
=
function
(){
var
e
=
null
,
a
=
[
"webkit"
,
"moz"
,
"ms"
];
for
(
u
=
0
;
u
<
a
.
length
;
u
++
)
c
=
a
[
u
]
+
"RequestAnimationFrame"
,
window
[
c
]
&&
(
h
=!
0
,
e
=
c
);
return
h
?
function
(
a
){
window
[
e
](
a
)}:
function
(
e
){
window
.
setTimeout
(
e
,
67
)}}(),
setTimeout
(
n
,
3
e3
)}),
define
(
"js/home/maybe-like"
,[
"jquery"
,
"lazyload"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
,
o
,
r
=
e
(
"jquery"
),
l
=
e
(
"js/plugin/tip"
),
d
=
e
(
"lazyload"
),
c
=
r
(
window
).
height
(),
u
=
r
(
"#load-more"
).
height
(),
p
=
r
(
"#goods-list"
),
h
=!
1
,
f
=
0
,
g
=
null
,
m
=
r
(
".mobile-wrap"
).
hasClass
(
"kids-wrap"
)?
!
0
:
!
1
,
v
=
r
(
".mobile-wrap"
).
hasClass
(
"lifestyle-wrap"
)?
!
0
:
!
1
,
w
=
r
(
"#maybe-like-nav"
);
m
?
i
=
"/product/recom/maylikekids"
:
v
?
i
=
"/product/recom/maylikelife"
:(
g
=
r
(
".mobile-wrap"
).
hasClass
(
"boys-wrap"
)?
"1,3"
:
"2,3"
,
i
=
"/product/recom/maylike?gender="
+
g
),
t
=
w
.
children
(
".focus"
),
r
(
"#maybe-like-nav"
).
delegate
(
"li"
,
"tap"
,
function
(){
var
e
,
a
=
r
(
this
),
s
=
r
(
".goods-list"
);
a
.
hasClass
(
"focus"
)
||
(
o
=
a
.
index
(),
a
.
addClass
(
"focus"
),
t
.
removeClass
(
"focus"
),
s
.
not
(
".hide"
).
addClass
(
"hide"
),
e
=
s
.
eq
(
o
),
e
.
removeClass
(
"hide"
),
t
=
a
,
r
(
document
).
trigger
(
"scroll"
))}),
r
(
window
).
scroll
(
function
(){
if
(
r
(
window
).
scrollTop
()
+
c
>=
r
(
document
).
height
()
-
u
-
50
){
if
(
h
)
return
;
h
=!
0
,
r
.
ajax
({
type
:
"GET"
,
url
:
i
,
data
:{
page
:
f
+
1
},
success
:
function
(
e
){
return
" "
===
e
?(
h
=!
0
,
void
(
g
&&
(
i
=
"1,3"
===
g
?
"/boys/bottomBanner"
:
"/girls/bottomBanner"
,
r
.
ajax
({
type
:
"GET"
,
url
:
i
,
success
:
function
(
e
){
e
&&
e
[
0
]
&&
e
[
0
].
banner
[
0
]
&&
(
r
(
"#load-more-img"
).
show
(),
r
(
"#load-more-img a"
).
attr
(
"url"
,
e
[
0
].
banner
[
0
].
url
),
r
(
"#load-more-img a > img"
).
attr
(
"src"
,
e
[
0
].
banner
[
0
].
img
))},
error
:
function
(){}})))):(
n
=
p
.
find
(
".good-info"
).
length
,
p
.
append
(
e
),
d
(
0
===
n
?
p
.
find
(
".good-info"
).
find
(
"img.lazy"
):
p
.
find
(
".good-info:gt("
+
(
n
-
1
)
+
")"
).
find
(
"img.lazy"
)),
h
=!
1
,
void
f
++
)},
error
:
function
(){
l
.
show
(
"网络断开连接了~"
),
h
=!
1
}})}})}),
define
(
"js/index/entry"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
s
){
e
(
"js/index/search"
),
e
(
"js/index/footer"
)}),
define
(
"js/index/search"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
s
){
var
n
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
t
(
"#search-input input"
),
l
=
t
(
"#search-input .clear-input"
),
d
=
t
(
"#search-form"
),
c
=
t
(
".history"
),
u
=
t
(
"#clear-history"
),
p
=
e
(
"js/index/write-search"
),
h
=
p
.
getRanToken
();
n
=
new
o
(
u
[
0
]),
n
.
on
(
"tap"
,
function
(){
localStorage
.
removeItem
(
"historys"
),
c
.
html
(
""
)}),
r
.
on
(
"input"
,
function
(){
""
===
r
.
val
()?
l
.
addClass
(
"hide"
):
l
.
removeClass
(
"hide"
)}),
i
=
new
o
(
l
[
0
]),
i
.
on
(
"tap"
,
function
(){
r
.
val
(
""
).
trigger
(
"input"
)}),
function
(){
var
e
,
a
,
s
,
n
=
""
;
if
(
localStorage
&&
(
a
=
localStorage
.
getItem
(
"historys"
),
a
&&
a
.
length
>
0
)){
for
(
a
=
a
.
split
(
h
),
s
=
0
;
s
<
a
.
length
;
s
++
)
e
=
a
[
s
],
""
!==
e
&&
(
n
+=
'<li><a href="/?query='
+
e
+
'">'
+
e
+
"</li>"
);
c
.
html
(
n
),
u
.
removeClass
(
"hide"
)}}(),
p
.
bindWirteLocal
(
d
)}),
define
(
"js/index/write-search"
,[],
function
(
e
,
a
,
s
){
function
n
(){
return
t
}
function
i
(
e
){
e
.
on
(
"submit"
,
function
(){
var
e
,
a
=
this
.
query
.
value
;
if
(
localStorage
){
if
(
e
=
localStorage
.
getItem
(
"historys"
),
e
=
e
?
e
:
""
,
e
.
indexOf
(
t
+
a
+
t
)
>-
1
)
return
;
""
===
e
&&
(
a
=
t
+
a
),
e
+=
a
+
t
,
localStorage
.
setItem
(
"historys"
,
e
)}})}
var
t
=
" ??++ "
;
a
.
getRanToken
=
n
,
a
.
bindWirteLocal
=
i
}),
define
(
"js/index/footer"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
s
){
function
n
(){
var
e
=
"http://a.app.qq.com/o/simple.jsp?pkgname=com.yoho&g_f=995445"
,
a
=
new
Date
;
setTimeout
(
function
(){
new
Date
-
a
<
2
e3
&&
(
window
.
location
=
e
)},
500
)}
var
i
,
t
,
o
=
e
(
"jquery"
),
r
=
e
(
"hammer"
);
o
(
"#float-layer-close"
)
&&
o
(
"#float-layer-close"
)[
0
]
&&
(
i
=
new
r
(
o
(
"#float-layer-close"
)[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
o
(
"#float-layer-app"
).
hide
(),
window
.
setCookie
(
"_float-layer-app"
,
"id490655927"
,{
domain
:
".yohobuy.com"
}),
window
.
setCookie
(
"_float-layer-app-close"
,
1
,{
domain
:
".yohobuy.com"
,
expires
:
1
})})),
o
(
"#float-layer-btn"
)
&&
o
(
"#float-layer-btn"
)[
0
]
&&
(
t
=
new
r
(
o
(
"#float-layer-btn"
)[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
n
(
"bottom"
)}),
window
.
cookie
(
"_float-layer-app"
)?
o
(
"#float-layer-app"
).
hide
():
o
(
"#float-layer-app"
).
show
())}),
define
(
"js/passport/entry"
,[
"jquery"
],
function
(
e
,
a
,
s
){
e
(
"js/passport/register/register"
),
e
(
"js/passport/register/code"
),
e
(
"js/passport/register/password"
),
e
(
"js/passport/login/login"
),
e
(
"js/passport/login/international"
),
e
(
"js/passport/back/mobile"
),
e
(
"js/passport/back/code"
),
e
(
"js/passport/back/email"
),
e
(
"js/passport/back/email-success"
),
e
(
"js/passport/back/new-password"
)}),
define
(
"js/passport/register/register"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#phone-num"
),
t
=
n
(
"#country-select"
),
o
=
n
(
"#area-code"
),
r
=
n
(
"#btn-next"
),
l
=
e
(
"js/passport/api"
),
d
=
e
(
"js/plugin/tip"
),
c
=
n
.
trim
,
u
=
d
.
show
;
l
.
selectCssHack
(
n
(
"#country-select"
)),
l
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
c
(
i
.
val
())?
r
.
addClass
(
"disable"
):
r
.
removeClass
(
"disable"
)}),
t
.
change
(
function
(){
o
.
text
(
t
.
val
())}),
r
.
on
(
"touchstart"
,
function
(){
var
e
=
c
(
i
.
val
()),
a
=
t
.
val
();
r
.
hasClass
(
"disable"
)
||
(
l
.
phoneRegx
[
a
].
test
(
e
)?
n
.
ajax
({
url
:
"/passport/reg/verifymobile"
,
type
:
"POST"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
phoneNum
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
u
(
e
.
message
)}}):
u
(
"手机号格式不正确,请重新输入"
))})}),
define
(
"js/passport/api"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
,
s
=
r
(
".has-eye"
);
e
&&
"open"
===
e
.
status
?
s
.
append
(
'<div class="eye"></div>'
):
s
.
append
(
'<div class="eye close"></div>'
),
a
=
s
.
children
(
".eye"
),
a
.
on
(
"touchstart"
,
function
(
e
){
var
a
=
r
(
this
),
s
=
a
.
siblings
(
".pwd"
);
e
.
preventDefault
(),
a
.
toggleClass
(
"close"
),
a
.
hasClass
(
"close"
)?
s
.
attr
(
"type"
,
"password"
):
s
.
attr
(
"type"
,
"text"
),
s
.
focus
()})}
function
i
(){
var
e
,
a
=
r
(
".has-clear"
);
a
.
append
(
'<div class="clear-input"></div>'
),
e
=
a
.
children
(
".clear-input"
),
e
.
on
(
"touchstart"
,
function
(
a
){
var
s
=
e
.
siblings
(
".input"
);
s
.
val
(
""
).
trigger
(
"input"
).
focus
(),
a
.
preventDefault
()}),
a
.
children
(
".input"
).
bind
(
"input"
,
function
(){
var
e
=
r
(
this
),
a
=
e
.
siblings
(
".clear-input"
),
s
=
l
(
e
.
val
());
""
===
s
?
a
.
hide
():
a
.
show
()})}
function
t
(
e
){
return
e
.
length
>=
6
&&
e
.
length
<=
20
?
!
0
:
!
1
}
function
o
(
e
){
function
a
(){
var
a
=
e
.
find
(
"option:selected"
).
text
().
length
;
switch
(
a
){
case
2
:
e
.
outerWidth
(
90
);
break
;
case
3
:
e
.
outerWidth
(
110
);
break
;
default
:
e
.
outerWidth
(
130
)}}
var
s
=
navigator
.
userAgent
;
s
.
match
(
/uc/i
)
&&
s
.
match
(
/android/i
)?
e
.
change
(
function
(){
a
()}):
e
.
removeClass
(
"in-android-uc"
)}
var
r
=
e
(
"jquery"
),
l
=
r
.
trim
,
d
=
/^
([
a-zA-Z0-9
]
+
[
_|
\_
|
\.
|-
]?)
*
[
a-zA-Z0-9
]
+@
([
a-zA-Z0-9
]
+
[
_|
\_
|
\.
|-
]?)
*
[
a-zA-Z0-9
]
+
\.[
a-zA-Z
]{2,3}
$/
,
c
=
{
"+86"
:
/^
1
[
35847
]{
1
}[
0
-
9
]{
9
}
$
/
,
"+852"
:
/^
[
965
]{
1
}[
0
-
9
]{
7
}
$
/
,
"+853"
:
/^
[
0
-
9
]{
8
}
$
/
,
"+886"
:
/^
[
0
-
9
]{
10
}
$
/
,
"+65"
:
/^
[
98
]{
1
}[
0
-
9
]{
7
}
$
/
,
"+60"
:
/^
1
[
1234679
]{
1
}[
0
-
9
]{
8
}
$
/
,
"+1"
:
/^
[
0
-
9
]{
10
}
$
/
,
"+82"
:
/^
01
[
0
-
9
]{
9
}
$
/
,
"+44"
:
/^
7
[
789
][
0
-
9
]{
8
}
$
/
,
"+81"
:
/^
0
[
9
|
8
|
7
][
0
-
9
]{
9
}
$
/
,
"+61"
:
/^
[
0
-
9
]{
11
}
$
/
};
s
.
exports
=
{
emailRegx
:
d
,
phoneRegx
:
c
,
bindEyesEvt
:
n
,
bindClearEvt
:
i
,
pwdValidate
:
t
,
selectCssHack
:
o
}}),
define
(
"js/passport/register/code"
,[
"jquery"
],
function
(
e
,
a
,
s
){
e
(
"js/passport/code"
)(
!
0
)}),
define
(
"js/passport/code"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
);
s
.
exports
=
function
(
a
){
function
s
(){
var
e
,
a
=
59
;
e
=
setInterval
(
function
(){
0
===
a
?(
o
.
text
(
"重发验证码"
).
removeClass
(
"disable"
),
clearInterval
(
e
)):
o
.
text
(
"重发验证码 ("
+
a
--+
"秒)"
)},
1
e3
)}
var
i
=
n
(
"#captcha"
),
t
=
n
(
"#btn-next"
),
o
=
n
(
"#captcha-tip"
),
r
=
n
(
"#phone-num"
).
val
(),
l
=
n
(
"#area-code"
).
val
().
replace
(
"+"
,
""
),
d
=
e
(
"js/passport/api"
),
c
=
e
(
"js/plugin/tip"
),
u
=
n
.
trim
,
p
=
c
.
show
,
h
=
a
?
"reg"
:
"back"
;
d
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
!==
u
(
i
.
val
())?
t
.
removeClass
(
"disable"
):
t
.
addClass
(
"disable"
)}),
o
.
on
(
"touchstart"
,
function
(){
o
.
hasClass
(
"disable"
)
||
n
.
ajax
({
type
:
"POST"
,
url
:
"/passport/"
+
h
+
"/sendcode"
,
data
:{
phoneNum
:
r
,
areaCode
:
l
},
success
:
function
(
e
){
200
===
e
.
code
?(
o
.
text
(
"重发验证码 (60秒)"
).
addClass
(
"disable"
),
s
()):
p
(
e
.
message
)}})}),
t
.
on
(
"touchstart"
,
function
(){
t
.
hasClass
(
"disable"
)
||
n
.
ajax
({
type
:
"POST"
,
url
:
"/passport/"
+
h
+
"/verifycode"
,
data
:{
phoneNum
:
r
,
areaCode
:
l
,
code
:
u
(
i
.
val
()),
token
:
n
(
"#token"
).
val
()},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
p
(
e
.
message
)}})}),
s
()}}),
define
(
"js/passport/register/password"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#pwd"
),
t
=
n
(
"#btn-sure"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
n
.
trim
,
d
=
r
.
show
;
o
.
bindEyesEvt
({
status
:
"open"
}),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
=
l
(
i
.
val
());
t
.
hasClass
(
"disable"
)
||
(
o
.
pwdValidate
(
e
)
===!
1
?
d
(
"密码6-20位,请重新输入"
):
n
.
ajax
({
type
:
"POST"
,
url
:
"/passport/reg/setpassword"
,
data
:{
password
:
e
,
phoneNum
:
n
(
"#phone-num"
).
val
(),
areaCode
:
n
(
"#area-code"
).
val
(),
token
:
n
(
"#token"
).
val
()},
success
:
function
(
e
){
200
===
e
.
code
?(
d
(
"注册成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
401
===
e
.
code
||
404
===
e
.
code
||
505
===
e
.
code
?
d
(
e
.
message
):(
d
(
e
.
message
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
))}}))})}),
define
(
"js/passport/login/login"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(){
p
&&
h
?
d
.
removeClass
(
"disable"
):
d
.
addClass
(
"disable"
)}
function
i
(){
c
.
show
(),
u
.
show
()}
function
t
(){
c
.
hide
(),
u
.
hide
()}
var
o
=
e
(
"jquery"
),
r
=
o
(
"#account"
),
l
=
o
(
"#pwd"
),
d
=
o
(
"#btn-login"
),
c
=
o
(
"#retrive-pwd-mask"
),
u
=
o
(
"#retrive-pwd-ways"
),
p
=!
1
,
h
=!
1
,
f
=
e
(
"js/passport/api"
),
g
=
e
(
"js/plugin/tip"
),
m
=
o
.
trim
,
v
=
g
.
show
;
f
.
bindEyesEvt
(),
f
.
bindClearEvt
(),
r
.
bind
(
"input"
,
function
(){
p
=
""
!==
m
(
r
.
val
())?
!
0
:
!
1
,
n
()}),
l
.
bind
(
"input"
,
function
(){
h
=
""
===
m
(
l
.
val
())?
!
1
:
!
0
,
n
()}),
d
.
on
(
"touchstart"
,
function
(){
var
e
=
m
(
r
.
val
()),
a
=
m
(
l
.
val
());
d
.
hasClass
(
"disable"
)
||
((
/^
[
0-9
]
+$/
.
test
(
e
)
||
f
.
emailRegx
.
test
(
e
))
&&
f
.
pwdValidate
(
a
)?
o
.
ajax
({
type
:
"POST"
,
url
:
"/passport/login/auth"
,
data
:{
account
:
e
,
password
:
a
},
success
:
function
(
e
){
200
===
e
.
code
?(
v
(
"登录成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
v
(
e
.
message
)},
error
:
function
(){
v
(
"网络断开连接啦~"
)}})
:
v
(
"账号或密码有错误,请重新输入"
))}),
o
(
"#forget-pwd"
).
on
(
"touchstart"
,
function
(){
i
()}),
c
.
on
(
"touchstart"
,
function
(){
t
()}),
o
(
"#cancel-retrive"
).
on
(
"touchstart"
,
function
(
e
){
e
.
preventDefault
(),
t
()}),
r
.
trigger
(
"input"
),
l
.
trigger
(
"input"
)}),
define
(
"js/passport/login/international"
,[
"jquery"
],
function
(
e
,
a
,
s
){
function
n
(){
c
&&
u
?
d
.
removeClass
(
"disable"
):
d
.
addClass
(
"disable"
)}
var
i
=
e
(
"jquery"
),
t
=
i
(
"#phone-num"
),
o
=
i
(
"#country-select"
),
r
=
i
(
"#area-code"
),
l
=
i
(
"#pwd"
),
d
=
i
(
"#btn-login"
),
c
=!
1
,
u
=!
1
,
p
=
e
(
"js/passport/api"
),
h
=
e
(
"js/plugin/tip"
),
f
=
i
.
trim
,
g
=
h
.
show
;
p
.
selectCssHack
(
o
),
p
.
bindEyesEvt
(),
p
.
bindClearEvt
(),
t
.
bind
(
"input"
,
function
(){
c
=
""
===
f
(
t
.
val
())?
!
1
:
!
0
,
n
()}),
l
.
bind
(
"input"
,
function
(){
var
e
=
f
(
l
.
val
());
u
=
""
===
e
?
!
1
:
!
0
,
n
()}),
o
.
change
(
function
(){
r
.
text
(
o
.
val
())}),
d
.
on
(
"touchstart"
,
function
(){
var
e
=
f
(
t
.
val
()),
a
=
o
.
val
(),
s
=
f
(
l
.
val
());
d
.
hasClass
(
"disable"
)
||
(
p
.
phoneRegx
[
a
].
test
(
e
)
&&
p
.
pwdValidate
(
s
)?
i
.
ajax
({
type
:
"POST"
,
url
:
"/passport/login/auth"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
account
:
e
,
password
:
s
},
success
:
function
(
e
){
200
===
e
.
code
?(
g
(
"登录成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
g
(
e
.
message
)},
error
:
function
(){
g
(
"网络断开连接啦~"
)}})
:
g
(
"账号或密码有错误,请重新输入"
))}),
t
.
trigger
(
"input"
),
l
.
trigger
(
"input"
)}),
define
(
"js/passport/back/mobile"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#phone-num"
),
t
=
n
(
"#country-select"
),
o
=
n
(
"#area-code"
),
r
=
n
(
"#btn-next"
),
l
=
e
(
"js/passport/api"
),
d
=
e
(
"js/plugin/tip"
),
c
=
n
.
trim
,
u
=
d
.
show
;
l
.
selectCssHack
(
n
(
"#country-select"
)),
l
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
c
(
i
.
val
())?
r
.
addClass
(
"disable"
):
r
.
removeClass
(
"disable"
)}),
t
.
change
(
function
(){
o
.
text
(
t
.
val
())}),
r
.
on
(
"touchstart"
,
function
(){
var
e
=
c
(
i
.
val
()),
a
=
t
.
val
();
r
.
hasClass
(
"disable"
)
||
(
l
.
phoneRegx
[
a
].
test
(
e
)?
n
.
ajax
({
url
:
"/passport/back/sendcode"
,
type
:
"POST"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
phoneNum
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
u
(
e
.
message
)}}):
u
(
"手机号格式不正确,请重新输入"
))})}),
define
(
"js/passport/back/code"
,[
"jquery"
],
function
(
e
,
a
,
s
){
e
(
"js/passport/code"
)(
!
1
)}),
define
(
"js/passport/back/email"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#email"
),
t
=
n
(
"#btn-sure"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
n
.
trim
,
d
=
r
.
show
;
o
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
=
l
(
i
.
val
());
t
.
hasClass
(
"disable"
)
||
(
o
.
emailRegx
.
test
(
e
)?
n
.
ajax
({
url
:
"/passport/back/sendemail"
,
type
:
"POST"
,
data
:{
email
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
d
(
e
.
message
)}}):
d
(
"邮箱格式不正确,请重新输入"
))})}),
define
(
"js/passport/back/email-success"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#resend"
),
t
=
e
(
"js/plugin/tip"
),
o
=
t
.
show
;
i
.
on
(
"touchstart"
,
function
(
e
){
e
.
preventDefault
(),
n
.
ajax
({
url
:
i
.
data
(
"url"
),
type
:
"GET"
,
success
:
function
(
e
){
o
(
200
===
e
.
code
?
e
.
message
:
e
.
message
)}})})}),
define
(
"js/passport/back/new-password"
,[
"jquery"
],
function
(
e
,
a
,
s
){
var
n
=
e
(
"jquery"
),
i
=
n
(
"#pwd"
),
t
=
n
(
"#btn-ok"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
n
.
trim
,
d
=
r
.
show
,
c
=
n
(
"#phone-num"
);
o
.
bindEyesEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
,
a
,
s
=
l
(
i
.
val
()),
r
=!
0
;
t
.
hasClass
(
"disable"
)
||
(
e
=
{
password
:
s
},
0
===
c
.
length
&&
(
r
=!
1
),
r
?(
n
.
extend
(
e
,{
phoneNum
:
c
.
val
(),
areaCode
:
n
(
"#areaCode"
).
val
(),
token
:
n
(
"#token"
).
val
()}),
a
=
"/passport/back/passwordByMobile"
):(
n
.
extend
(
e
,{
code
:
n
(
"#email-code"
).
val
()}),
a
=
"/passport/back/passwordByEmail"
),
o
.
pwdValidate
(
s
)?
n
.
ajax
({
type
:
"POST"
,
url
:
a
,
data
:
e
,
success
:
function
(
e
){
200
===
e
.
code
?(
d
(
"密码修改成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
d
(
e
.
message
)}}):
d
(
"密码6-20位,请重新输入"
))})}),
define
(
"js/product/entry"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
e
(
"js/product/newsale/newarrival"
),
e
(
"js/product/newsale/discount"
),
e
(
"js/product/list"
),
e
(
"js/product/detail/detail"
)}),
define
(
"js/product/newsale/newarrival"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
,
s
,
n
,
i
,
l
,
u
,
p
=
{};
if
(
!
d
){
if
(
e
){
for
(
s
in
q
)
q
.
hasOwnProperty
(
s
)
&&
(
q
[
s
].
reload
=!
0
);
switch
(
k
.
children
(
".active"
).
removeClass
(
"active"
),
z
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
};
break
;
case
"limit"
:
a
=
{
limit
:
e
.
id
};
break
;
case
"channel"
:
a
=
{
channel
:
e
.
id
};
break
;
case
"p_d"
:
a
=
{
p_d
:
e
.
id
}}
c
.
extend
(
b
,
a
)}
if
(
z
.
hasClass
(
"today"
)?(
i
=
"today"
,
l
=
1
):
z
.
hasClass
(
"week"
)?(
i
=
"week"
,
l
=
2
):
z
.
hasClass
(
"sale"
)
&&
(
i
=
"sale"
,
l
=
3
),
n
=
q
[
i
],
u
=
n
.
page
+
1
,
n
.
reload
)
u
=
1
;
else
if
(
n
.
end
)
return
;
c
.
extend
(
p
,
b
,{
dayLimit
:
l
,
page
:
u
}),
d
=!
0
,
g
.
showLoadingMask
(),
c
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/selectNewSale"
,
data
:
p
,
success
:
function
(
e
){
var
a
,
s
;
switch
(
i
){
case
"today"
:
a
=
t
;
break
;
case
"week"
:
a
=
o
;
break
;
case
"sale"
:
a
=
r
}
" "
===
e
?(
n
.
end
=!
0
,
n
.
reload
&&
a
.
html
(
y
)):
n
.
reload
?(
a
.
html
(
e
),
h
(
a
.
find
(
".lazy"
))):(
s
=
a
.
find
(
".good-info"
).
length
,
a
.
append
(
e
),
h
(
a
.
find
(
".good-info:gt("
+
(
s
-
1
)
+
") .lazy"
))),
n
.
reload
=!
1
,
n
.
page
=
u
,
d
=!
1
,
g
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
,
l
,
d
,
c
=
e
(
"jquery"
),
u
=
e
(
"swiper"
),
p
=
e
(
"hammer"
),
h
=
e
(
"lazyload"
),
f
=
e
(
"js/plugin/filter"
),
g
=
e
(
"js/plugin/loading"
),
m
=
c
(
"#goods-container"
),
v
=
m
.
children
(),
t
=
c
(
v
.
get
(
0
)),
o
=
c
(
v
.
get
(
1
)).
addClass
(
"hide"
),
r
=
c
(
v
.
get
(
2
)).
addClass
(
"hide"
),
w
=
c
(
window
).
height
(),
y
=
'<p class="no-result">未找到相关搜索结果</p>'
,
b
=
{
gender
:
c
(
"#gender"
).
val
(),
brand
:
c
(
"#brand"
).
val
(),
sort
:
c
(
"#sort"
).
val
(),
color
:
c
(
"#color"
).
val
(),
size
:
c
(
"#size"
).
val
(),
price
:
c
(
"#price"
).
val
(),
discount
:
c
(
"#discount"
).
val
(),
limit
:
c
(
"#limit"
).
val
(),
channel
:
c
(
"#channel"
).
val
(),
p_d
:
c
(
"#p_d"
).
val
(),
dayLimit
:
1
},
C
=
new
Date
,
j
=
C
.
getMonth
()
+
1
,
x
=
C
.
getDate
(),
k
=
c
(
"#list-nav"
),
q
=
{
today
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
week
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
sale
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
z
=
k
.
find
(
".active"
);
c
(
"#today a"
).
text
(
j
+
"月"
+
x
+
"号"
),
c
(
".swiper-container .swiper-slide"
).
length
>
1
&&
(
i
=
new
u
(
".swiper-container"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
pagination
:
".swiper-pagination"
})),
c
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/filter"
,
data
:
b
,
success
:
function
(
e
){
m
.
append
(
e
),
f
.
initFilter
({
fCbFn
:
n
,
hCbFn
:
function
(){
z
.
addClass
(
"active"
),
z
.
siblings
(
".filter"
).
removeClass
(
"active"
)},
missStatus
:
!
0
})}}),
h
(
c
(
".lazy"
)),
l
=
new
p
(
k
[
0
]),
l
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
i
,
l
=
c
(
e
.
target
).
closest
(
"li"
);
if
(
l
.
hasClass
(
"filter"
))
l
.
hasClass
(
"active"
)?(
f
.
hideFilter
(),
z
.
addClass
(
"active"
),
l
.
removeClass
(
"active"
)):(
z
=
l
.
siblings
(
".active"
),
z
.
removeClass
(
"active"
),
l
.
addClass
(
"active"
),
f
.
showFilter
());
else
{
if
(
l
.
hasClass
(
"today"
)?
s
=
"today"
:
l
.
hasClass
(
"week"
)?
s
=
"week"
:
l
.
hasClass
(
"sale"
)
&&
(
s
=
"sale"
),
a
=
q
[
s
],
!
l
.
hasClass
(
"active"
)){
if
(
i
=
l
.
siblings
(
".active"
),
z
=
l
,
i
.
hasClass
(
"filter"
))
f
.
hideFilter
();
else
switch
(
m
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
s
){
case
"today"
:
t
.
removeClass
(
"hide"
);
break
;
case
"week"
:
o
.
removeClass
(
"hide"
);
break
;
case
"sale"
:
r
.
removeClass
(
"hide"
)}
i
.
removeClass
(
"active"
),
l
.
addClass
(
"active"
)}
a
.
reload
&&
n
()}}),
c
(
window
).
scroll
(
function
(){
c
(
window
).
scrollTop
()
+
w
>
c
(
document
).
height
()
-
.
25
*
m
.
height
()
-
50
&&
void
0
!==
z
&&
n
()}),
n
()}),
define
(
"js/plugin/filter"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
s
){
function
n
(){
l
.
addClass
(
"hide"
),
u
&&
(
l
.
find
(
".classify-item.active"
).
removeClass
(
"active"
),
l
.
find
(
".classify-item:first-child"
).
addClass
(
"active"
))}
function
i
(){
l
.
removeClass
(
"hide"
)}
function
t
(
e
){
e
.
hasClass
(
"active"
)
||
(
e
.
siblings
(
".active"
).
removeClass
(
"active"
),
e
.
addClass
(
"active"
))}
function
o
(
e
){
var
a
,
s
,
i
=
e
.
data
(
"id"
),
t
=
e
.
closest
(
".sub-classify"
),
o
=
t
.
siblings
(
".shower"
);
e
.
hasClass
(
"chosed"
)
||
(
t
.
children
(
".chosed"
).
removeClass
(
"chosed"
),
e
.
addClass
(
"chosed"
),
a
=
p
.
trim
(
e
.
html
()),
s
=
p
.
trim
(
o
.
html
()),
o
.
html
(
s
.
substring
(
0
,
s
.
indexOf
(
"</span>"
)
+
7
)
+
a
.
substring
(
0
,
a
.
indexOf
(
"<i"
))),
0
===
e
.
index
()?
o
.
addClass
(
"default"
):
o
.
removeClass
(
"default"
),
d
&&
d
({
type
:
t
.
data
(
"type"
),
id
:
i
}),
n
(),
u
&&
(
e
.
removeClass
(
"chosed"
),
t
.
children
(
":first-child"
).
addClass
(
"chosed"
)))}
function
r
(
e
){
var
a
;
d
=
e
.
fCbFn
,
c
=
e
.
hCbFn
,
u
=
e
.
missStatus
,
l
=
p
(
".filter-mask"
),
a
=
new
h
(
l
[
0
]),
a
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
=
p
(
e
.
target
);
s
.
closest
(
".filter-body"
).
length
>
0
?(
a
=
s
.
closest
(
".sub-item"
),
a
.
length
>
0
?(
a
=
s
.
closest
(
"li"
),
o
(
a
)):(
a
=
s
.
closest
(
".classify-item"
),
e
.
srcEvent
.
stopPropagation
(),
t
(
a
))):(
n
(),
c
&&
c
())})}
var
l
,
d
,
c
,
u
,
p
=
e
(
"jquery"
),
h
=
e
(
"hammer"
);
a
.
initFilter
=
r
,
a
.
showFilter
=
i
,
a
.
hideFilter
=
n
}),
define
(
"js/product/newsale/discount"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
,
s
,
n
,
i
,
t
,
l
=
{};
if
(
!
o
){
if
(
e
){
for
(
s
in
j
)
j
.
hasOwnProperty
(
s
)
&&
(
j
[
s
].
reload
=!
0
);
switch
(
C
.
children
(
".active"
).
removeClass
(
"active"
),
x
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
}}
r
.
extend
(
b
,
a
)}
if
(
x
.
hasClass
(
"new"
)?
i
=
"newest"
:
x
.
hasClass
(
"price"
)?
i
=
"price"
:
x
.
hasClass
(
"discount"
)
&&
(
i
=
"discount"
),
n
=
j
[
i
],
t
=
n
.
page
+
1
,
n
.
reload
)
t
=
1
;
else
if
(
n
.
end
)
return
;
r
.
extend
(
l
,
b
,{
type
:
i
,
order
:
n
.
order
,
page
:
t
}),
o
=!
0
,
p
.
showLoadingMask
(),
r
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/selectNewSale"
,
data
:
l
,
success
:
function
(
e
){
var
a
,
s
;
switch
(
i
){
case
"newest"
:
a
=
g
;
break
;
case
"price"
:
a
=
m
;
break
;
case
"discount"
:
a
=
v
}
" "
===
e
?(
n
.
end
=!
0
,
n
.
reload
&&
a
.
html
(
y
)):
n
.
reload
?(
a
.
html
(
e
),
c
(
a
.
find
(
".lazy"
))):(
s
=
a
.
find
(
".good-info"
).
length
,
a
.
append
(
e
),
c
(
a
.
find
(
".good-info:gt("
+
(
s
-
1
)
+
") .lazy"
))),
n
.
reload
=!
1
,
n
.
page
=
t
,
o
=!
1
,
p
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
=
e
(
"jquery"
),
l
=
e
(
"swiper"
),
d
=
e
(
"hammer"
),
c
=
e
(
"lazyload"
),
u
=
e
(
"js/plugin/filter"
),
p
=
e
(
"js/plugin/loading"
),
h
=
r
(
"#goods-container"
),
f
=
h
.
children
(),
g
=
r
(
f
.
get
(
0
)),
m
=
r
(
f
.
get
(
1
)),
v
=
r
(
f
.
get
(
2
)),
w
=
r
(
window
).
height
(),
y
=
'<p class="no-result">未找到相关搜索结果</p>'
,
b
=
{
gender
:
r
(
"#gender"
).
val
(),
brand
:
r
(
"#brand"
).
val
(),
sort
:
r
(
"#sort"
).
val
(),
color
:
r
(
"#color"
).
val
(),
size
:
r
(
"#size"
).
val
(),
price
:
r
(
"#price"
).
val
(),
discount
:
r
(
"#discount"
).
val
()},
C
=
r
(
"#list-nav"
),
j
=
{
newest
:{
order
:
1
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
price
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
discount
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
x
=
C
.
find
(
".active"
);
r
(
".swiper-container .swiper-slide"
).
length
>
1
&&
(
i
=
new
l
(
".swiper-container"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
pagination
:
".swiper-pagination"
})),
r
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/filter"
,
data
:
b
,
success
:
function
(
e
){
h
.
append
(
e
),
u
.
initFilter
({
fCbFn
:
n
,
hCbFn
:
function
(){
x
.
addClass
(
"active"
),
x
.
siblings
(
".filter"
).
removeClass
(
"active"
)},
missStatus
:
!
0
})}}),
c
(
r
(
".lazy"
)),
t
=
new
d
(
C
[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
i
,
t
=
r
(
e
.
target
).
closest
(
"li"
);
if
(
t
.
hasClass
(
"filter"
))
t
.
hasClass
(
"active"
)?(
u
.
hideFilter
(),
x
.
addClass
(
"active"
),
t
.
removeClass
(
"active"
)):(
x
=
t
.
siblings
(
".active"
),
x
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
),
u
.
showFilter
());
else
{
if
(
t
.
hasClass
(
"new"
)?
s
=
"newest"
:
t
.
hasClass
(
"price"
)?
s
=
"price"
:
t
.
hasClass
(
"discount"
)
&&
(
s
=
"discount"
),
a
=
j
[
s
],
t
.
hasClass
(
"active"
)){
if
(
t
.
hasClass
(
"new"
))
return
;(
t
.
hasClass
(
"price"
)
||
t
.
hasClass
(
"discount"
))
&&
(
t
.
find
(
".icon > .iconfont"
).
toggleClass
(
"cur"
),
x
=
t
,
a
.
reload
=!
0
,
a
.
order
=
0
===
a
.
order
?
1
:
0
)}
else
{
if
(
i
=
t
.
siblings
(
".active"
),
x
=
t
,
i
.
hasClass
(
"filter"
))
u
.
hideFilter
();
else
switch
(
h
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
s
){
case
"newest"
:
g
.
removeClass
(
"hide"
);
break
;
case
"price"
:
m
.
removeClass
(
"hide"
);
break
;
case
"discount"
:
v
.
removeClass
(
"hide"
)}
i
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
)}
a
.
reload
&&
n
()}}),
r
(
window
).
scroll
(
function
(){
r
(
window
).
scrollTop
()
+
w
>
r
(
document
).
height
()
-
.
25
*
h
.
height
()
-
50
&&
void
0
!==
x
&&
n
()}),
n
()}),
define
(
"js/product/list"
,[
"jquery"
,
"hammer"
,
"lazyload"
],
function
(
e
,
a
,
s
){
function
n
(
e
){
var
a
,
s
,
n
,
t
,
o
,
r
=
{};
if
(
!
i
){
if
(
e
){
for
(
s
in
q
)
q
.
hasOwnProperty
(
s
)
&&
(
q
[
s
].
reload
=!
0
);
switch
(
k
.
children
(
".active"
).
removeClass
(
"active"
),
z
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
}}
d
.
extend
(
x
,
a
)}
if
(
z
.
hasClass
(
"new"
)?
t
=
"newest"
:
z
.
hasClass
(
"price"
)?
t
=
"price"
:
z
.
hasClass
(
"discount"
)
&&
(
t
=
"discount"
),
n
=
q
[
t
],
o
=
n
.
page
+
1
,
n
.
reload
)
o
=
1
;
else
if
(
n
.
end
)
return
;
d
.
extend
(
r
,
x
,{
type
:
t
,
order
:
n
.
order
,
page
:
o
}),
i
=!
0
,
v
.
showLoadingMask
(),
d
.
ajax
({
type
:
"GET"
,
url
:
"/index/search/search"
,
data
:
r
,
success
:
function
(
e
){
var
a
,
s
,
r
=
'<p class="no-result">未找到相关搜索结果</p>'
;
switch
(
t
){
case
"newest"
:
s
=
y
;
break
;
case
"price"
:
s
=
b
;
break
;
case
"discount"
:
s
=
C
}
" "
===
e
?(
n
.
end
=!
0
,
n
.
reload
&&
s
.
html
(
r
)):
n
.
reload
?(
s
.
html
(
e
),
u
(
s
.
find
(
".lazy"
))):(
a
=
s
.
find
(
".good-info"
).
length
,
s
.
append
(
e
),
u
(
s
.
find
(
".good-info:gt("
+
(
a
-
1
)
+
") .lazy"
))),
n
.
reload
=!
1
,
n
.
page
=
o
,
i
=!
1
,
v
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
,
l
,
d
=
e
(
"jquery"
),
c
=
e
(
"hammer"
),
u
=
e
(
"lazyload"
),
p
=
d
(
"#brand-header"
),
h
=
d
(
"#intro-box"
),
f
=
e
(
"js/plugin/filter"
),
g
=
e
(
"js/index/write-search"
),
m
=
e
(
"js/plugin/tip"
),
v
=
e
(
"js/plugin/loading"
),
w
=
d
(
"#goods-container"
),
y
=
w
.
children
(
".new-goods"
),
b
=
w
.
children
(
".price-goods"
),
C
=
w
.
children
(
".discount-goods"
),
j
=
d
(
window
).
height
(),
x
=
{
gender
:
d
(
"#gender"
).
val
(),
brand
:
d
(
"#brand"
).
val
(),
sort
:
d
(
"#sort"
).
val
(),
color
:
d
(
"#color"
).
val
(),
size
:
d
(
"#size"
).
val
(),
price
:
d
(
"#price"
).
val
(),
discount
:
d
(
"#discount"
).
val
(),
query
:
d
(
"#query"
).
val
()},
k
=
d
(
"#list-nav"
),
q
=
{
newest
:{
order
:
1
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
price
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
discount
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
z
=
k
.
find
(
".active"
);
d
.
ajax
({
type
:
"GET"
,
url
:
"/search/filter"
,
data
:
x
,
success
:
function
(
e
){
w
.
append
(
e
),
f
.
initFilter
({
fCbFn
:
n
,
hCbFn
:
function
(){
z
.
addClass
(
"active"
),
z
.
siblings
(
".filter"
).
removeClass
(
"active"
)}})}}),
u
(
d
(
".lazy"
)),
g
.
bindWirteLocal
(
d
(
"#search-form"
)),
t
=
new
c
(
k
[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
var
a
,
s
,
i
,
t
=
d
(
e
.
target
).
closest
(
"li"
);
if
(
t
.
hasClass
(
"filter"
))
t
.
hasClass
(
"active"
)?(
f
.
hideFilter
(),
z
.
addClass
(
"active"
),
t
.
removeClass
(
"active"
)):(
z
=
t
.
siblings
(
".active"
),
z
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
),
f
.
showFilter
());
else
{
if
(
t
.
hasClass
(
"new"
)?
s
=
"newest"
:
t
.
hasClass
(
"price"
)?
s
=
"price"
:
t
.
hasClass
(
"discount"
)
&&
(
s
=
"discount"
),
a
=
q
[
s
],
t
.
hasClass
(
"active"
)){
if
(
t
.
hasClass
(
"new"
))
return
;(
t
.
hasClass
(
"price"
)
||
t
.
hasClass
(
"discount"
))
&&
(
t
.
find
(
".icon > .iconfont"
).
toggleClass
(
"cur"
),
z
=
t
,
a
.
reload
=!
0
,
a
.
order
=
0
===
a
.
order
?
1
:
0
)}
else
{
if
(
i
=
t
.
siblings
(
".active"
),
z
=
t
,
i
.
hasClass
(
"filter"
))
f
.
hideFilter
();
else
switch
(
w
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
s
){
case
"newest"
:
y
.
removeClass
(
"hide"
);
break
;
case
"price"
:
b
.
removeClass
(
"hide"
);
break
;
case
"discount"
:
C
.
removeClass
(
"hide"
)}
i
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
)}
a
.
reload
&&
n
()}}),
d
(
window
).
scroll
(
function
(){
d
(
window
).
scrollTop
()
+
j
>
d
(
document
).
height
()
-
.
25
*
w
.
height
()
&&
n
()}),
p
.
length
>
0
&&
(
o
=
new
c
(
p
.
children
(
".btn-intro"
)[
0
]),
o
.
on
(
"tap"
,
function
(){
h
.
removeClass
(
"hide"
),
d
(
"body"
).
addClass
(
"overflow-hidden"
)}),
r
=
new
c
(
document
.
getElementById
(
"intro-box"
)),
r
.
on
(
"tap"
,
function
(
e
){
var
a
=
d
(
e
.
target
);
e
.
srcEvent
.
preventDefault
(),(
0
===
a
.
closest
(
"#brand-intro"
).
length
||
a
.
hasClass
(
"close-intro"
))
&&
(
h
.
addClass
(
"hide"
),
d
(
"body"
).
removeClass
(
"overflow-hidden"
))}),
l
=
new
c
(
p
.
children
(
".btn-col"
)[
0
]),
l
.
on
(
"tap"
,
function
(){
var
e
,
a
=
d
(
this
),
s
=
p
.
data
(
"id"
);
e
=
a
.
hasClass
(
"coled"
)?
"cancel"
:
"ok"
,
d
.
ajax
({
type
:
"POST"
,
url
:
"/product/opt/favoriteBrand"
,
data
:{
id
:
s
,
opt
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
a
.
toggleClass
(
"coled"
):
m
.
show
(
e
.
message
)},
error
:
function
(){
m
.
show
(
"网络断开连接了~"
)}})})),
n
()}),
define
(
"js/product/detail/detail"
,[
"jquery"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
s
){
var
n
,
i
=
e
(
"jquery"
),
t
=
e
(
"swiper"
),
o
=
e
(
"lazyload"
);
o
(
i
(
"img.lazy"
)),
n
=
new
t
(
".banner-swiper"
,{
loop
:
!
0
,
pagination
:
".banner-top .pagination-inner"
,
slideElement
:
"div"
,
nextButton
:
".swiper-button-next"
,
prevButton
:
".swiper-button-prev"
})});
\ No newline at end of file
define
(
"index"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"mlellipsis"
,
"iscroll-probe"
,
"index"
],
function
(
e
,
a
,
n
){
var
s
;
e
(
"js/common"
),
e
(
"js/category/entry"
),
e
(
"js/guang/entry"
),
e
(
"js/home/entry"
),
e
(
"js/index/entry"
),
e
(
"js/passport/entry"
),
e
(
"js/product/entry"
),
n
.
exports
=
s
}),
define
(
"js/common"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
,
n
,
s
=
document
.
cookie
;
return
document
.
cookie
&&
""
!==
document
.
cookie
&&
(
n
=
s
.
indexOf
(
e
+
"="
),
n
>-
1
&&
(
n
+=
e
.
length
+
1
,
a
=
decodeURIComponent
(
d
.
trim
(
s
.
substring
(
n
,
s
.
indexOf
(
";"
,
n
)))))),
a
}
function
i
(
e
,
a
,
n
){
var
s
,
i
,
t
,
o
,
r
=
""
;
"undefined"
!=
typeof
a
&&
(
n
=
n
||
{},
null
===
a
&&
(
a
=
""
,
n
.
expires
=-
1
),
n
.
expires
&&
(
"number"
==
typeof
n
.
expires
||
n
.
expires
.
toUTCString
)
&&
(
"number"
==
typeof
n
.
expires
?(
o
=
new
Date
,
o
.
setTime
(
o
.
getTime
()
+
24
*
n
.
expires
*
60
*
60
*
1
e3
)):
o
=
n
.
expires
,
r
=
"; expires="
+
o
.
toUTCString
()),
s
=
n
.
path
?
"; path="
+
n
.
path
:
""
,
i
=
n
.
domain
?
"; domain="
+
n
.
domain
:
""
,
t
=
n
.
secure
?
"; secure"
:
""
,
document
.
cookie
=
[
e
,
"="
,
encodeURIComponent
(
a
),
r
,
s
,
i
,
t
].
join
(
""
))}
function
t
(){
var
e
,
a
=
s
(
"_UID"
);
return
"undefined"
==
typeof
a
?
0
:(
e
=
a
.
split
(
"::"
),
"undefined"
==
typeof
e
||
e
.
length
<
4
?
0
:
e
)}
function
o
(){
var
e
=
t
();
return
0
===
e
?
0
:
e
[
1
]}
function
r
(){
var
e
=
s
(
"_g"
);
return
"undefined"
==
typeof
e
?
""
:
JSON
.
parse
(
e
).
k
}
function
l
(){
0
!==
c
.
length
&&
(
d
(
"body"
).
height
()
<
d
(
window
).
height
()
-
u
?
c
.
addClass
(
"bottom"
):
c
.
removeClass
(
"bottom"
))}
var
d
=
e
(
"jquery"
),
c
=
d
(
"#yoho-footer"
),
u
=
120
;
!
function
(){
var
e
=
c
.
children
(
".op-row"
),
a
=
t
();
d
(
"body"
).
height
()
<
d
(
window
).
height
()
-
u
&&
c
.
addClass
(
"bottom"
),
0
===
a
?
e
.
prepend
(
'<a href="http://m.yohobuy.com/signin.html">登录</a><span class="sep-line">|</span><a href="http://m.yohobuy.com/reg.html">注册</a>'
):
e
.
prepend
(
'Hi,<a class="user-name" href="http://m.yohobuy.com/home?tmp='
+
Math
.
random
()
+
'">'
+
a
[
0
]
+
'</a><a href="http://m.yohobuy.com/passport/signout/index?token='
+
a
[
3
]
+
'">退出</a>'
),
c
.
removeClass
(
"hide"
)}(),
window
.
cookie
=
s
,
window
.
setCookie
=
i
,
window
.
getUser
=
t
,
window
.
getUid
=
o
,
window
.
getShoppingKey
=
r
,
window
.
rePosFooter
=
l
}),
define
(
"js/category/entry"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
e
(
"js/category/index"
),
e
(
"js/category/brand"
)}),
define
(
"js/category/index"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
n
){
var
s
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
t
(
".category-nav"
),
l
=
t
(
".category-container"
),
d
=
l
.
children
(
".content"
),
c
=
d
.
not
(
".hide"
);
t
(
"#search-input"
).
focus
(
function
(){
t
(
this
).
blur
()}),
s
=
new
o
(
r
[
0
]),
s
.
on
(
"tap"
,
function
(
e
){
var
a
=
t
(
e
.
target
).
closest
(
"li"
),
n
=
a
.
index
();
a
.
hasClass
(
"focus"
)
||
(
r
.
find
(
"li.focus"
).
removeClass
(
"focus"
),
a
.
addClass
(
"focus"
),
c
.
addClass
(
"hide"
),
c
=
d
.
eq
(
n
).
removeClass
(
"hide"
))}),
i
=
new
o
(
l
[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
s
,
i
=
t
(
e
.
target
);
if
(
n
=
i
.
closest
(
".p-level-item"
),
n
.
length
>
0
){
if
(
s
=
n
.
index
(),
a
=
i
.
closest
(
".content"
).
find
(
".sub-level"
),
i
.
hasClass
(
"focus"
))
return
;
i
.
closest
(
".primary-level"
).
children
(
".focus"
).
removeClass
(
"focus"
),
i
.
addClass
(
"focus"
),
a
.
not
(
".hide"
).
addClass
(
"hide"
),
a
.
eq
(
s
).
removeClass
(
"hide"
)}})}),
define
(
"js/category/brand"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
=
o
(
"#keyword"
).
val
(),
n
=
o
(
"#gender"
).
val
();
o
.
get
(
"/brands/search"
,{
keyword
:
a
,
gender
:
n
,
type
:
e
},
function
(
e
){
o
(
".search-result"
).
html
(
e
)})}
var
i
,
t
,
o
=
e
(
"jquery"
),
r
=
e
(
"hammer"
),
l
=
e
(
"swiper"
),
d
=
e
(
"lazyload"
),
c
=
o
(
".brand-list"
),
u
=
o
(
".newbrand-search"
).
outerHeight
(),
p
=
o
(
".yoho-header"
).
outerHeight
(),
h
=
parseInt
(
u
)
+
parseInt
(
p
)
-
1
;
i
=
new
l
(
".swiper-container"
,{
lazyLoading
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
pagination
:
".swiper-pagination .pagination-inner"
}),
d
(
o
(
"img.lazy"
)),
o
(
".yoho-header"
).
css
({
"z-index"
:
2
,
position
:
"fixed"
}),
o
(
".banner-top"
).
css
(
"padding-top"
,
"90px"
),
c
.
length
>
0
&&
o
(
window
).
scroll
(
function
(){
var
e
=
o
(
window
).
scrollTop
();
o
(
".brand-list"
).
each
(
function
(){
var
a
=
o
(
this
).
offset
().
top
-
h
;
e
>=
a
?(
c
.
find
(
".title-bar"
).
css
(
"position"
,
"static"
),
o
(
this
).
find
(
".title-bar"
).
css
({
position
:
"fixed"
,
top
:
h
})):
o
(
this
).
find
(
".title-bar"
).
css
(
"position"
,
"static"
)})}),
o
(
"#right-bar .con"
).
find
(
"b"
).
unbind
()[
0
]
&&
(
t
=
new
r
(
o
(
"#right-bar .con"
).
find
(
"b"
).
unbind
()[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
var
a
=
o
(
this
).
index
();
o
(
".bar-"
+
a
).
size
()
>
0
&&
(
document
.
body
.
scrollTop
=
parseInt
(
o
(
".bar-"
+
a
)[
0
].
offsetTop
)
-
parseInt
(
h
-
1
))})),
o
(
"#keyword"
).
on
(
"keyup"
,
function
(){
s
(
0
)}).
on
(
"keydown"
,
function
(){
o
(
this
).
closest
(
".search-box"
).
css
(
"width"
,
"11.25rem"
),
o
(
".search-action"
).
show
()}).
on
(
"blur"
,
function
(){
o
(
this
).
closest
(
".search-box"
).
css
(
"width"
,
"12.5rem"
),
o
(
".search-action"
).
hide
()}),
o
(
"#search-btn"
).
on
(
"tap"
,
function
(){
s
(
1
)}),
o
(
".clear-text"
).
on
(
"tap"
,
function
(){
o
(
"#keyword"
).
val
(
""
).
trigger
(
"input"
)}),
o
(
"form.search-box"
).
on
(
"submit"
,
function
(){
return
!
1
}),
o
(
".clear-history"
).
on
(
"tap"
,
function
(){
o
(
"#history-keyword"
).
remove
(),
o
(
this
).
hide
()})}),
define
(
"js/guang/entry"
,[
"jquery"
,
"hammer"
,
"lazyload"
,
"swiper"
,
"mlellipsis"
,
"iscroll-probe"
,
"index"
],
function
(
e
,
a
,
n
){
e
(
"js/guang/plus-star/list"
),
e
(
"js/guang/plus-star/detail"
),
e
(
"js/guang/home"
),
e
(
"js/guang/list"
),
e
(
"js/guang/detail"
)}),
define
(
"js/guang/plus-star/list"
,[
"jquery"
,
"hammer"
,
"lazyload"
,
"swiper"
,
"index"
],
function
(
e
,
a
,
n
){
var
s
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
e
(
"lazyload"
),
l
=
e
(
"swiper"
),
d
=
t
(
"#nav-tab > li"
),
c
=
t
(
"#ps-content > .content"
);
r
(
t
(
"img.lazy"
)),
s
=
new
l
(
".swiper-container"
,{
lazyLoading
:
!
0
,
pagination
:
".swiper-pagination"
}),
i
=
new
o
(
document
.
getElementById
(
"nav-tab"
)),
i
.
on
(
"tap"
,
function
(
e
){
var
a
=
t
(
e
.
target
).
closest
(
"li"
);
a
.
hasClass
(
"focus"
)
||
(
d
.
toggleClass
(
"focus"
),
c
.
toggleClass
(
"hide"
),
t
(
document
).
trigger
(
"scroll"
))})}),
define
(
"js/guang/plus-star/detail"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
n
){
var
s
,
i
,
t
,
o
,
r
=
e
(
"jquery"
),
l
=
e
(
"hammer"
),
d
=
e
(
"mlellipsis"
),
c
=
e
(
"lazyload"
),
u
=
r
(
"#intro"
),
p
=
r
(
"#intro-more-txt"
),
h
=
r
(
"#related-infos-container"
),
f
=
e
(
"js/guang/info"
),
g
=
e
(
"js/plugin/tip"
),
m
=
r
(
"#brand-info"
).
data
(
"id"
);
d
.
init
(),
c
(
r
(
"img.lazy"
)),
u
[
0
].
mlellipsis
(
3
),
setTimeout
(
function
(){
s
=
u
.
text
(),
i
=
u
.
attr
(
"title"
)}),
f
.
initInfosEvt
(
h
),
t
=
new
l
(
document
.
getElementById
(
"more-intro"
)),
t
.
on
(
"tap"
,
function
(
e
){
var
a
=
r
(
e
.
target
).
closest
(
"#more-intro"
);
a
.
toggleClass
(
"spread"
),
a
.
hasClass
(
"spread"
)?(
u
.
text
(
i
),
p
.
text
(
"收起"
)):(
u
.
text
(
s
),
p
.
text
(
"more"
),
r
(
window
).
scrollTop
(
0
,
400
)),
e
.
preventDefault
()}),
o
=
new
l
(
document
.
getElementById
(
"brand-like"
)),
o
.
on
(
"tap"
,
function
(
e
){
var
a
=
"ok"
,
n
=
r
(
e
.
target
);
e
.
preventDefault
(),
n
.
hasClass
(
"like"
)
&&
(
a
=
"cancel"
),
r
.
ajax
({
type
:
"POST"
,
url
:
"/product/opt/favoriteBrand"
,
data
:{
id
:
m
,
opt
:
a
},
success
:
function
(
e
){
200
===
e
.
code
?
n
.
toggleClass
(
"like"
):
400
===
e
.
code
||
412
===
e
.
code
?
g
.
show
(
"未登录"
):
g
.
show
(
e
.
message
)},
error
:
function
(){
g
.
show
(
"网络断开连接了~"
)}})})}),
define
(
"js/guang/info"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
d
(
e
.
find
(
"img.lazy"
)),
e
.
each
(
function
(){
var
e
=
o
(
this
),
a
=
e
.
find
(
".info-title"
),
n
=
e
.
find
(
".info-text"
);
a
[
0
].
mlellipsis
(
2
),
n
[
0
].
mlellipsis
(
2
)})}
function
i
(
e
){
var
a
=
new
r
(
e
[
0
]);
a
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
s
=
o
(
e
.
target
),
i
=
"ok"
;
a
=
s
.
closest
(
".like-btn"
),
a
.
length
>
0
&&
(
a
.
hasClass
(
"like"
)
&&
(
i
=
"cancel"
),
n
=
s
.
closest
(
".guang-info"
),
o
.
ajax
({
type
:
"POST"
,
url
:
"/guang/opt/praiseArticle"
,
data
:{
id
:
n
.
data
(
"id"
),
opt
:
i
},
success
:
function
(
e
){
var
n
=
e
.
code
;
200
===
n
&&
(
a
.
next
(
".like-count"
).
text
(
e
.
data
),
a
.
toggleClass
(
"like"
))},
error
:
function
(){
c
.
show
(
"网络断开连接了~"
)}}))}),
s
(
e
.
find
(
".guang-info"
))}
function
t
(
e
,
a
){
var
n
;
g
||
a
.
end
||
(
1
===
a
.
page
&&
u
.
showLoadingMask
(),
n
=
e
.
find
(
".guang-info"
).
length
,
g
=!
0
,
o
.
ajax
({
type
:
"GET"
,
url
:
" /guang/index/page"
,
data
:
a
,
success
:
function
(
i
){
var
t
;
return
" "
===
i
?(
a
.
end
=!
0
,
g
=!
1
,
h
.
addClass
(
"hide"
),
void
f
.
removeClass
(
"hide"
)):(
e
.
append
(
i
),
t
=
n
>
0
?
e
.
find
(
".guang-info:gt("
+
(
n
-
1
)
+
")"
):
e
.
find
(
".guang-info"
),
s
(
t
),
1
===
a
.
page
&&
u
.
hideLoadingMask
(),
a
.
page
++
,
void
(
g
=!
1
))},
error
:
function
(){
c
.
show
(
"网络断开连接了~"
),
g
=!
1
}}))}
var
o
=
e
(
"jquery"
),
r
=
e
(
"hammer"
),
l
=
e
(
"mlellipsis"
),
d
=
e
(
"lazyload"
),
c
=
e
(
"js/plugin/tip"
),
u
=
e
(
"js/plugin/loading"
),
p
=
o
(
"#load-more-info"
),
h
=
o
(
""
),
f
=
o
(
""
),
g
=!
1
;
l
.
init
(),
p
.
length
>
0
&&
(
h
=
p
.
children
(
".loading"
),
f
=
p
.
children
(
".no-more"
)),
a
.
initInfosEvt
=
i
,
a
.
setLazyLoadAndMellipsis
=
s
,
a
.
loadMore
=
t
}),
define
(
"js/plugin/tip"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(
e
,
a
){
var
n
,
s
;
"undefined"
!=
typeof
e
&&
(
n
=
e
.
toString
(),
s
=
a
&&
a
>
0
?
a
:
2
e3
,
i
.
text
(
n
).
show
(),
t
=
setTimeout
(
function
(){
"block"
===
i
.
css
(
"display"
)
&&
i
.
hide
()},
s
))}
var
i
,
t
,
o
=
e
(
"jquery"
);
!
function
(){
var
e
=
'<div id="yoho-tip" class="yoho-tip"></div>'
;
o
(
".yoho-page"
).
append
(
e
),
i
=
o
(
"#yoho-tip"
),
i
.
on
(
"tap"
,
function
(){
i
.
hide
(),
clearTimeout
(
t
)})}(),
a
.
show
=
s
}),
define
(
"js/plugin/loading"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(){
t
.
removeClass
(
"hide"
)}
function
i
(){
t
.
addClass
(
"hide"
)}
var
t
,
o
=
e
(
"jquery"
),
r
=
o
(
".yoho-page"
);
!
function
(){
var
e
=
'<div class="loading-mask hide"><div class="loading"></div></div>'
;
r
.
append
(
e
),
t
=
r
.
children
(
".loading-mask"
)}(),
a
.
showLoadingMask
=
s
,
a
.
hideLoadingMask
=
i
}),
define
(
"js/guang/home"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"mlellipsis"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
var
s
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
e
(
"swiper"
),
l
=
e
(
"js/guang/info"
),
d
=
l
.
loadMore
,
c
=
t
(
"#load-more-info"
),
u
=
t
(
""
),
p
=
t
(
""
),
h
=
t
(
window
).
height
(),
f
=
c
.
height
(),
g
=
t
(
"#info-list"
),
m
=
g
.
children
(
".info-list"
),
v
=
t
(
"#guang-nav"
),
w
=
v
.
children
(
".focus"
),
y
=
w
.
data
(
"type"
),
b
=
{};
c
.
length
>
0
&&
(
u
=
c
.
children
(
".loading"
),
p
=
c
.
children
(
".no-more"
)),
s
=
new
r
(
".swiper-container"
,{
lazyLoading
:
!
0
,
pagination
:
".swiper-pagination"
}),
l
.
initInfosEvt
(
g
),
function
(){
var
e
=
t
(
"#gender"
).
val
();
v
.
children
(
".guang-nav-item"
).
each
(
function
(){
var
a
=
t
(
this
).
data
(
"type"
),
n
=
t
(
this
).
hasClass
(
"focus"
);
b
[
a
]
=
{
page
:
n
?
2
:
1
,
gender
:
e
,
type
:
a
,
end
:
!
1
}})}(),
i
=
new
o
(
v
[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
s
=
t
(
e
.
target
).
closest
(
".guang-nav-item"
);
s
.
hasClass
(
"focus"
)
||
(
n
=
s
.
index
(),
s
.
addClass
(
"focus"
),
w
.
removeClass
(
"focus"
),
m
.
not
(
".hide"
).
addClass
(
"hide"
),
a
=
m
.
eq
(
n
),
a
.
removeClass
(
"hide"
),
w
=
s
,
y
=
s
.
data
(
"type"
),
1
===
b
[
y
].
page
&&
d
(
a
,
b
[
y
]),
b
[
y
].
end
?(
u
.
addClass
(
"hide"
),
p
.
removeClass
(
"hide"
)):(
u
.
removeClass
(
"hide"
),
p
.
addClass
(
"hide"
)))}),
t
(
document
).
scroll
(
function
(){
t
(
window
).
scrollTop
()
+
h
>=
t
(
document
).
height
()
-
f
&&
d
(
m
.
not
(
".hide"
),
b
[
y
])})}),
define
(
"js/guang/list"
,[
"jquery"
,
"hammer"
,
"mlellipsis"
,
"lazyload"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
e
(
"js/guang/info"
),
t
=
i
.
loadMore
,
o
=
s
(
window
).
height
(),
r
=
s
(
"#load-more"
).
height
(),
l
=
s
(
"#author-infos"
),
d
=
s
(
"#tag"
),
c
=
s
(
"#gender"
),
u
=
s
(
"#isApp"
),
p
=
{
page
:
2
,
end
:
!
1
},
h
=
s
(
"#info-list"
);
i
.
initInfosEvt
(
h
),
l
.
length
>
0
&&
s
.
extend
(
p
,{
authorId
:
l
.
data
(
"id"
)}),
d
.
length
>
0
&&
s
.
extend
(
p
,{
tag
:
d
.
val
(),
gender
:
c
.
val
(),
isApp
:
u
.
val
()}),
s
(
document
).
scroll
(
function
(){
s
(
window
).
scrollTop
()
+
o
>=
s
(
document
).
height
()
-
r
-
50
&&
t
(
h
,
p
)})}),
define
(
"js/guang/detail"
,[
"jquery"
,
"mlellipsis"
,
"lazyload"
,
"iscroll-probe"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
=
e
.
offset
().
left
,
n
=-
b
+
a
+
w
/
2
+
"px"
;
o
.
css
({
backgroundPosition
:
n
+
" bottom"
}),
m
&&
y
.
css
({
backgroundPosition
:
n
+
" bottom"
})}
function
i
(
e
){
var
a
,
n
,
i
,
p
=
u
(
e
.
currentTarget
),
f
=
p
.
index
();
p
.
hasClass
(
"focus"
)
||
(
r
.
filter
(
".focus"
).
removeClass
(
"focus"
),
m
&&
(
a
=
p
.
closest
(
".fixed-thumb-container"
).
length
>
0
?
o
:
y
,
n
=
a
.
find
(
".thumb"
).
eq
(
f
),
y
.
find
(
".thumb.focus"
).
removeClass
(
"focus"
),
n
.
addClass
(
"focus"
)),
p
.
addClass
(
"focus"
),
s
(
p
),
l
.
not
(
".hide"
).
addClass
(
"hide"
),
i
=
l
.
eq
(
f
),
i
.
removeClass
(
"hide"
),
h
(
i
.
find
(
".lazy"
)),
m
?
c
&&
c
.
scrollToElement
(
d
,
400
):
u
(
"body"
).
animate
({
scrollTop
:
t
.
offset
().
top
},
400
))}
var
t
,
o
,
r
,
l
,
d
,
c
,
u
=
e
(
"jquery"
),
p
=
e
(
"mlellipsis"
),
h
=
e
(
"lazyload"
),
f
=
e
(
"iscroll-probe"
),
g
=
u
(
".author .intro"
),
m
=
navigator
.
userAgent
.
indexOf
(
"iPhone"
)
>
0
?
!
0
:
!
1
,
v
=
u
(
".collocation-block"
).
length
>
0
?
!
0
:
!
1
,
w
=
0
,
y
=
u
(
""
),
d
=
document
.
querySelector
(
"#wrapper .collocation-block"
),
b
=
u
(
window
).
width
();
e
(
"js/plugin/wx-share"
)(),
m
&&
u
(
"#wrapper"
).
addClass
(
"ios"
),
p
.
init
(),
h
(
u
(
".lazy"
)),
u
(
".info-list .title, .one-good .reco-name"
).
each
(
function
(){
this
.
mlellipsis
(
2
)}),
parseInt
(
g
.
offset
().
left
,
10
)
===
parseInt
(
g
.
css
(
"margin-left"
),
10
)
&&
g
.
css
(
"padding-top"
,
0
),
v
&&
(
t
=
u
(
".collocation-block"
),
o
=
t
.
children
(
".thumb-container"
),
r
=
o
.
find
(
"li"
),
l
=
t
.
find
(
".prod"
),
w
=
r
.
width
(),
m
&&
(
y
=
u
(
"#wrapper"
).
after
(
o
.
clone
().
addClass
(
"fixed-thumb-container fixed-bottom"
)).
next
(
".thumb-container"
),
h
(
y
.
find
(
".lazy"
),{
event
:
"sporty"
})),
s
(
r
.
filter
(
".focus"
)),
o
.
delegate
(
".thumb"
,
"touchend"
,
i
),
m
&&
y
.
delegate
(
".thumb"
,
"touchend"
,
i
)),
window
.
onload
=
function
(){
var
e
,
a
,
n
,
s
,
i
,
r
=
u
(
"#scroller"
);
if
(
m
){
if
(
c
=
new
f
(
"#wrapper"
,{
probeType
:
3
,
mouseWheel
:
!
0
,
click
:
!
0
}),
document
.
addEventListener
(
"touchmove"
,
function
(
e
){
e
.
preventDefault
()},
!
1
),
!
v
)
return
void
c
.
on
(
"scroll"
,
function
(){
r
.
trigger
(
"scroll"
)});
e
=
u
(
window
).
height
(),
i
=
y
[
0
],
a
=
o
.
height
(),
n
=
t
.
height
(),
s
=
t
.
offset
().
top
,
c
.
on
(
"scroll"
,
function
(){
var
t
=-
this
.
y
,
o
=
i
.
className
;
s
-
e
+
a
>=
t
?
-
1
===
o
.
indexOf
(
"fixed-bottom"
)
&&
y
.
addClass
(
"fixed-bottom"
).
removeClass
(
"hide"
):
s
>=
t
?
-
1
===
o
.
indexOf
(
"hide"
)
&&
y
.
addClass
(
"hide"
).
removeClass
(
"fixed-bottom fixed-top"
):
s
+
n
-
a
>=
t
?
-
1
===
o
.
indexOf
(
"fixed-top"
)
&&
y
.
addClass
(
"fixed-top"
).
removeClass
(
"hide absolute"
).
css
(
"top"
,
""
):
s
+
n
>=
t
?(
-
1
===
o
.
indexOf
(
"absolute"
)
&&
y
.
addClass
(
"absolute"
).
removeClass
(
"fixed-top hide"
),
i
.
style
.
top
=
s
+
n
-
a
-
t
+
"px"
):
t
>
s
+
n
&&-
1
===
o
.
indexOf
(
"hide"
)
&&
y
.
addClass
(
"hide"
).
removeClass
(
"absolute"
),
r
.
trigger
(
"scroll"
)})}}}),
define
(
"js/plugin/wx-share"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
);
n
.
exports
=
function
(){
var
e
=
"http://www.yohoshow.com/api/wechat/getSignPackage"
;
s
.
getJSON
(
e
+
"?pageurl="
+
encodeURIComponent
(
location
.
href
.
split
(
"#"
)[
0
])
+
"&callback=?"
,
function
(
e
){
var
a
,
n
,
s
,
i
;
void
0
!==
e
&&
""
!==
e
&&
(
a
=
e
.
appId
.
toString
(),
n
=
e
.
timestamp
,
s
=
e
.
nonceStr
.
toString
(),
i
=
e
.
signature
.
toString
(),
wx
.
config
({
debug
:
!
1
,
appId
:
a
,
timestamp
:
n
,
nonceStr
:
s
,
signature
:
i
,
jsApiList
:[
"checkJsApi"
,
"onMenuShareTimeline"
,
"onMenuShareAppMessage"
,
"onMenuShareQQ"
,
"onMenuShareWeibo"
,
"hideMenuItems"
,
"showMenuItems"
,
"hideAllNonBaseMenuItem"
,
"showAllNonBaseMenuItem"
,
"translateVoice"
,
"startRecord"
,
"stopRecord"
,
"onRecordEnd"
,
"playVoice"
,
"pauseVoice"
,
"stopVoice"
,
"uploadVoice"
,
"downloadVoice"
,
"chooseImage"
,
"previewImage"
,
"uploadImage"
,
"downloadImage"
,
"getNetworkType"
,
"openLocation"
,
"getLocation"
,
"hideOptionMenu"
,
"showOptionMenu"
,
"closeWindow"
,
"scanQRCode"
,
"chooseWXPay"
,
"openProductSpecificView"
,
"addCard"
,
"chooseCard"
,
"openCard"
]}))}),
wx
.
ready
(
function
(){
var
e
=
s
(
"#shareTitle"
).
val
(),
a
=
s
(
"#shareImg"
).
val
(),
n
=
s
(
"#shareDesc"
).
val
(),
i
=
s
(
"#shareLink"
).
val
(),
t
=
{
title
:
e
,
desc
:
n
,
imgUrl
:
a
,
link
:
i
};
wx
.
onMenuShareAppMessage
(
t
),
wx
.
onMenuShareTimeline
(
t
),
wx
.
onMenuShareQQ
(
t
),
wx
.
onMenuShareWeibo
(
t
)})}}),
define
(
"js/home/entry"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
e
(
"js/home/home"
),
e
(
"js/home/maybe-like"
)}),
define
(
"js/home/home"
,[
"jquery"
,
"hammer"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
function
s
(){
x
+=
10
,
k
.
css
({
transform
:
"rotateX("
+
x
+
"deg)"
,
"-webkit-transform"
:
"rotateX("
+
x
+
"deg)"
,
"-moz-transform"
:
"rotateX("
+
x
+
"deg)"
}),
x
/
90
%
2
===
1
&&
(
q
?(
k
.
addClass
(
"animate"
),
q
=!
1
):(
k
.
removeClass
(
"animate"
),
q
=!
0
)),
x
/
90
%
2
===
0
&&
x
%
360
!==
0
?
window
.
setTimeout
(
s
,
3
e3
):
x
%
360
===
0
?
window
.
setTimeout
(
s
,
6
e4
):
d
(
function
(){
s
()})}
var
i
,
t
,
o
,
r
,
l
,
d
,
c
,
u
,
p
,
h
,
f
,
g
,
m
=
e
(
"jquery"
),
v
=
e
(
"hammer"
),
w
=
e
(
"swiper"
),
y
=
e
(
"lazyload"
),
b
=
m
(
".mobile-wrap"
),
C
=
m
(
".overlay"
),
j
=
m
(
".side-nav"
),
x
=
0
,
k
=
m
(
".home-header .logo"
),
q
=!
0
;
e
(
"js/home/maybe-like"
),
y
(
m
(
"img.lazy"
)),
f
=
new
v
(
m
(
".nav-btn"
)[
0
]),
f
.
on
(
"tap"
,
function
(
e
){
return
b
.
addClass
(
"menu-open"
),
C
.
show
().
css
(
"opacity"
,.
3
),
j
.
addClass
(
"on"
),
m
(
"body"
).
css
({
height
:
m
(
window
).
height
(),
width
:
"100%"
,
overflow
:
"hidden"
}),
e
.
srcEvent
.
stopPropagation
(),
!
1
}),
g
=
new
v
(
m
(
".mobile-wrap"
)[
0
]),
g
.
on
(
"tap"
,
function
(
e
){
return
b
.
hasClass
(
"menu-open"
)?(
b
.
removeClass
(
"menu-open"
),
C
.
css
(
"opacity"
,
0
),
m
(
".sub-nav"
).
removeClass
(
"show"
),
j
.
removeClass
(
"on"
),
m
(
"body"
).
css
({
height
:
"auto"
,
overflow
:
"auto"
}),
setTimeout
(
function
(){
m
(
".overlay"
).
hide
()},
300
),
e
.
srcEvent
.
stopPropagation
(),
!
1
):
void
0
}),
j
.
on
(
"touchend"
,
"li"
,
function
(){
m
(
this
).
find
(
".sub-nav"
).
size
()
>
0
&&
(
m
(
".sub-nav"
).
removeClass
(
"show"
),
m
(
this
).
find
(
".sub-nav"
).
addClass
(
"show"
))}),
m
(
".sub-nav"
).
each
(
function
(){
m
(
this
).
find
(
"li"
).
eq
(
0
).
on
(
"touchend"
,
function
(
e
){
return
m
(
".sub-nav"
).
removeClass
(
"show"
),
!
1
})}).
on
(
"touchend"
,
function
(){
m
(
".sub-nav"
).
find
(
"li"
).
removeClass
(
"current"
)}),
m
(
".banner-swiper"
).
find
(
"li"
).
size
()
>
1
&&
(
i
=
new
w
(
".banner-swiper"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
".banner-top .pagination-inner"
})),
o
=
new
w
(
".brands-swiper"
,{
grabCursor
:
!
0
,
slidesPerView
:
"auto"
,
wrapperClass
:
"brands-list"
,
slideElement
:
"li"
}),
t
=
new
w
(
".recommend-swiper"
,{
grabCursor
:
!
0
,
slidesPerView
:
"auto"
,
wrapperClass
:
"recommend-list"
,
slideElement
:
"li"
}),
m
(
".trend-topic-swiper"
).
find
(
"li"
).
size
()
>
1
&&
(
r
=
new
w
(
".trend-topic-swiper"
,{
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
".trend-topic-content .pagination-inner"
})),
m
(
".category-swiper"
).
each
(
function
(
e
,
a
){
p
=
"category-swiper"
+
e
,
m
(
this
).
addClass
(
p
),
m
(
"."
+
p
).
find
(
".swiper-slide"
).
size
()
>
1
&&
(
l
=
new
w
(
"."
+
p
,{
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
slideElement
:
"li"
,
pagination
:
"."
+
p
+
" .pagination-inner"
}))}),
d
=
function
(){
var
e
=
null
,
a
=
[
"webkit"
,
"moz"
,
"ms"
];
for
(
u
=
0
;
u
<
a
.
length
;
u
++
)
c
=
a
[
u
]
+
"RequestAnimationFrame"
,
window
[
c
]
&&
(
h
=!
0
,
e
=
c
);
return
h
?
function
(
a
){
window
[
e
](
a
)}:
function
(
e
){
window
.
setTimeout
(
e
,
67
)}}(),
setTimeout
(
s
,
3
e3
)}),
define
(
"js/home/maybe-like"
,[
"jquery"
,
"hammer"
,
"lazyload"
],
function
(
e
,
a
,
n
){
function
s
(){
m
||
(
m
=!
0
,
d
.
ajax
({
type
:
"GET"
,
url
:
o
,
data
:{
page
:
v
+
1
},
success
:
function
(
e
){
return
" "
===
e
?(
m
=!
0
,
void
(
w
&&
(
o
=
"1,3"
===
w
?
"/boys/bottomBanner"
:
"/girls/bottomBanner"
,
d
.
ajax
({
type
:
"GET"
,
url
:
o
,
success
:
function
(
e
){
e
&&
(
d
(
"#load-more-img"
).
show
(),
d
(
"#load-more-img a"
).
attr
(
"href"
,
e
.
url
),
d
(
"#load-more-img a > img"
).
attr
(
"src"
,
e
.
img
))},
error
:
function
(){}})))):(
t
=
g
.
find
(
".good-info"
).
length
,
g
.
append
(
e
),
p
(
0
===
t
?
g
.
find
(
".good-info"
).
find
(
"img.lazy"
):
g
.
find
(
".good-info:gt("
+
(
t
-
1
)
+
")"
).
find
(
"img.lazy"
)),
m
=!
1
,
void
v
++
)},
error
:
function
(){
u
.
show
(
"网络断开连接了~"
),
m
=!
1
}}))}
var
i
,
t
,
o
,
r
,
l
,
d
=
e
(
"jquery"
),
c
=
e
(
"hammer"
),
u
=
e
(
"js/plugin/tip"
),
p
=
e
(
"lazyload"
),
h
=
d
(
window
).
height
(),
f
=
d
(
"#load-more"
).
height
(),
g
=
d
(
"#goods-list"
),
m
=!
1
,
v
=
0
,
w
=
null
,
y
=
d
(
".mobile-wrap"
).
hasClass
(
"kids-wrap"
)?
!
0
:
!
1
,
b
=
d
(
".mobile-wrap"
).
hasClass
(
"lifestyle-wrap"
)?
!
0
:
!
1
,
C
=
d
(
"#maybe-like-nav"
);
y
?
o
=
"/product/recom/maylikekids"
:
b
?
o
=
"/product/recom/maylikelife"
:(
w
=
d
(
".mobile-wrap"
).
hasClass
(
"boys-wrap"
)?
"1,3"
:
"2,3"
,
o
=
"/product/recom/maylike?gender="
+
w
),
r
=
C
.
children
(
".focus"
),
b
&&
(
i
=
new
c
(
C
[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
=
d
(
e
.
target
).
closest
(
"li"
),
s
=
d
(
".goods-list"
);
n
.
hasClass
(
"focus"
)
||
(
l
=
n
.
index
(),
n
.
addClass
(
"focus"
),
r
.
removeClass
(
"focus"
),
s
.
not
(
".hide"
).
addClass
(
"hide"
),
a
=
s
.
eq
(
l
),
a
.
removeClass
(
"hide"
),
r
=
n
,
d
(
document
).
trigger
(
"scroll"
))})),
d
(
".maybe-like p"
).
on
(
"touchstart"
,
function
(
e
){
s
()}),
d
(
window
).
scroll
(
function
(){
d
(
window
).
scrollTop
()
+
h
>=
d
(
document
).
height
()
-
f
-
50
&&
s
()})}),
define
(
"js/index/entry"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
n
){
e
(
"js/index/search"
),
e
(
"js/index/footer"
),
e
(
"js/index/channel"
)}),
define
(
"js/index/search"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
n
){
var
s
,
i
,
t
=
e
(
"jquery"
),
o
=
e
(
"hammer"
),
r
=
t
(
"#search-input input"
),
l
=
t
(
"#search-input .clear-input"
),
d
=
t
(
"#search-form"
),
c
=
t
(
".history"
),
u
=
t
(
"#clear-history"
),
p
=
e
(
"js/index/write-search"
),
h
=
p
.
getRanToken
();
s
=
new
o
(
u
[
0
]),
s
.
on
(
"tap"
,
function
(){
localStorage
.
removeItem
(
"historys"
),
c
.
html
(
""
)}),
r
.
on
(
"input"
,
function
(){
""
===
r
.
val
()?
l
.
addClass
(
"hide"
):
l
.
removeClass
(
"hide"
)}),
i
=
new
o
(
l
[
0
]),
i
.
on
(
"tap"
,
function
(){
r
.
val
(
""
).
trigger
(
"input"
)}),
function
(){
var
e
,
a
,
n
,
s
=
""
;
if
(
localStorage
&&
(
a
=
localStorage
.
getItem
(
"historys"
),
a
&&
a
.
length
>
0
)){
for
(
a
=
a
.
split
(
h
),
n
=
0
;
n
<
a
.
length
;
n
++
)
e
=
a
[
n
],
""
!==
e
&&
(
s
+=
'<li><a href="/?query='
+
e
+
'">'
+
e
+
"</li>"
);
c
.
html
(
s
),
u
.
removeClass
(
"hide"
)}}(),
p
.
bindWirteLocal
(
d
)}),
define
(
"js/index/write-search"
,[],
function
(
e
,
a
,
n
){
function
s
(){
return
t
}
function
i
(
e
){
e
.
on
(
"submit"
,
function
(){
var
e
,
a
=
this
.
query
.
value
;
if
(
localStorage
){
if
(
e
=
localStorage
.
getItem
(
"historys"
),
e
=
e
?
e
:
""
,
e
.
indexOf
(
t
+
a
+
t
)
>-
1
)
return
;
""
===
e
&&
(
a
=
t
+
a
),
e
+=
a
+
t
,
localStorage
.
setItem
(
"historys"
,
e
)}})}
var
t
=
" ??++ "
;
a
.
getRanToken
=
s
,
a
.
bindWirteLocal
=
i
}),
define
(
"js/index/footer"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
n
){
function
s
(){
var
e
=
"http://a.app.qq.com/o/simple.jsp?pkgname=com.yoho&g_f=995445"
,
a
=
new
Date
;
setTimeout
(
function
(){
new
Date
-
a
<
2
e3
&&
(
window
.
location
=
e
)},
500
)}
var
i
,
t
,
o
=
e
(
"jquery"
),
r
=
e
(
"hammer"
);
o
(
"#float-layer-close"
)
&&
o
(
"#float-layer-close"
)[
0
]
&&
(
i
=
new
r
(
o
(
"#float-layer-close"
)[
0
]),
i
.
on
(
"tap"
,
function
(
e
){
o
(
"#float-layer-app"
).
hide
(),
window
.
setCookie
(
"_float-layer-app"
,
"id490655927"
,{
domain
:
".yohobuy.com"
}),
window
.
setCookie
(
"_float-layer-app-close"
,
1
,{
domain
:
".yohobuy.com"
,
expires
:
1
})})),
o
(
"#float-layer-btn"
)
&&
o
(
"#float-layer-btn"
)[
0
]
&&
(
t
=
new
r
(
o
(
"#float-layer-btn"
)[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
s
(
"bottom"
)}),
window
.
cookie
(
"_float-layer-app"
)?
o
(
"#float-layer-app"
).
hide
():
o
(
"#float-layer-app"
).
show
())}),
define
(
"js/index/channel"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
".search-box"
),
t
=
s
(
".index-search"
),
o
=
s
(
".index-logo"
);
i
.
find
(
"input"
).
on
(
"focus"
,
function
(){
o
.
css
({
width
:
0
}),
i
.
css
({
width
:
"12.8rem"
}),
t
.
css
({
width
:
"15.5rem"
}),
s
(
".clear-text, .no-search"
).
show
()}).
on
(
"blur"
,
function
(){
o
.
css
({
width
:
"5.4rem"
}),
i
.
css
({
width
:
"8.8rem"
}),
t
.
css
({
width
:
"9.6rem"
}),
s
(
".clear-text, .no-search"
).
hide
()}),
i
.
find
(
".clear-text"
).
click
(
function
(){
i
.
find
(
"input"
).
val
(
""
).
trigger
(
"focus"
)}),
i
.
find
(
".search-icon"
).
click
(
function
(){
t
.
submit
()})}),
define
(
"js/passport/entry"
,[
"jquery"
],
function
(
e
,
a
,
n
){
e
(
"js/passport/register/register"
),
e
(
"js/passport/register/code"
),
e
(
"js/passport/register/password"
),
e
(
"js/passport/login/login"
),
e
(
"js/passport/login/international"
),
e
(
"js/passport/back/mobile"
),
e
(
"js/passport/back/code"
),
e
(
"js/passport/back/email"
),
e
(
"js/passport/back/email-success"
),
e
(
"js/passport/back/new-password"
)}),
define
(
"js/passport/register/register"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#phone-num"
),
t
=
s
(
"#country-select"
),
o
=
s
(
"#area-code"
),
r
=
s
(
"#btn-next"
),
l
=
e
(
"js/passport/api"
),
d
=
e
(
"js/plugin/tip"
),
c
=
s
.
trim
,
u
=
d
.
show
;
l
.
selectCssHack
(
s
(
"#country-select"
)),
l
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
c
(
i
.
val
())?
r
.
addClass
(
"disable"
):
r
.
removeClass
(
"disable"
)}),
t
.
change
(
function
(){
o
.
text
(
t
.
val
())}),
r
.
on
(
"touchstart"
,
function
(){
var
e
=
c
(
i
.
val
()),
a
=
t
.
val
();
r
.
hasClass
(
"disable"
)
||
(
l
.
phoneRegx
[
a
].
test
(
e
)?
s
.
ajax
({
url
:
"/passport/reg/verifymobile"
,
type
:
"POST"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
phoneNum
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
u
(
e
.
message
)}}):
u
(
"手机号格式不正确,请重新输入"
))})}),
define
(
"js/passport/api"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
,
n
=
r
(
".has-eye"
);
e
&&
"open"
===
e
.
status
?
n
.
append
(
'<div class="eye"></div>'
):
n
.
append
(
'<div class="eye close"></div>'
),
a
=
n
.
children
(
".eye"
),
a
.
on
(
"touchstart"
,
function
(
e
){
var
a
=
r
(
this
),
n
=
a
.
siblings
(
".pwd"
);
e
.
preventDefault
(),
a
.
toggleClass
(
"close"
),
a
.
hasClass
(
"close"
)?
n
.
attr
(
"type"
,
"password"
):
n
.
attr
(
"type"
,
"text"
),
n
.
focus
()})}
function
i
(){
var
e
,
a
=
r
(
".has-clear"
);
a
.
append
(
'<div class="clear-input"></div>'
),
e
=
a
.
children
(
".clear-input"
),
e
.
on
(
"touchstart"
,
function
(
a
){
var
n
=
e
.
siblings
(
".input"
);
n
.
val
(
""
).
trigger
(
"input"
).
focus
(),
a
.
preventDefault
()}),
a
.
children
(
".input"
).
bind
(
"input"
,
function
(){
var
e
=
r
(
this
),
a
=
e
.
siblings
(
".clear-input"
),
n
=
l
(
e
.
val
());
""
===
n
?
a
.
hide
():
a
.
show
()})}
function
t
(
e
){
return
e
.
length
>=
6
&&
e
.
length
<=
20
?
!
0
:
!
1
}
function
o
(
e
){
function
a
(){
var
a
=
e
.
find
(
"option:selected"
).
text
().
length
;
switch
(
a
){
case
2
:
e
.
outerWidth
(
90
);
break
;
case
3
:
e
.
outerWidth
(
110
);
break
;
default
:
e
.
outerWidth
(
130
)}}
var
n
=
navigator
.
userAgent
;
n
.
match
(
/uc/i
)
&&
n
.
match
(
/android/i
)?
e
.
change
(
function
(){
a
()}):
e
.
removeClass
(
"in-android-uc"
)}
var
r
=
e
(
"jquery"
),
l
=
r
.
trim
,
d
=
/^
([
a-zA-Z0-9
]
+
[
_|
\_
|
\.
|-
]?)
*
[
a-zA-Z0-9
]
+@
([
a-zA-Z0-9
]
+
[
_|
\_
|
\.
|-
]?)
*
[
a-zA-Z0-9
]
+
\.[
a-zA-Z
]{2,3}
$/
,
c
=
{
"+86"
:
/^
1
[
35847
]{
1
}[
0
-
9
]{
9
}
$
/
,
"+852"
:
/^
[
965
]{
1
}[
0
-
9
]{
7
}
$
/
,
"+853"
:
/^
[
0
-
9
]{
8
}
$
/
,
"+886"
:
/^
[
0
-
9
]{
10
}
$
/
,
"+65"
:
/^
[
98
]{
1
}[
0
-
9
]{
7
}
$
/
,
"+60"
:
/^
1
[
1234679
]{
1
}[
0
-
9
]{
8
}
$
/
,
"+1"
:
/^
[
0
-
9
]{
10
}
$
/
,
"+82"
:
/^
01
[
0
-
9
]{
9
}
$
/
,
"+44"
:
/^
7
[
789
][
0
-
9
]{
8
}
$
/
,
"+81"
:
/^
0
[
9
|
8
|
7
][
0
-
9
]{
9
}
$
/
,
"+61"
:
/^
[
0
-
9
]{
11
}
$
/
};
n
.
exports
=
{
emailRegx
:
d
,
phoneRegx
:
c
,
bindEyesEvt
:
s
,
bindClearEvt
:
i
,
pwdValidate
:
t
,
selectCssHack
:
o
}}),
define
(
"js/passport/register/code"
,[
"jquery"
],
function
(
e
,
a
,
n
){
e
(
"js/passport/code"
)(
!
0
)}),
define
(
"js/passport/code"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
);
n
.
exports
=
function
(
a
){
function
n
(){
var
e
,
a
=
59
;
e
=
setInterval
(
function
(){
0
===
a
?(
o
.
text
(
"重发验证码"
).
removeClass
(
"disable"
),
clearInterval
(
e
)):
o
.
text
(
"重发验证码 ("
+
a
--+
"秒)"
)},
1
e3
)}
var
i
=
s
(
"#captcha"
),
t
=
s
(
"#btn-next"
),
o
=
s
(
"#captcha-tip"
),
r
=
s
(
"#phone-num"
).
val
(),
l
=
s
(
"#area-code"
).
val
().
replace
(
"+"
,
""
),
d
=
e
(
"js/passport/api"
),
c
=
e
(
"js/plugin/tip"
),
u
=
s
.
trim
,
p
=
c
.
show
,
h
=
a
?
"reg"
:
"back"
;
d
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
!==
u
(
i
.
val
())?
t
.
removeClass
(
"disable"
):
t
.
addClass
(
"disable"
)}),
o
.
on
(
"touchstart"
,
function
(){
o
.
hasClass
(
"disable"
)
||
s
.
ajax
({
type
:
"POST"
,
url
:
"/passport/"
+
h
+
"/sendcode"
,
data
:{
phoneNum
:
r
,
areaCode
:
l
},
success
:
function
(
e
){
200
===
e
.
code
?(
o
.
text
(
"重发验证码 (60秒)"
).
addClass
(
"disable"
),
n
()):
p
(
e
.
message
)}})}),
t
.
on
(
"touchstart"
,
function
(){
t
.
hasClass
(
"disable"
)
||
s
.
ajax
({
type
:
"POST"
,
url
:
"/passport/"
+
h
+
"/verifycode"
,
data
:{
phoneNum
:
r
,
areaCode
:
l
,
code
:
u
(
i
.
val
()),
token
:
s
(
"#token"
).
val
()},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
p
(
e
.
message
)}})}),
n
()}}),
define
(
"js/passport/register/password"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#pwd"
),
t
=
s
(
"#btn-sure"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
s
.
trim
,
d
=
r
.
show
;
o
.
bindEyesEvt
({
status
:
"open"
}),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
=
l
(
i
.
val
());
t
.
hasClass
(
"disable"
)
||
(
o
.
pwdValidate
(
e
)
===!
1
?
d
(
"密码6-20位,请重新输入"
):
s
.
ajax
({
type
:
"POST"
,
url
:
"/passport/reg/setpassword"
,
data
:{
password
:
e
,
phoneNum
:
s
(
"#phone-num"
).
val
(),
areaCode
:
s
(
"#area-code"
).
val
(),
token
:
s
(
"#token"
).
val
()},
success
:
function
(
e
){
200
===
e
.
code
?(
d
(
"注册成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
401
===
e
.
code
||
404
===
e
.
code
||
505
===
e
.
code
?
d
(
e
.
message
):(
d
(
e
.
message
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
))}}))})}),
define
(
"js/passport/login/login"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(){
p
&&
h
?
d
.
removeClass
(
"disable"
):
d
.
addClass
(
"disable"
)}
function
i
(){
c
.
show
(),
u
.
show
()}
function
t
(){
c
.
hide
(),
u
.
hide
()}
var
o
=
e
(
"jquery"
),
r
=
o
(
"#account"
),
l
=
o
(
"#pwd"
),
d
=
o
(
"#btn-login"
),
c
=
o
(
"#retrive-pwd-mask"
),
u
=
o
(
"#retrive-pwd-ways"
),
p
=!
1
,
h
=!
1
,
f
=
e
(
"js/passport/api"
),
g
=
e
(
"js/plugin/tip"
),
m
=
o
.
trim
,
v
=
g
.
show
;
f
.
bindEyesEvt
(),
f
.
bindClearEvt
(),
r
.
bind
(
"input"
,
function
(){
p
=
""
!==
m
(
r
.
val
())?
!
0
:
!
1
,
s
()}),
l
.
bind
(
"input"
,
function
(){
h
=
""
===
m
(
l
.
val
())?
!
1
:
!
0
,
s
()}),
d
.
on
(
"touchstart"
,
function
(){
var
e
=
m
(
r
.
val
()),
a
=
m
(
l
.
val
());
d
.
hasClass
(
"disable"
)
||
((
/^
[
0-9
]
+$/
.
test
(
e
)
||
f
.
emailRegx
.
test
(
e
))
&&
f
.
pwdValidate
(
a
)?
o
.
ajax
({
type
:
"POST"
,
url
:
"/passport/login/auth"
,
data
:{
account
:
e
,
password
:
a
},
success
:
function
(
e
){
200
===
e
.
code
?(
v
(
"登录成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
v
(
e
.
message
)},
error
:
function
(){
v
(
"网络断开连接啦~"
)}})
:
v
(
"账号或密码有错误,请重新输入"
))}),
o
(
"#forget-pwd"
).
on
(
"touchstart"
,
function
(){
i
()}),
c
.
on
(
"touchstart"
,
function
(){
t
()}),
o
(
"#cancel-retrive"
).
on
(
"touchstart"
,
function
(
e
){
e
.
preventDefault
(),
t
()}),
r
.
trigger
(
"input"
),
l
.
trigger
(
"input"
)}),
define
(
"js/passport/login/international"
,[
"jquery"
],
function
(
e
,
a
,
n
){
function
s
(){
c
&&
u
?
d
.
removeClass
(
"disable"
):
d
.
addClass
(
"disable"
)}
var
i
=
e
(
"jquery"
),
t
=
i
(
"#phone-num"
),
o
=
i
(
"#country-select"
),
r
=
i
(
"#area-code"
),
l
=
i
(
"#pwd"
),
d
=
i
(
"#btn-login"
),
c
=!
1
,
u
=!
1
,
p
=
e
(
"js/passport/api"
),
h
=
e
(
"js/plugin/tip"
),
f
=
i
.
trim
,
g
=
h
.
show
;
p
.
selectCssHack
(
o
),
p
.
bindEyesEvt
(),
p
.
bindClearEvt
(),
t
.
bind
(
"input"
,
function
(){
c
=
""
===
f
(
t
.
val
())?
!
1
:
!
0
,
s
()}),
l
.
bind
(
"input"
,
function
(){
var
e
=
f
(
l
.
val
());
u
=
""
===
e
?
!
1
:
!
0
,
s
()}),
o
.
change
(
function
(){
r
.
text
(
o
.
val
())}),
d
.
on
(
"touchstart"
,
function
(){
var
e
=
f
(
t
.
val
()),
a
=
o
.
val
(),
n
=
f
(
l
.
val
());
d
.
hasClass
(
"disable"
)
||
(
p
.
phoneRegx
[
a
].
test
(
e
)
&&
p
.
pwdValidate
(
n
)?
i
.
ajax
({
type
:
"POST"
,
url
:
"/passport/login/auth"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
account
:
e
,
password
:
n
},
success
:
function
(
e
){
200
===
e
.
code
?(
g
(
"登录成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
g
(
e
.
message
)},
error
:
function
(){
g
(
"网络断开连接啦~"
)}})
:
g
(
"账号或密码有错误,请重新输入"
))}),
t
.
trigger
(
"input"
),
l
.
trigger
(
"input"
)}),
define
(
"js/passport/back/mobile"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#phone-num"
),
t
=
s
(
"#country-select"
),
o
=
s
(
"#area-code"
),
r
=
s
(
"#btn-next"
),
l
=
e
(
"js/passport/api"
),
d
=
e
(
"js/plugin/tip"
),
c
=
s
.
trim
,
u
=
d
.
show
;
l
.
selectCssHack
(
s
(
"#country-select"
)),
l
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
c
(
i
.
val
())?
r
.
addClass
(
"disable"
):
r
.
removeClass
(
"disable"
)}),
t
.
change
(
function
(){
o
.
text
(
t
.
val
())}),
r
.
on
(
"touchstart"
,
function
(){
var
e
=
c
(
i
.
val
()),
a
=
t
.
val
();
r
.
hasClass
(
"disable"
)
||
(
l
.
phoneRegx
[
a
].
test
(
e
)?
s
.
ajax
({
url
:
"/passport/back/sendcode"
,
type
:
"POST"
,
data
:{
areaCode
:
a
.
replace
(
"+"
,
""
),
phoneNum
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
u
(
e
.
message
)}}):
u
(
"手机号格式不正确,请重新输入"
))})}),
define
(
"js/passport/back/code"
,[
"jquery"
],
function
(
e
,
a
,
n
){
e
(
"js/passport/code"
)(
!
1
)}),
define
(
"js/passport/back/email"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#email"
),
t
=
s
(
"#btn-sure"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
s
.
trim
,
d
=
r
.
show
;
o
.
bindClearEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
=
l
(
i
.
val
());
t
.
hasClass
(
"disable"
)
||
(
o
.
emailRegx
.
test
(
e
)?
s
.
ajax
({
url
:
"/passport/back/sendemail"
,
type
:
"POST"
,
data
:{
email
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
location
.
href
=
e
.
data
:
d
(
e
.
message
)}}):
d
(
"邮箱格式不正确,请重新输入"
))})}),
define
(
"js/passport/back/email-success"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#resend"
),
t
=
e
(
"js/plugin/tip"
),
o
=
t
.
show
;
i
.
on
(
"touchstart"
,
function
(
e
){
e
.
preventDefault
(),
s
.
ajax
({
url
:
i
.
data
(
"url"
),
type
:
"GET"
,
success
:
function
(
e
){
o
(
200
===
e
.
code
?
e
.
message
:
e
.
message
)}})})}),
define
(
"js/passport/back/new-password"
,[
"jquery"
],
function
(
e
,
a
,
n
){
var
s
=
e
(
"jquery"
),
i
=
s
(
"#pwd"
),
t
=
s
(
"#btn-ok"
),
o
=
e
(
"js/passport/api"
),
r
=
e
(
"js/plugin/tip"
),
l
=
s
.
trim
,
d
=
r
.
show
,
c
=
s
(
"#phone-num"
);
o
.
bindEyesEvt
(),
i
.
bind
(
"input"
,
function
(){
""
===
l
(
i
.
val
())?
t
.
addClass
(
"disable"
):
t
.
removeClass
(
"disable"
)}),
t
.
on
(
"touchstart"
,
function
(){
var
e
,
a
,
n
=
l
(
i
.
val
()),
r
=!
0
;
t
.
hasClass
(
"disable"
)
||
(
e
=
{
password
:
n
},
0
===
c
.
length
&&
(
r
=!
1
),
r
?(
s
.
extend
(
e
,{
phoneNum
:
c
.
val
(),
areaCode
:
s
(
"#areaCode"
).
val
(),
token
:
s
(
"#token"
).
val
()}),
a
=
"/passport/back/passwordByMobile"
):(
s
.
extend
(
e
,{
code
:
s
(
"#email-code"
).
val
()}),
a
=
"/passport/back/passwordByEmail"
),
o
.
pwdValidate
(
n
)?
s
.
ajax
({
type
:
"POST"
,
url
:
a
,
data
:
e
,
success
:
function
(
e
){
200
===
e
.
code
?(
d
(
"密码修改成功"
),
setTimeout
(
function
(){
location
.
href
=
e
.
data
},
1
e3
)):
d
(
e
.
message
)}}):
d
(
"密码6-20位,请重新输入"
))})}),
define
(
"js/product/entry"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
e
(
"js/product/newsale/newarrival"
),
e
(
"js/product/newsale/discount"
),
e
(
"js/product/list"
),
e
(
"js/product/detail/detail"
)}),
define
(
"js/product/newsale/newarrival"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
,
n
,
s
,
i
,
l
,
u
,
p
=
{};
if
(
!
d
){
if
(
e
){
for
(
n
in
z
)
z
.
hasOwnProperty
(
n
)
&&
(
z
[
n
].
reload
=!
0
);
switch
(
q
.
children
(
".active"
).
removeClass
(
"active"
),
T
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
};
break
;
case
"limit"
:
a
=
{
limit
:
e
.
id
};
break
;
case
"channel"
:
a
=
{
channel
:
e
.
id
};
break
;
case
"p_d"
:
a
=
{
p_d
:
e
.
id
}}
c
.
extend
(
b
,
a
)}
if
(
T
.
hasClass
(
"today"
)?(
i
=
"today"
,
l
=
1
):
T
.
hasClass
(
"week"
)?(
i
=
"week"
,
l
=
2
):
T
.
hasClass
(
"sale"
)
&&
(
i
=
"sale"
,
l
=
3
),
s
=
z
[
i
],
u
=
s
.
page
+
1
,
s
.
reload
)
u
=
1
;
else
if
(
s
.
end
)
return
;
c
.
extend
(
p
,
b
,{
dayLimit
:
l
,
page
:
u
}),
d
=!
0
,
g
.
showLoadingMask
(),
c
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/selectNewSale"
,
data
:
p
,
success
:
function
(
e
){
var
a
,
n
;
switch
(
i
){
case
"today"
:
a
=
t
;
break
;
case
"week"
:
a
=
o
;
break
;
case
"sale"
:
a
=
r
}
" "
===
e
?(
s
.
end
=!
0
,
s
.
reload
&&
a
.
html
(
y
)):
s
.
reload
?(
a
.
html
(
e
),
h
(
a
.
find
(
".lazy"
))):(
n
=
a
.
find
(
".good-info"
).
length
,
a
.
append
(
e
),
h
(
a
.
find
(
".good-info:gt("
+
(
n
-
1
)
+
") .lazy"
))),
s
.
reload
=!
1
,
s
.
page
=
u
,
d
=!
1
,
g
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
,
l
,
d
,
c
=
e
(
"jquery"
),
u
=
e
(
"swiper"
),
p
=
e
(
"hammer"
),
h
=
e
(
"lazyload"
),
f
=
e
(
"js/plugin/filter"
),
g
=
e
(
"js/plugin/loading"
),
m
=
c
(
"#goods-container"
),
v
=
m
.
children
(),
t
=
c
(
v
.
get
(
0
)),
o
=
c
(
v
.
get
(
1
)).
addClass
(
"hide"
),
r
=
c
(
v
.
get
(
2
)).
addClass
(
"hide"
),
w
=
c
(
window
).
height
(),
y
=
'<p class="no-result">未找到相关搜索结果</p>'
,
b
=
{
gender
:
c
(
"#gender"
).
val
(),
brand
:
c
(
"#brand"
).
val
(),
sort
:
c
(
"#sort"
).
val
(),
color
:
c
(
"#color"
).
val
(),
size
:
c
(
"#size"
).
val
(),
price
:
c
(
"#price"
).
val
(),
discount
:
c
(
"#discount"
).
val
(),
limit
:
c
(
"#limit"
).
val
(),
channel
:
c
(
"#channel"
).
val
(),
p_d
:
c
(
"#p_d"
).
val
(),
dayLimit
:
1
},
C
=
c
.
extend
({},
b
),
j
=
new
Date
,
x
=
j
.
getMonth
()
+
1
,
k
=
j
.
getDate
(),
q
=
c
(
"#list-nav"
),
z
=
{
today
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
week
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
sale
:{
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
T
=
q
.
find
(
".active"
);
c
(
"#today a"
).
text
(
x
+
"月"
+
k
+
"号"
),
c
(
".swiper-container .swiper-slide"
).
length
>
1
&&
(
i
=
new
u
(
".swiper-container"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
pagination
:
".swiper-pagination"
})),
c
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/filter"
,
data
:
b
,
success
:
function
(
e
){
m
.
append
(
e
),
f
.
initFilter
({
fCbFn
:
s
,
hCbFn
:
function
(){
T
.
addClass
(
"active"
),
T
.
siblings
(
".filter"
).
removeClass
(
"active"
)}})}}),
h
(
c
(
".lazy"
)),
l
=
new
p
(
q
[
0
]),
l
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
i
,
l
=
c
(
e
.
target
).
closest
(
"li"
);
if
(
l
.
hasClass
(
"filter"
))
l
.
hasClass
(
"active"
)?(
f
.
hideFilter
(),
T
.
addClass
(
"active"
),
l
.
removeClass
(
"active"
)):(
T
=
l
.
siblings
(
".active"
),
T
.
removeClass
(
"active"
),
l
.
addClass
(
"active"
),
f
.
showFilter
());
else
{
if
(
l
.
hasClass
(
"today"
)?
n
=
"today"
:
l
.
hasClass
(
"week"
)?
n
=
"week"
:
l
.
hasClass
(
"sale"
)
&&
(
n
=
"sale"
),
a
=
z
[
n
],
!
l
.
hasClass
(
"active"
)){
if
(
i
=
l
.
siblings
(
".active"
),
T
=
l
,
i
.
hasClass
(
"filter"
))
f
.
hideFilter
();
else
{
switch
(
m
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
n
){
case
"today"
:
t
.
removeClass
(
"hide"
);
break
;
case
"week"
:
o
.
removeClass
(
"hide"
);
break
;
case
"sale"
:
r
.
removeClass
(
"hide"
)}
f
.
resetFilter
(),
b
=
c
.
extend
({},
C
)}
i
.
removeClass
(
"active"
),
l
.
addClass
(
"active"
)}
a
.
reload
&&
s
()}}),
c
(
window
).
scroll
(
function
(){
c
(
window
).
scrollTop
()
+
w
>
c
(
document
).
height
()
-
.
25
*
m
.
height
()
-
50
&&
void
0
!==
T
&&
s
()}),
s
()}),
define
(
"js/plugin/filter"
,[
"jquery"
,
"hammer"
],
function
(
e
,
a
,
n
){
function
s
(){
c
.
addClass
(
"hide"
)}
function
i
(){
c
.
removeClass
(
"hide"
)}
function
t
(
e
){
e
.
hasClass
(
"active"
)
||
(
e
.
siblings
(
".active"
).
removeClass
(
"active"
),
e
.
addClass
(
"active"
))}
function
o
(
e
){
var
a
,
n
,
s
=
e
.
closest
(
".sub-classify"
),
i
=
s
.
siblings
(
".shower"
);
return
e
.
hasClass
(
"chosed"
)?
void
0
:(
s
.
children
(
".chosed"
).
removeClass
(
"chosed"
),
e
.
addClass
(
"chosed"
),
a
=
f
.
trim
(
e
.
html
()),
n
=
f
.
trim
(
i
.
html
()),
i
.
html
(
n
.
substring
(
0
,
n
.
indexOf
(
"</span>"
)
+
7
)
+
a
.
substring
(
0
,
a
.
indexOf
(
"<i"
))),
0
===
e
.
index
()?
i
.
addClass
(
"default"
):
i
.
removeClass
(
"default"
),
s
)}
function
r
(
e
){
var
a
,
n
=
e
.
data
(
"id"
);
a
=
o
(
e
),
u
&&
u
({
type
:
a
.
data
(
"type"
),
id
:
n
}),
s
()}
function
l
(
e
){
var
a
;
u
=
e
.
fCbFn
,
p
=
e
.
hCbFn
,
h
=
e
.
missStatus
,
c
=
f
(
".filter-mask"
),
a
=
new
g
(
c
[
0
]),
a
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
=
f
(
e
.
target
);
n
.
closest
(
".filter-body"
).
length
>
0
?(
a
=
n
.
closest
(
".sub-item"
),
a
.
length
>
0
?(
a
=
n
.
closest
(
"li"
),
r
(
a
)):(
a
=
n
.
closest
(
".classify-item"
),
e
.
srcEvent
.
stopPropagation
(),
t
(
a
))):(
s
(),
p
&&
p
())})}
function
d
(){
"undefined"
!=
typeof
c
&&
(
f
(
".sub-classify"
).
each
(
function
(){
o
(
f
(
this
).
children
(
":first-child"
))}),
t
(
f
(
".classify > :first-child"
)))}
var
c
,
u
,
p
,
h
,
f
=
e
(
"jquery"
),
g
=
e
(
"hammer"
);
a
.
initFilter
=
l
,
a
.
showFilter
=
i
,
a
.
hideFilter
=
s
,
a
.
resetFilter
=
d
}),
define
(
"js/product/newsale/discount"
,[
"jquery"
,
"swiper"
,
"hammer"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
,
n
,
s
,
i
,
t
,
l
=
{};
if
(
!
o
){
if
(
e
){
for
(
n
in
j
)
j
.
hasOwnProperty
(
n
)
&&
(
j
[
n
].
reload
=!
0
);
switch
(
C
.
children
(
".active"
).
removeClass
(
"active"
),
x
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
}}
r
.
extend
(
b
,
a
)}
if
(
x
.
hasClass
(
"new"
)?
i
=
"newest"
:
x
.
hasClass
(
"price"
)?
i
=
"price"
:
x
.
hasClass
(
"discount"
)
&&
(
i
=
"discount"
),
s
=
j
[
i
],
t
=
s
.
page
+
1
,
s
.
reload
)
t
=
1
;
else
if
(
s
.
end
)
return
;
r
.
extend
(
l
,
b
,{
type
:
i
,
order
:
s
.
order
,
page
:
t
}),
o
=!
0
,
p
.
showLoadingMask
(),
r
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/selectNewSale"
,
data
:
l
,
success
:
function
(
e
){
var
a
,
n
;
switch
(
i
){
case
"newest"
:
a
=
g
;
break
;
case
"price"
:
a
=
m
;
break
;
case
"discount"
:
a
=
v
}
" "
===
e
?(
s
.
end
=!
0
,
s
.
reload
&&
a
.
html
(
y
)):
s
.
reload
?(
a
.
html
(
e
),
c
(
a
.
find
(
".lazy"
))):(
n
=
a
.
find
(
".good-info"
).
length
,
a
.
append
(
e
),
c
(
a
.
find
(
".good-info:gt("
+
(
n
-
1
)
+
") .lazy"
))),
s
.
reload
=!
1
,
s
.
page
=
t
,
o
=!
1
,
p
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
=
e
(
"jquery"
),
l
=
e
(
"swiper"
),
d
=
e
(
"hammer"
),
c
=
e
(
"lazyload"
),
u
=
e
(
"js/plugin/filter"
),
p
=
e
(
"js/plugin/loading"
),
h
=
r
(
"#goods-container"
),
f
=
h
.
children
(),
g
=
r
(
f
.
get
(
0
)),
m
=
r
(
f
.
get
(
1
)),
v
=
r
(
f
.
get
(
2
)),
w
=
r
(
window
).
height
(),
y
=
'<p class="no-result">未找到相关搜索结果</p>'
,
b
=
{
gender
:
r
(
"#gender"
).
val
(),
brand
:
r
(
"#brand"
).
val
(),
sort
:
r
(
"#sort"
).
val
(),
color
:
r
(
"#color"
).
val
(),
size
:
r
(
"#size"
).
val
(),
price
:
r
(
"#price"
).
val
(),
discount
:
r
(
"#discount"
).
val
()},
C
=
r
(
"#list-nav"
),
j
=
{
newest
:{
order
:
1
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
price
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
discount
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
x
=
C
.
find
(
".active"
);
r
(
".swiper-container .swiper-slide"
).
length
>
1
&&
(
i
=
new
l
(
".swiper-container"
,{
lazyLoading
:
!
0
,
lazyLoadingInPrevNext
:
!
0
,
loop
:
!
0
,
autoplay
:
3
e3
,
autoplayDisableOnInteraction
:
!
1
,
paginationClickable
:
!
0
,
pagination
:
".swiper-pagination"
})),
r
.
ajax
({
type
:
"GET"
,
url
:
"/product/newsale/filter"
,
data
:
b
,
success
:
function
(
e
){
h
.
append
(
e
),
u
.
initFilter
({
fCbFn
:
s
,
hCbFn
:
function
(){
x
.
addClass
(
"active"
),
x
.
siblings
(
".filter"
).
removeClass
(
"active"
)},
missStatus
:
!
0
})}}),
c
(
r
(
".lazy"
)),
t
=
new
d
(
C
[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
i
,
t
=
r
(
e
.
target
).
closest
(
"li"
);
if
(
t
.
hasClass
(
"filter"
))
t
.
hasClass
(
"active"
)?(
u
.
hideFilter
(),
x
.
addClass
(
"active"
),
t
.
removeClass
(
"active"
)):(
x
=
t
.
siblings
(
".active"
),
x
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
),
u
.
showFilter
());
else
{
if
(
t
.
hasClass
(
"new"
)?
n
=
"newest"
:
t
.
hasClass
(
"price"
)?
n
=
"price"
:
t
.
hasClass
(
"discount"
)
&&
(
n
=
"discount"
),
a
=
j
[
n
],
t
.
hasClass
(
"active"
)){
if
(
t
.
hasClass
(
"new"
))
return
;(
t
.
hasClass
(
"price"
)
||
t
.
hasClass
(
"discount"
))
&&
(
t
.
find
(
".icon > .iconfont"
).
toggleClass
(
"cur"
),
x
=
t
,
a
.
reload
=!
0
,
a
.
order
=
0
===
a
.
order
?
1
:
0
)}
else
{
if
(
i
=
t
.
siblings
(
".active"
),
x
=
t
,
i
.
hasClass
(
"filter"
))
u
.
hideFilter
();
else
switch
(
h
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
n
){
case
"newest"
:
g
.
removeClass
(
"hide"
);
break
;
case
"price"
:
m
.
removeClass
(
"hide"
);
break
;
case
"discount"
:
v
.
removeClass
(
"hide"
)}
i
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
)}
a
.
reload
&&
s
()}}),
r
(
window
).
scroll
(
function
(){
r
(
window
).
scrollTop
()
+
w
>
r
(
document
).
height
()
-
.
25
*
h
.
height
()
-
50
&&
void
0
!==
x
&&
s
()}),
s
()}),
define
(
"js/product/list"
,[
"jquery"
,
"hammer"
,
"lazyload"
],
function
(
e
,
a
,
n
){
function
s
(
e
){
var
a
,
n
,
s
,
t
,
o
,
r
=
{};
if
(
!
i
){
if
(
e
){
for
(
n
in
q
)
q
.
hasOwnProperty
(
n
)
&&
(
q
[
n
].
reload
=!
0
);
switch
(
k
.
children
(
".active"
).
removeClass
(
"active"
),
z
.
addClass
(
"active"
),
e
.
type
){
case
"gender"
:
a
=
{
gender
:
e
.
id
};
break
;
case
"brand"
:
a
=
{
brand
:
e
.
id
};
break
;
case
"sort"
:
a
=
{
sort
:
e
.
id
};
break
;
case
"color"
:
a
=
{
color
:
e
.
id
};
break
;
case
"size"
:
a
=
{
size
:
e
.
id
};
break
;
case
"price"
:
a
=
{
price
:
e
.
id
};
break
;
case
"discount"
:
a
=
{
discount
:
e
.
id
}}
d
.
extend
(
x
,
a
)}
if
(
z
.
hasClass
(
"new"
)?
t
=
"newest"
:
z
.
hasClass
(
"price"
)?
t
=
"price"
:
z
.
hasClass
(
"discount"
)
&&
(
t
=
"discount"
),
s
=
q
[
t
],
o
=
s
.
page
+
1
,
s
.
reload
)
o
=
1
;
else
if
(
s
.
end
)
return
;
d
.
extend
(
r
,
x
,{
type
:
t
,
order
:
s
.
order
,
page
:
o
}),
i
=!
0
,
v
.
showLoadingMask
(),
d
.
ajax
({
type
:
"GET"
,
url
:
"/index/search/search"
,
data
:
r
,
success
:
function
(
e
){
var
a
,
n
,
r
=
'<p class="no-result">未找到相关搜索结果</p>'
;
switch
(
t
){
case
"newest"
:
n
=
y
;
break
;
case
"price"
:
n
=
b
;
break
;
case
"discount"
:
n
=
C
}
" "
===
e
?(
s
.
end
=!
0
,
s
.
reload
&&
n
.
html
(
r
)):
s
.
reload
?(
n
.
html
(
e
),
u
(
n
.
find
(
".lazy"
))):(
a
=
n
.
find
(
".good-info"
).
length
,
n
.
append
(
e
),
u
(
n
.
find
(
".good-info:gt("
+
(
a
-
1
)
+
") .lazy"
))),
s
.
reload
=!
1
,
s
.
page
=
o
,
i
=!
1
,
v
.
hideLoadingMask
(),
window
.
rePosFooter
()}})}}
var
i
,
t
,
o
,
r
,
l
,
d
=
e
(
"jquery"
),
c
=
e
(
"hammer"
),
u
=
e
(
"lazyload"
),
p
=
d
(
"#brand-header"
),
h
=
d
(
"#intro-box"
),
f
=
e
(
"js/plugin/filter"
),
g
=
e
(
"js/index/write-search"
),
m
=
e
(
"js/plugin/tip"
),
v
=
e
(
"js/plugin/loading"
),
w
=
d
(
"#goods-container"
),
y
=
w
.
children
(
".new-goods"
),
b
=
w
.
children
(
".price-goods"
),
C
=
w
.
children
(
".discount-goods"
),
j
=
d
(
window
).
height
(),
x
=
{
gender
:
d
(
"#gender"
).
val
(),
brand
:
d
(
"#brand"
).
val
(),
sort
:
d
(
"#sort"
).
val
(),
color
:
d
(
"#color"
).
val
(),
size
:
d
(
"#size"
).
val
(),
price
:
d
(
"#price"
).
val
(),
discount
:
d
(
"#discount"
).
val
(),
query
:
d
(
"#query"
).
val
()},
k
=
d
(
"#list-nav"
),
q
=
{
newest
:{
order
:
1
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
price
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
},
discount
:{
order
:
0
,
reload
:
!
0
,
page
:
0
,
end
:
!
1
}},
z
=
k
.
find
(
".active"
);
d
.
ajax
({
type
:
"GET"
,
url
:
"/search/filter"
,
data
:
x
,
success
:
function
(
e
){
w
.
append
(
e
),
f
.
initFilter
({
fCbFn
:
s
,
hCbFn
:
function
(){
z
.
addClass
(
"active"
),
z
.
siblings
(
".filter"
).
removeClass
(
"active"
)}})}}),
u
(
d
(
".lazy"
)),
g
.
bindWirteLocal
(
d
(
"#search-form"
)),
t
=
new
c
(
k
[
0
]),
t
.
on
(
"tap"
,
function
(
e
){
var
a
,
n
,
i
,
t
=
d
(
e
.
target
).
closest
(
"li"
);
if
(
t
.
hasClass
(
"filter"
))
t
.
hasClass
(
"active"
)?(
f
.
hideFilter
(),
z
.
addClass
(
"active"
),
t
.
removeClass
(
"active"
)):(
z
=
t
.
siblings
(
".active"
),
z
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
),
f
.
showFilter
());
else
{
if
(
t
.
hasClass
(
"new"
)?
n
=
"newest"
:
t
.
hasClass
(
"price"
)?
n
=
"price"
:
t
.
hasClass
(
"discount"
)
&&
(
n
=
"discount"
),
a
=
q
[
n
],
t
.
hasClass
(
"active"
)){
if
(
t
.
hasClass
(
"new"
))
return
;(
t
.
hasClass
(
"price"
)
||
t
.
hasClass
(
"discount"
))
&&
(
t
.
find
(
".icon > .iconfont"
).
toggleClass
(
"cur"
),
z
=
t
,
a
.
reload
=!
0
,
a
.
order
=
0
===
a
.
order
?
1
:
0
)}
else
{
if
(
i
=
t
.
siblings
(
".active"
),
z
=
t
,
i
.
hasClass
(
"filter"
))
f
.
hideFilter
();
else
switch
(
w
.
children
(
".container:not(.hide)"
).
addClass
(
"hide"
),
n
){
case
"newest"
:
y
.
removeClass
(
"hide"
);
break
;
case
"price"
:
b
.
removeClass
(
"hide"
);
break
;
case
"discount"
:
C
.
removeClass
(
"hide"
)}
i
.
removeClass
(
"active"
),
t
.
addClass
(
"active"
)}
a
.
reload
&&
s
()}}),
d
(
window
).
scroll
(
function
(){
d
(
window
).
scrollTop
()
+
j
>
d
(
document
).
height
()
-
.
25
*
w
.
height
()
&&
s
()}),
p
.
length
>
0
&&
(
o
=
new
c
(
p
.
children
(
".btn-intro"
)[
0
]),
o
.
on
(
"tap"
,
function
(){
h
.
removeClass
(
"hide"
),
d
(
"body"
).
addClass
(
"overflow-hidden"
)}),
r
=
new
c
(
document
.
getElementById
(
"intro-box"
)),
r
.
on
(
"tap"
,
function
(
e
){
var
a
=
d
(
e
.
target
);
e
.
srcEvent
.
preventDefault
(),(
0
===
a
.
closest
(
"#brand-intro"
).
length
||
a
.
hasClass
(
"close-intro"
))
&&
(
h
.
addClass
(
"hide"
),
d
(
"body"
).
removeClass
(
"overflow-hidden"
))}),
l
=
new
c
(
p
.
children
(
".btn-col"
)[
0
]),
l
.
on
(
"tap"
,
function
(){
var
e
,
a
=
d
(
this
),
n
=
p
.
data
(
"id"
);
e
=
a
.
hasClass
(
"coled"
)?
"cancel"
:
"ok"
,
d
.
ajax
({
type
:
"POST"
,
url
:
"/product/opt/favoriteBrand"
,
data
:{
id
:
n
,
opt
:
e
},
success
:
function
(
e
){
200
===
e
.
code
?
a
.
toggleClass
(
"coled"
):
400
===
e
.
code
||
412
===
e
.
code
?
m
.
show
(
"未登录"
):
m
.
show
(
e
.
message
)},
error
:
function
(){
m
.
show
(
"网络断开连接了~"
)}})})),
s
()}),
define
(
"js/product/detail/detail"
,[
"jquery"
,
"swiper"
,
"lazyload"
,
"index"
],
function
(
e
,
a
,
n
){
var
s
,
i
=
e
(
"jquery"
),
t
=
e
(
"swiper"
),
o
=
e
(
"lazyload"
);
o
(
i
(
"img.lazy"
)),
s
=
new
t
(
".banner-swiper"
,{
loop
:
!
0
,
pagination
:
".banner-top .pagination-inner"
,
slideElement
:
"div"
,
nextButton
:
".swiper-button-next"
,
prevButton
:
".swiper-button-prev"
})});
\ No newline at end of file
...
...
yohobuy/m.yohobuy.com/application/controllers/Search.php
View file @
462022e
...
...
@@ -149,7 +149,7 @@ class SearchController extends AbstractAction
$this
->
setTitle
(
'搜索'
);
$this
->
setNavHeader
(
'搜索'
,
true
,
SITE_MAIN
);
}
// 右下角的购物车链接
$data
[
'goodList'
][
'cartUrl'
]
=
Helpers
::
url
(
'/cart/index/index'
,
null
);
...
...
@@ -183,8 +183,13 @@ class SearchController extends AbstractAction
{
$data
=
array
();
if
(
$this
->
isAjax
())
{
// 过滤请求参数
do
{
/* 判断是不是AJAX请求 */
if
(
!
$this
->
isAjax
())
{
break
;
}
/* 过滤请求参数 */
$condition
=
filter_input_array
(
INPUT_GET
,
array
(
'query'
=>
FILTER_DEFAULT
,
'brand'
=>
FILTER_VALIDATE_INT
,
...
...
@@ -196,55 +201,45 @@ class SearchController extends AbstractAction
'price'
=>
FILTER_VALIDATE_INT
,
'discount'
=>
FILTER_DEFAULT
,
'gender'
=>
FILTER_DEFAULT
,
'p_d'
=>
FILTER_DEFAULT
,),
false
);
'p_d'
=>
FILTER_DEFAULT
,
'page'
=>
FILTER_VALIDATE_INT
,
),
false
);
// 转义分类
if
(
isset
(
$condition
[
'sort'
]))
{
$condition
[
'sort'
]
=
rawurldecode
(
$condition
[
'sort'
]);
}
// 转换折扣
if
(
isset
(
$condition
[
'discount'
]))
{
$condition
[
'p_d'
]
=
rawurldecode
(
$condition
[
'discount'
]);
unset
(
$condition
[
'discount'
]);
}
// 转义性别
if
(
isset
(
$condition
[
'gender'
]))
{
$condition
[
'gender'
]
=
rawurldecode
(
$condition
[
'gender'
]);
}
// 转换排序方式
$page
=
$this
->
get
(
'page'
,
1
);
$orderVal
=
$this
->
get
(
'order'
,
0
);
$type
=
$this
->
get
(
'type'
,
''
);
$order
=
Helpers
::
transOrder
(
$orderVal
,
$type
);
// 查询品类或品牌数据
if
(
!
isset
(
$condition
[
'query'
]))
{
$condition
[
'order'
]
=
$order
;
$condition
[
'page'
]
=
$page
;
// 搜索品类
if
(
!
isset
(
$condition
[
'brand'
]))
{
$data
+=
Product\ListModel
::
getClassData
(
$condition
);
}
// 搜索品牌
else
{
$title
=
''
;
$data
+=
Product\ListModel
::
getBrandData
(
$condition
,
$title
);
}
if
(
isset
(
$data
[
'filter'
]))
{
unset
(
$data
[
'filter'
]);
}
}
// 查询数据
else
{
$listData
=
SearchData
::
searchByCondition
(
$condition
,
$order
,
$page
);
// 处理返回的数据
if
(
isset
(
$listData
[
'data'
]))
{
if
(
isset
(
$listData
[
'data'
][
'filter'
]))
{
unset
(
$listData
[
'data'
][
'filter'
]);
}
$data
=
ListProcess
::
getListData
(
$listData
[
'data'
]);
}
$listData
=
array
();
}
}
$order
=
$this
->
get
(
'order'
,
0
);
$condition
[
'order'
]
=
Helpers
::
transOrder
(
$order
,
$type
);
// /* 模糊搜索关键词 */
// if (isset($condition['query'])) {
// $data = Product\SearchModel::getSearchData($condition);
// break;
// }
//
// /* 精确搜索品牌 */
// if (isset($condition['brand'])) {
// $title = '';
// $data = Product\ListModel::getBrandData($condition, $title);
// break;
// }
//
// /* 精确搜索品类 */
// $data = Product\ListModel::getClassData($condition);
$data
=
Product\SearchModel
::
getSearchData
(
$condition
);
}
while
(
false
);
if
(
empty
(
$data
[
'new'
]))
{
echo
' '
;
...
...
yohobuy/m.yohobuy.com/application/models/Category/Brand.php
View file @
462022e
...
...
@@ -3,7 +3,6 @@
namespace
Category
;
use
LibModels\Wap\Category\BrandData
;
use
Configs\CacheConfig
;
use
Plugin\Helpers
;
/**
...
...
yohobuy/m.yohobuy.com/application/models/Product/List.php
View file @
462022e
...
...
@@ -47,7 +47,7 @@ class ListModel
$listData
=
ClassData
::
filterClassData
(
$condition
);
// 处理返回的数据
if
(
isset
(
$listData
[
'code'
])
&&
$listData
[
'code'
]
===
200
)
{
$result
=
ListProcess
::
getListData
(
$listData
[
'data'
]);
$result
=
ListProcess
::
getListData
(
$listData
[
'data'
]
,
false
);
}
if
(
USE_CACHE
)
{
...
...
@@ -81,6 +81,7 @@ class ListModel
if
(
isset
(
$introData
[
'data'
][
'brand_intro'
]))
{
$result
[
'id'
]
=
$id
;
$result
[
'intro'
]
=
$introData
[
'data'
][
'brand_intro'
];
$result
[
'collected'
]
=
(
isset
(
$introData
[
'data'
][
'is_favorite'
])
&&
$introData
[
'data'
][
'is_favorite'
]
==
'Y'
)
?
true
:
false
;
// 顶部导航的标题
$title
=
isset
(
$introData
[
'data'
][
'brand_name'
])
?
$introData
[
'data'
][
'brand_name'
]
:
''
;
}
...
...
@@ -121,7 +122,7 @@ class ListModel
$listData
=
BrandData
::
filterBrandData
(
$condition
);
// 处理返回的数据
if
(
isset
(
$listData
[
'code'
])
&&
$listData
[
'code'
]
===
200
)
{
$result
=
ListProcess
::
getListData
(
$listData
[
'data'
]);
$result
=
ListProcess
::
getListData
(
$listData
[
'data'
]
,
false
);
if
(
!
empty
(
$listData
[
'data'
][
'brand'
]))
{
$result
[
'brandWay'
]
=
array
(
'url'
=>
'http://'
.
$listData
[
'data'
][
'brand'
][
'brand_domain'
]
.
SUB_DOMAIN
,
...
...
yohobuy/m.yohobuy.com/application/models/Product/Search.php
0 → 100644
View file @
462022e
<?php
namespace
Product
;
use
Configs\CacheConfig
;
use
LibModels\Wap\Product\SearchData
;
use
Plugin\DataProcess\ListProcess
;
/**
* 搜索相关的模板数据模型
*
* @name Search
* @package Product
* @copyright yoho.inc
* @version 1.0 (2015-11-1 14:35:52)
*/
class
SearchModel
{
/**
* 获取搜索的数据
*
* @param array $condition 查询条件
* @return array
*/
public
static
function
getSearchData
(
$condition
)
{
$result
=
array
();
if
(
USE_CACHE
)
{
$key
=
CacheConfig
::
KEY_ACTION_INDEX_SEARCH
;
if
(
!
empty
(
$condition
))
{
$key
.=
http_build_query
(
$condition
,
null
,
'&'
);
}
// 先尝试获取一级缓存(master), 有数据则直接返回.
$result
=
Cache
::
get
(
$key
,
'master'
);
if
(
!
empty
(
$result
))
{
return
$result
;
}
}
// 调用接口查询数据 (使用新的 Elastic Engine)
$listData
=
SearchData
::
searchElasticByCondition
(
$condition
);
// 调用接口查询数据 (使用老的 Sphinx Engine)
// $listData = SearchData::searchByCondition($condition);
// 处理返回的数据
if
(
isset
(
$listData
[
'code'
])
&&
$listData
[
'code'
]
===
200
)
{
$result
=
ListProcess
::
getListData
(
$listData
[
'data'
],
false
);
}
if
(
USE_CACHE
)
{
// 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
if
(
empty
(
$result
))
{
$result
=
Cache
::
get
(
$key
,
'slave'
);
}
// 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
else
{
Cache
::
set
(
$key
,
$result
,
600
);
// 缓存10分钟
}
}
return
$result
;
}
}
...
...
yohobuy/m.yohobuy.com/application/modules/Guang/controllers/Index.php
View file @
462022e
...
...
@@ -154,11 +154,11 @@ class IndexController extends AbstractAction
$data
[
'guangList'
]
=
true
;
// 作者信息
$data
[
'author'
]
=
array
();
$data
[
'author'
][
'avatar'
]
=
Helpers
::
getImageUrl
(
$author
[
'avatar'
],
100
,
100
);
$data
[
'author'
][
'name'
]
=
$author
[
'name'
];
$data
[
'author'
][
'info'
]
=
$author
[
'author_desc'
];
$data
[
'author'
][
'id'
]
=
$id
;
$data
[
'authorInfo'
]
=
array
();
$data
[
'authorInfo'
][
'avatar'
]
=
Helpers
::
getImageUrl
(
$author
[
'avatar'
],
100
,
100
);
$data
[
'authorInfo'
][
'name'
]
=
$author
[
'name'
];
$data
[
'authorInfo'
][
'info'
]
=
$author
[
'author_desc'
];
$data
[
'authorInfo'
][
'id'
]
=
$id
;
// 标签聚合内容列表
$article
=
ListData
::
article
(
$gender
,
0
,
$uid
,
$udid
,
1
,
null
,
$id
);
...
...
@@ -166,7 +166,7 @@ class IndexController extends AbstractAction
if
(
!
empty
(
$article
[
'data'
][
'list'
][
'artList'
]))
{
$build
=
array
();
foreach
(
$article
[
'data'
][
'list'
][
'artList'
]
as
$article
)
{
$build
[]
=
Helpers
::
formatArticle
(
$article
,
true
,
$isApp
,
false
);
$build
[]
=
Helpers
::
formatArticle
(
$article
,
true
,
$isApp
,
false
);
}
$data
[
'guang'
][
'infos'
]
=
$build
;
}
...
...
yohobuy/m.yohobuy.com/configs/application.preview.ini
0 → 100644
View file @
462022e
[common]
;;默认项目
application.directory
=
APPLICATION_PATH "/application"
;;website library
application.library
=
ROOT_PATH "/library"
;;默认模块
application.modules
=
"Index,Category,Channel,Guang,Passport,Product,Cart"
;;加载
application.bootstrap
=
APPLICATION_PATH "/application/Bootstrap.php"
;;view文件的扩展名
application.view.ext
=
"phtml"
;;默认layouts
application.layout.path
=
APPLICATION_PATH "/application/layouts"
;;layouts 默认文件
application.layout.default
=
"default"
;;默认Controller
application.dispatcher.defaultController
=
"index"
;;默认Action
application.dispatcher.defaultAction
=
"index"
;;初始化命名空间
application.namespaces
=
"Action,Api,Configs,LibModels,Plugin"
;;使用composer
composer.autoload
=
0
composer.path
=
APPLICATION_PATH "/library/Package"
yaf.use_namespace
=
1
;;调试模式
[preview : common]
application.debug
=
False
application.servers.config
=
APPLICATION_PATH "/configs/core"
;出错的时候是否抛出异常
application.dispatcher.throwException
=
False
;是否使用默认的异常 捕获Controller, 如果开启, 在有未捕获的异常的时候,
;控制权会交给ErrorController的errorAction 方法,
;可以通过$request->getException()获得此异常对象
application.dispatcher.catchException
=
False
;模板预编译目录,该目录需要有读写权限
application.template.compile
=
ROOT_PATH "/compile/m.yohobuy.com"
application.template.path
=
ROOT_PATH "/template/m.yohobuy.com/actions"
application.template.partials
=
ROOT_PATH "/template/m.yohobuy.com/partials"
application.template.ext
=
".phtml"
;静态HTML页面的存放目录, 该目录需要有读写权限
application.assets.path
=
ROOT_PATH "/assets"
; 应用的版本号
application.version
=
"0.0.6"
; 网站SEO信息
application.seo.title
=
"Yoho!Buy有货"
application.seo.keywords
=
"Yoho! 有货官网,潮流志,潮流男装,潮牌,美国潮牌,日本潮牌,香港潮牌,潮牌店,新品首发,欧美潮流,全球购,代购,时尚,流行,特卖,B2C,正品,购物网站,网上购物,货到付款"
application.seo.description
=
"YOHO! 有货,年轻人潮流购物中心,中国最大的潮流商品购物网站。100%品牌正品保证,支持货到付款。作为YOHO!旗下的购物平台,汇集了全球潮流时尚商品和中国最流行的商品,也是国内最大的原创文化商品平台,也是香港,台湾地区流行商品的集中地。同时包含日本、韩国等众多国外潮流品牌,带给您全新潮流购物体验。"
...
...
Please
register
or
login
to post a comment