Authored by xuqi

Merge branch 'develop' of http://git.dev.yoho.cn/web/yohobuy into develop

<?php
namespace LibModels\Web\Home;
use Api\Yohobuy;
use Api\Sign;
use Plugin\Helpers;
class UserData extends \LibModels\Wap\Home\UserData
{
/**
* 根据手机号获取用户信息[TODO +cache]
*
* @param string $area
* @param string $mobile
* @return array
*/
public static function getUserInfoByMobile($area, $mobile)
{
$param = Yohobuy::param();
$param['method'] = 'app.passport.userlist';
$param['mobile'] = Helpers::makeMobile($area, $mobile);
$param['debug'] = 'Y';
$param['screen_size'] = '320x568';
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::post(Yohobuy::API_URL, $param);
}
/**
* 根据email获取用户信息
*
* @param string $email
* @return array
*/
public static function getUserInfoByEmail($email)
{
$param = Yohobuy::param();
$param['method'] = 'app.passport.userlist';
$param['email'] = $email;
$param['debug'] = 'Y';
$param['screen_size'] = '320x568';
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::post(Yohobuy::API_URL, $param);
}
}
\ No newline at end of file
... ...
<?php
namespace LibModels\Web\Passport;
use Api\Yohobuy;
use Api\Sign;
use Plugin\Helpers;
class RegData extends \LibModels\Wap\Passport\RegData
{
/**
* 根据手机号获取用户信息[TODO +cache]
*
* @param string $area
* @param string $mobile
* @return string
*/
public static function getUserInfoByMobile($area, $mobile)
{
$param = Yohobuy::param();
$param['method'] = 'app.passport.userlist';
$param['mobile'] = Helpers::makeMobile($area, $mobile);
$param['debug'] = 'Y';
$param['screen_size'] = '320x568';
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::post(Yohobuy::API_URL, $param);
}
}
\ No newline at end of file
... ...
No preview for this file type
... ... @@ -2,7 +2,7 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Wed Jan 13 13:50:02 2016
Created by FontForge 20120731 at Wed Jan 20 14:25:44 2016
By Ads
</metadata>
<defs>
... ... @@ -19,7 +19,7 @@ Created by FontForge 20120731 at Wed Jan 13 13:50:02 2016
bbox="-0.75 -224 3943 896"
underline-thickness="50"
underline-position="-100"
unicode-range="U+0078-E644"
unicode-range="U+0078-E645"
/>
<missing-glyph horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
... ... @@ -278,5 +278,10 @@ q0 -14 -3.5 -27t-10 -23.5t-16 -20t-20.5 -15.5t-24 -10t-27 -4zM848 367q-42 0 -71.
d="M523 881q-101 0 -192.5 -39.5t-158 -105.5t-105.5 -158t-39 -193q0 -205 145 -350t350 -145q67 0 131.5 18t119 49.5t100 77.5t77.5 100.5t49.5 118.5t17.5 131q0 101 -39 193t-105.5 158t-158 105.5t-192.5 39.5zM739 224q8 -8 7 -19q0 -2 -0.5 -4.5t-1.5 -5t-2.5 -4.5
t-3.5 -3q-11 -10 -15 -14q-7 -7 -17 -7t-18 7l-34 34q-59 -42 -131 -42q-94 0 -160.5 66.5t-66.5 160.5q0 46 18 88t48.5 72.5t72.5 48.5t88 18t88 -18t72.5 -48.5t48.5 -72.5t18 -88q0 -75 -45 -135zM592 337q8 7 18 6.5t17 -7.5l27 -27q25 39 25 84q0 64 -45.5 109.5
t-110 45.5t-110 -45.5t-45.5 -109.5t45.5 -109.5t109.5 -45.5q44 0 80 21l-27 28q-8 7 -7.5 18t7.5 18z" />
<glyph glyph-name="uniE645" unicode="&#xe645;"
d="M512 798q-104 0 -198 -40.5t-162.5 -109t-109 -162.5t-40.5 -198t40.5 -198t109 -162.5t162.5 -109t198 -40.5t198 40.5t162.5 109t109 162.5t40.5 198t-40.5 198t-109 162.5t-162.5 109t-198 40.5zM512 -149q-89 0 -170 34.5t-139.5 93t-93 139.5t-34.5 170
q0 71 22 137.5t62.5 120.5t94.5 94.5t120.5 62.5t137.5 22t137.5 -22t120.5 -62.5t94.5 -94.5t62.5 -120.5t22 -137.5q0 -89 -34.5 -170t-93 -139.5t-139.5 -93t-170 -34.5zM659 288q15 0 25.5 10.5t10.5 25.5t-10.5 26t-25.5 11h-111v17l135 141q5 5 8 12t2.5 14t-3 13.5
t-8.5 11.5q-10 11 -25 10.5t-26 -11.5l-115 -121l-123 122q-11 11 -26 10.5t-25 -10.5q-7 -7 -10 -16.5t-0.5 -19t9.5 -16.5l135 -135v-22h-108q-8 0 -14.5 -3t-11.5 -8t-8 -11.5t-3 -14.5q0 -9 5 -17.5t13.5 -13.5t18.5 -5h108v-73h-108q-8 0 -14.5 -3t-11.5 -7.5t-8 -11.5
t-3 -14.5t3 -14t8 -11.5t11.5 -8t14.5 -3h108v-108q0 -15 10.5 -25.5t25.5 -10.5q10 0 18.5 4.5t13 13t4.5 18.5v108h111q10 0 18.5 5t13 13.5t4.5 18.5q0 7 -2.5 14t-7.5 11.5t-12 7.5t-14 3h-111v73h111z" />
</font>
</defs></svg>
... ...
No preview for this file type
No preview for this file type
... ... @@ -144,6 +144,7 @@
padding: 20rem / $pxConvertRem 0;
font-size: 24rem / $pxConvertRem;
border-top: 1px solid #e0e0e0;
border-bottom: 1px solid #e0e0e0;
margin-bottom: 30rem / $pxConvertRem;
> li {
... ... @@ -180,7 +181,7 @@
}
.count {
color: #f00;
color: #7b7b7b;
float: right;
}
... ...
... ... @@ -129,7 +129,7 @@
display: inline;
font-size: 28rem / $pxConvertRem;
vertical-align: middle;
color: #444;
color: #666;
}
.clear-text {
... ...
... ... @@ -28,7 +28,7 @@
{{#if advanceBuy}}
<li class="advance-buy">
<a href="/cart/index/advanceBuy?cartType={{cartType}}">
<span class="iconfont">&#xe61b;</span>
<span class="iconfont">&#xe645;</span>
加价购
<span class="iconfont icon-right-arrow">&#xe614;</span>
<span class="count">{{advanceBuyCount}}</span>
... ...
{{> layout/header}}
<div class="new-sale-page product-page yoho-page">
{{# saleList}}
{{# saleBanner}}
<div class="sale-list-banner" style="height: {{bannerHeight}}px;">
<ul style="height: {{bannerHeight}}px;">
{{# list}}
<li class="banner-img" style="background:url({{img}}) no-repeat top center;"></li>
{{/ list}}
</ul>
</div>
{{/ saleBanner}}
{{> sale/sale-banner}}
<div class="center-content clearfix">
{{# saleTitle}}
<div class="header-title">
... ... @@ -31,4 +25,4 @@
</div>
{{/ saleList}}
</div>
{{> layout/footer}}
\ No newline at end of file
{{> layout/footer}}
... ...
... ... @@ -106,7 +106,7 @@
</div>
<div class="showdetail" data-code="{{content_code}}">
<a href="http://list.yohobuy.com/?gender=1,3&amp;msort=8">
<img src="http://img12.static.yhbimg.com/yhb-img01/2015/10/30/06/02af834d146e3f00b1f5fcc8388f641922.jpg?imageView/1/w/337/h/250" alt="" style=""></a>
<img src="data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///93d3f///yH5BAEAAAMALAAAAAABAAEAAAICVAEAOw==" alt="" style=""></a>
<a class="title" href="http://list.yohobuy.com/?gender=1,3&amp;msort=8">热门小物优选</a>
</div>
</div>
... ... @@ -124,7 +124,7 @@
<div class="search float-left {{searchcate}}" >
<form action="http://search.yohobuy.com" method="get" id="searchForm">
<span class="searchspan">
<input class="searchinput" type="text" name="keyword" id="query_key" autocomplete="off" x-webkit-speech="" lang="zh-CN" x-webkit-grammar="builtin:translate" value="" onfocus="if(this.value==this.defaultValue){this.value='';this.style.color='#333'}" onblur="if(this.value==''){this.value=this.defaultValue;this.style.color='#999'}" maxlength="30"></span>
<input class="searchinput" type="text" name="query" id="query_key" autocomplete="off" x-webkit-speech="" lang="zh-CN" x-webkit-grammar="builtin:translate" value="" onfocus="if(this.value==this.defaultValue){this.value='';this.style.color='#333'}" onblur="if(this.value==''){this.value=this.defaultValue;this.style.color='#999'}" maxlength="30"></span>
<a class="icon-search" href="javascript:submitSearch();"></a>
<ul class="search-list"></ul>
</form>
... ...
{{# saleBanner}}
<div class="sale-list-banner" style="height: {{bannerHeight}}px;">
<ul style="height: {{bannerHeight}}px;">
{{# list}}
<li class="banner-img" style="background:url({{img}}) no-repeat top center;"></li>
{{/ list}}
</ul>
</div>
{{/ saleBanner}}
... ...
... ... @@ -486,7 +486,7 @@ function actionGoodsCart() {
}, function() {
$(this).css('background-color', '#fff');
});
}, 'json');
}, 'jsonp');
}
function getText(obj) {
... ... @@ -535,13 +535,11 @@ function actionGoodsCart() {
var params = '';
if (typeof (domain) === undefined || domain === '') {
console.log('请设置请求的api地址');
return false;
}
params = $.extend(defaults, options);
params.page = params.page || 1;
if (params.method === '') {
console.log('请设置请求的URL');
return false;
}
try {
... ... @@ -1082,7 +1080,8 @@ function actionTipPic() {
function closeCover(){
function closeCover() {
var $cover = $('#cover');
$cover.remove();
... ... @@ -1093,58 +1092,97 @@ function closeCover(){
*/
function actionCover() {
var gender = cookieMap._Gender;
var newMask = '';
var windowheight = '';
var selfheight = '';
var containertop;
var length = '';
setCookie('_Channel','boys',{path : '/',domain : '.yohobuy.com',expires : 7});
if(typeof gender == 'undefined' || gender == '' || gender == null){
$.get('http://www.yohobuy.com/index/guide', function(data){
var newMask = document.createElement("div");
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
if (typeof gender === 'undefined' || gender === '' || gender === null) {
$.get('http://www.yohobuy.com/index/guide', function(data) {
newMask = document.createElement('div');
newMask.id = 'cover';
newMask.innerHTML=data;
newMask.innerHTML = data;
document.body.appendChild(newMask);
var window_height = $(window).height();
var self_height = $('.guide-box').height();
var container_top = window_height / 2 - self_height / 2;
var length=$('.guide-box .clear').find("li").length;
windowheight = $(window).height();
selfheight = $('.guide-box').height();
containertop = windowheight / 2 - selfheight / 2;
length = $('.guide-box .clear').find('li').length;
$('.guide-box').css({
width: (200 * length) + 'px',
top: container_top + 'px'
top: containertop + 'px'
});
$('#cover').bind('click', function(event){
setCookie('_Gender','1,3',{path : '/',domain : '.yohobuy.com',expires : 90});
setCookie('_Channel','boys',{path : '/',domain : '.yohobuy.com',expires : 7});
closeCover();
$('#cover').bind('click', function(event) {
window.setCookie('_Gender', '1,3', {
path: '/',
domain: '.yohobuy.com',
expires: 90
});
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
closeCover();
});
$('#cover .guide-box .close').bind('click', function(event){
getSource('弹窗','CLOSE','homepage_man');
setCookie('_Gender','1,3',{path : '/',domain : '.yohobuy.com',expires : 90});
setCookie('_Channel','boys',{path : '/',domain : '.yohobuy.com',expires : 7});
analy('guide_close');
closeCover();
$('#cover .guide-box .close').bind('click', function(event) {
getSource('弹窗', 'CLOSE', 'homepage_man');
window.setCookie('_Gender', '1,3', {
path: '/',
domain: '.yohobuy.com',
expires: 90
});
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
closeCover();
});
$('.boys img , .boys .go').bind('click', function(event){
getSource('弹窗','BOYS','homepage_man');
setCookie('_Gender','1,3',{path : '/',domain : '.yohobuy.com',expires : 90});
setCookie('_Channel','boys',{path : '/',domain : '.yohobuy.com',expires : 7});
analy( 'guide_boys');
closeCover();
$('.boys img , .boys .go').bind('click', function(event) {
getSource('弹窗', 'BOYS', 'homepage_man');
window.setCookie('_Gender', '1,3', {
path: '/',
domain: '.yohobuy.com',
expires: 90
});
window.setCookie('_Channel', 'boys', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
closeCover();
});
$('.girls img, .girls .go').bind('click', function(event){
getSource('弹窗','GIRLS','homepage_woman');
setCookie('_Gender','2,3',{path : '/',domain : '.yohobuy.com',expires : 90});
setCookie('_Channel','girls',{path : '/',domain : '.yohobuy.com',expires : 7});
analy( 'guide_girls');
$('.girls img, .girls .go').bind('click', function(event) {
getSource('弹窗', 'GIRLS', 'homepage_woman');
window.setCookie('_Gender', '2,3', {
path: '/',
domain: '.yohobuy.com',
expires: 90
});
window.setCookie('_Channel', 'girls', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
});
$('.lifestyle img, .lifestyle .go').bind('click', function(event){
setCookie('_Channel','lifestyle',{path : '/',domain : '.yohobuy.com',expires : 7});
getSource('弹窗','LIEFSTYLE','homepage_lifestyle');
analy( 'guide_lifestyle');
$('.lifestyle img, .lifestyle .go').bind('click', function(event) {
window.setCookie('_Channel', 'lifestyle', {
path: '/',
domain: '.yohobuy.com',
expires: 7
});
getSource('弹窗', 'LIEFSTYLE', 'homepage_lifestyle');
});
//防止冒泡事件
$('#cover .guide-box').bind('click', function(event){
$('#cover .guide-box').bind('click', function(event) {
event.stopPropagation();
});
});
});
}
}
/**
... ... @@ -1774,8 +1812,7 @@ function init() {
actionCover(); //初次登录弹框
}
init();
init();
});
define("js/product/entry", ["jquery","handlebars","source-map","lazyload"], function(require, exports, module){
/**
... ...
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
... ... @@ -8,7 +8,7 @@ var handlebars = require('yoho.handlebars');
var json2 = require('json2');
var vipInfoCombine = null; //用户信息编译模板
var loginInfoCombine = null; //登录信息编译模板
var apiDomain = 'http://api.open.yohobuy.com'; //获取数据的地址
var apiDomain = 'http://test.open.yohobuy.com/'; //获取数据的地址http://api.open.yohobuy.com
var cartTpl = ''; //购物车模板
/**
* 搜寻的时候过滤非法字符(+-/:等非法字符单独出现)
... ... @@ -75,7 +75,8 @@ function getSource(column, postition, event) {
} catch (e) {}
}
function submitSearch() {
window.submitSearch = function() {
var $keywordinput = $('#query_key').val();
var column = 'Search';
var postition = 'Head Search';
... ... @@ -97,6 +98,7 @@ function submitSearch() {
}
}
}
/**
* 定义购物车扩展
*/
... ... @@ -185,7 +187,7 @@ function actionGoodsCart() {
listIndex = (listIndex + 1) % queryNum;
getText(this);
} else if (event.which === 13) {
submitSearch();
window.submitSearch();
} else {
getKeywords(this);
}
... ...
... ... @@ -14,11 +14,10 @@ var $sc = $('#send-captcha'),
itime;
$sc.click(function() {
$.post('/passport/register/authcode', {
$.post('/passport/back/sendbackmobile', {
mobile: $('#mobile').val(),
area: $('#area').val(),
captcha: $('#captchaPic').val(),
project: 'repassword'
verifyCode: $('#captchaPic').val()
}, function(jsonData) {
if (jsonData.code === 200) {
$errTip.hide();
... ... @@ -72,17 +71,33 @@ itime = setInterval(function() {
$('#captcha').keyup(function() {
var v = $.trim($(this).val());
if (v !== '') {
//添加验证码正确验证
//$next.removeClass('disable').prop('disabled', false);
$next.removeClass('disable').removeAttr('disabled');
} else {
//$next.addClass('disable').prop('disabled', true);
$next.addClass('disable').attr('disabled', true);
var v = $.trim($(this).val()),
that = this;
if (v.length === 4) {
$.ajax({
type: 'POST',
url: '/passport/back/backmobile',
dataType: 'json',
data: {
verifyCode: $('#captcha').val(),
area: $('#area').val(),
mobile: $('#mobile').val()
},
success: function(res) {
if (res.code === 200) {
//添加验证码正确验证
$next.removeClass('disable').removeAttr('disabled');
$errTip.addClass('hide');
$(that).removeClass('error');
} else {
$next.addClass('disable').attr('disabled', true);
$errTip.removeClass('hide').find('em').text('验证码输入错误');
$(that).addClass('error');
}
}
});
}
}).blur(function() {
var v = $.trim($(this).val());
... ... @@ -91,10 +106,7 @@ $('#captcha').keyup(function() {
//添加验证码正确验证
$(this).addClass('error');
$errTip.removeClass('hide');
} else {
$(this).removeClass('error');
$errTip.addClass('hide');
$errTip.removeClass('hide').text('请输入验证码');
}
}).focus(function() {
$(this).removeClass('error');
... ...
... ... @@ -4,7 +4,7 @@ namespace Passport;
use Plugin\Helpers;
use LibModels\Web\Home\IndexData;
use LibModels\Web\Passport\RegData;
use LibModels\Web\Home\UserData;
use Plugin\Images;
use Plugin\Captcha;
... ... @@ -113,7 +113,7 @@ class PassportModel
*/
public static function getUserInfoByMobile($area, $mobile) {
$ret = array();
$data = RegData::getUserInfoByMobile($area, $mobile);
$data = UserData::getUserInfoByMobile($area, $mobile);
if($data['code'] == 200) {
if(!empty($data['data'])) {
$ret = current($data['data']);
... ... @@ -122,4 +122,20 @@ class PassportModel
return $ret;
}
/**
* 根据邮箱获取用户信息
*
* @param string $email
* @return array
*/
public static function getUserInfoByEmail($email) {
$ret = array();
$data = UserData::getUserInfoByEmail($email);
if($data['code'] == 200) {
if(!empty($data['data'])) {
$ret = current($data['data']);
}
}
return $ret;
}
}
... ...
... ... @@ -25,22 +25,34 @@ class BackController extends WebAction {
)
);
$this->_view->display ( 'index', $data );
}
/**
* 校验验证码
*/
public function authcodeAction() {
$phoneNum = $this->post ('phoneNum', '');
$area = intval ($this->post( 'area', '86' ));
$verifyCode = $this->post ('verifyCode', '');
$data = array('code' => 400, 'message' =>'验证失败');
if ((Helpers::verifyEmail($phoneNum) || Helpers::verifyMobile($phoneNum))
&& PassportModel::verifyCode($verifyCode)) {
$data['code'] = 200;
$data['message'] = '验证成功';
}
echo $this->echoJson($data);
}
/**
* 校验验证码
*/
public function authcodeAction()
{
$phoneNum = $this->post('phoneNum', '');
$area = intval($this->post('area', '86'));
$verifyCode = $this->post('verifyCode', '');
$data = array(
'code' => 200,
'message' => '验证成功'
);
if (PassportModel::verifyCode($verifyCode)) {
if (Helpers::verifyEmail($phoneNum)) {
if (empty(PassportModel::getUserInfoByEmail($phoneNum))) {
$data['message'] = '该账户不存在';
$data['code'] = 400;
}
} else if (Helpers::verifyMobile($phoneNum)) {
if (empty(PassportModel::getUserInfoByMobile($phoneNum, $area))) {
$data['message'] = '该账户不存在';
$data['code'] = 400;
}
}
}
echo $this->echoJson($data);
}
/**
... ... @@ -75,6 +87,23 @@ class BackController extends WebAction {
}
/**
* 发送找回手机号短信
*
* @return json
*/
public function sendbackmobileAction()
{
$mobile = $this->post ('mobile', '');
$area = intval ($this->post( 'area', '86' ));
$verifyCode = $this->post ('verifyCode', '');
$data = array('code' => 400, 'message' =>'验证失败');
if(Helpers::verifyMobile($mobile) && PassportModel::verifyCode($verifyCode)) { // 验证手机号
$data = BackData::sendCodeToMobile($mobile, $area);
}
echo $this->echoJson($data);
}
/**
* 发送邮件页面
*/
public function sendemailAction() {
... ... @@ -193,6 +222,7 @@ class BackController extends WebAction {
$area = $this->post ( 'area' );
$verifyCode = $this->post ( 'verifyCode' );
$code = $this->post ( 'code' ); // code
$data = array('code'=> 400, 'message' => '验证码错误!','data' => SITE_MAIN.'/passport/back/index');
if ($this->getSession ( 'mobile' ) == $mobile && $this->getSession ( 'area' ) == $area) {
$result = BackData::validateMobileCode ( $mobile, $code, $area );
if ($result ['code'] == 200) {
... ... @@ -204,12 +234,12 @@ class BackController extends WebAction {
) );
$code = AuthCode::encode ( $str, PassportModel::BACK_FIND_SECRET_KEY );
$url = '/passport/back/backcode?code=' . base64_encode ( $code );
$this->redirect ( SITE_MAIN . $url );
return true;
$data ['code'] = 200;
$data['message'] = '验证成功';
$data['data'] = SITE_MAIN . $url;
}
}
//出错直接跳到找回密码页
$this->redirect ('/passport/back/index');
$this->echoJson($data);
}
/**
... ...
... ... @@ -413,7 +413,32 @@ class Sale1Controller extends WebAction
'saleList' => array(
'saleBanner' => array(
'bannerHeight' => 350,
'img' => 'http://img12.static.yhbimg.com/couponImg/2015/12/10/08/02d4c26f19ca2e44359d69d5cff86167fb.jpg'
'list' => array(
array(
'bannerHeight' => 350,
'img' => 'http://img12.static.yhbimg.com/couponImg/2015/12/10/08/02d4c26f19ca2e44359d69d5cff86167fb.jpg'
),
array(
'bannerHeight' => 350,
'img' => 'http://img12.static.yhbimg.com/yhb-img01/2016/01/06/05/02062366574a01418596caa38a773f6beb.jpg'
),
array(
'bannerHeight' => 350,
'img' => 'http://img11.static.yhbimg.com/yhb-img01/2016/01/06/05/013341a0632177cc3425c3c6082845be57.jpg'
),
array(
'bannerHeight' => 350,
'img' => 'http://img12.static.yhbimg.com/couponImg/2015/12/10/08/02d4c26f19ca2e44359d69d5cff86167fb.jpg'
),
array(
'bannerHeight' => 350,
'img' => 'http://img12.static.yhbimg.com/yhb-img01/2016/01/06/05/02062366574a01418596caa38a773f6beb.jpg'
),
array(
'bannerHeight' => 350,
'img' => 'http://img11.static.yhbimg.com/yhb-img01/2016/01/06/05/013341a0632177cc3425c3c6082845be57.jpg'
)
)
),
'saleTitle' => array(
'name' => '全部商品',
... ... @@ -911,6 +936,7 @@ class Sale1Controller extends WebAction
'pager' => '<a href="" class="cur"><span>1</span></a><a href=""><span>2</span></a><a href="" title="下一页">下一页<span class="iconfont">&gt;</span></a>'
)
);
$this->setWebNavHeader();
$this->_view->display('sale-list', $data);
}
}
... ...