Authored by 梁志锋

merge 4.4

Showing 61 changed files with 2179 additions and 1089 deletions

Too many changes to show.

To preserve performance only 61 of 61+ files are displayed.

... ... @@ -22,21 +22,20 @@ class Yohobuy
// const YOHOBUY_URL = 'http://www.yohobuy.com/';
//java API
const API_URL = 'http://api.yoho.yohoops.org/';//
const API_URL2 = 'http://api.yoho.yohoops.org/';//
const SERVICE_URL = 'http://service.yoho.yohoops.org/';
// const API_URL = 'http://api.yoho.yohoops.org/';//
// const API_URL2 = 'http://api.yoho.yohoops.org/';//
// const SERVICE_URL = 'http://service.yoho.yohoops.org/';
// const YOHOBUY_URL = 'http://www.yohobuy.com/';
// const API_OLD = 'http://api2.open.yohobuy.com/';
// const SERVICE_NOTIFY = 'http://service.yoho.cn/';// 支付回调地址
// 测试环境
const API_URL = 'http://testapi.yoho.cn:28078/'; // 'http://192.168.102.205:8080/gateway/'
const SERVICE_URL = 'http://testservice.yoho.cn:28077/';
const YOHOBUY_URL = 'http://www.yohobuy.com/';
const API_OLD = 'http://api2.open.yohobuy.com/';
//// 支付回调地址
const SERVICE_NOTIFY = 'http://service.yoho.cn/';
// 测试环境 */
// const API_URL = 'http://testapi.yoho.cn:28078/'; // 'http://192.168.102.205:8080/gateway/'
// const SERVICE_URL = 'http://testservice.yoho.cn:28077/';
// const YOHOBUY_URL = 'http://www.yohobuy.com/';
// const API_OLD = 'http://test2.open.yohobuy.com/';
//// 支付回调地址
// const SERVICE_NOTIFY = 'http://testservice.yoho.cn:28077/';
const API_OLD = 'http://test2.open.yohobuy.com/';
// 支付回调地址
const SERVICE_NOTIFY = 'http://testservice.yoho.cn:28077/';
/* 预览环境 */
// const API_URL = 'http://preapi.yoho.cn/';
... ...
... ... @@ -503,5 +503,13 @@ class ChannelConfig
public static $completeType = 5; //已完成订单
public static $cancelType = 7; //取消订单
public static $historyType = 8; //历史订单
//order标签
public static $orderTagArr = array(
'gift' => array('name' => '赠品','classname' => 'freebie-tag'),
'price_gift' => array('name' => '加价购','classname' => 'advance-buy-tag'),
'advance' => array('name' => '预售','classname' => 'presall-tag'),
'ticket' => array('name' => '虚拟商品','classname' => 'virtual-good-tag')
);
}
... ...
... ... @@ -129,4 +129,22 @@ class ListData
return $result;
}
/**
* 通过品牌获取相关文章
* @param type $brandId 品牌id
* @param type $limit 取推荐内容的数量
* @param type $udid
* @return type []
*/
public static function getArticleByBrand($brandId, $limit, $udid = '')
{
$param = Yohobuy::param();
$param['brand_id'] = $brandId;
$param['udid'] = $udid;
$param['limit'] = $limit;
$param['private_key'] = Yohobuy::$privateKeyList['web'];
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::SERVICE_URL . 'guang/service/v2/article/getArticleByBrand', $param);
}
}
... ...
... ... @@ -266,11 +266,12 @@ class CartData
* @param int $deliveryWay 配送方式,1表示普通快递,2表示顺丰速运
* @param int $paymentType 支付方式,1表示在线支付,2表示货到付款
* @param string $couponCode 优惠券码
* @param string $promotionCode 优惠码
* @param mixed $yohoCoin 使用的YOHO币数量
* @param int $redEnvelopes 红包
* @return array 接口返回的数据
*/
public static function orderCompute($uid, $cartType, $deliveryWay, $paymentType, $couponCode, $yohoCoin, $redEnvelopes)
public static function orderCompute($uid, $cartType, $deliveryWay, $paymentType, $couponCode,$promotionCode,$yohoCoin, $redEnvelopes)
{
$param = Yohobuy::param();
$param['method'] = 'app.Shopping.compute';
... ... @@ -280,6 +281,9 @@ class CartData
if (!empty($couponCode)) {
$param['coupon_code'] = $couponCode;
}
if (!empty($promotionCode)) {
$param['promotion_code'] = $promotionCode;
}
if (!empty($yohoCoin)) {
$param['use_yoho_coin'] = $yohoCoin;
}
... ... @@ -361,6 +365,7 @@ class CartData
* @param int $paymentType 支付类型ID
* @param string $remark 留言
* @param string $couponCode 优惠券码
* @param string $promotionCode 优惠码
* @param mixed $yohoCoin 使用的YOHO币数量或为空
* @param int $isPreContact 送货前是否联系
* @param int $isPrintPrice 是否打印价格
... ... @@ -370,7 +375,7 @@ class CartData
* @return array 接口返回的数据
*/
public static function orderSub($uid, $addressId, $cartType, $deliveryTime, $deliveryWay, $invoiceTitle, $invoiceId,
$paymentId, $paymentType, $remark, $couponCode, $yohoCoin, $isPreContact, $isPrintPrice, $unionKey,$userAgent, $redEnvelopes)
$paymentId, $paymentType, $remark,$couponCode,$promotionCode, $yohoCoin, $isPreContact, $isPrintPrice, $unionKey,$userAgent, $redEnvelopes)
{
$param = Yohobuy::param();
$param['debug'] = 'Y';
... ... @@ -393,9 +398,13 @@ class CartData
}
$param['payment_id'] = $paymentId;
$param['payment_type'] = $paymentType;
if (!empty($couponCode)) {
$param['coupon_code'] = $couponCode;
}
if (!empty($promotionCode)) {
$param['promotion_code'] = $promotionCode;
}
if (!empty($yohoCoin)) {
$param['use_yoho_coin'] = $yohoCoin;
}
... ...
... ... @@ -114,19 +114,24 @@ class FavoriteData
}
/**
* 取消商品或品牌收藏
* @param type $uid 用户uid
* @param type $productId 商品id或品牌id
* @param type $bool 商品或品牌
* 取消商品或品牌或店铺收藏
* @param type $uid 用户uid
* @param type $productId 商品id或品牌id或店铺id
* @param type $isBrand 商品或品牌
* @param type $isShop 是否是店铺
* @return type
*/
public static function cancelProductFav($uid, $productId, $isBrand = false)
public static function cancelProductFav($uid, $productId, $isBrand = false, $isShop = false)
{
$param = Yohobuy::param();
$param['method'] = 'web.favorite.cancel';
$param['favIds'] = $productId;
$param['uid'] = $uid;
$param['type'] = $isBrand ? 'brand' : 'product';
if ($isShop) {
$param['type'] = 'shop';
} else {
$param['type'] = $isBrand ? 'brand' : 'product';
}
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
... ...
... ... @@ -77,52 +77,60 @@ class SearchData
elseif ($type == 'brand') {
return 'http://192.168.10.64:8080/yohosearch/brand/list.json';
}
return 'http://192.168.10.64:8080/yohosearch/search.json';
return 'http://192.168.102.216:8080/yohosearch/search.json';
case 'testing':
if ($type == 'sort') {
return 'http://testing.yohoops.org/yohosearch/sortgroup.json';
}
elseif ($type == 'discount') {
return 'http://testing.yohoops.org/yohosearch/discount.json';
}
elseif ($type == 'recent') {
return 'http://testing.yohoops.org/yohosearch/recent.json';
}
elseif ($type == 'suggest') {
return 'http://testing.yohoops.org/yohosearch/suggest.json';
}
else if($type == 'new-shelve') {
return 'http://testing.yohoops.org/yohosearch/new-shelve.json';
}
elseif ($type == 'shop') {
return 'http://testing.yohoops.org/yohosearch/shops.json';
}
elseif ($type == 'search') {
return 'http://testing.yohoops.org/yohosearch/search.json';
}
elseif ($type == 'brand') {
return 'http://testing.yohoops.org/yohosearch/brand/list.json';
}
return 'http://testing.yohoops.org/yohosearch/search.json';
case 'developer':
default:
if ($type == 'sort') {
return 'http://101.200.31.165/yohosearch/sortgroup.json';
// return 'http://101.200.31.165/yohosearch/sortgroup.json';
// return 'http://182.92.99.119:8080/yohosearch/sortgroup.json';
return 'http://192.168.102.216:8080/yohosearch/sortgroup.json';
}
elseif ($type == 'discount') {
return 'http://101.200.31.165/yohosearch/discount.json';
// return 'http://101.200.31.165/yohosearch/discount.json';
// return 'http://182.92.99.119:8080/yohosearch/discount.json';
return 'http://192.168.102.216:8080/yohosearch/discount.json';
}
elseif ($type == 'recent') {
return 'http://101.200.31.165/yohosearch/recent.json';
// return 'http://101.200.31.165/yohosearch/recent.json';
// return 'http://182.92.99.119:8080/yohosearch/recent.json';
return 'http://192.168.102.216:8080/yohosearch/recent.json';
}
elseif ($type == 'suggest') {
return 'http://101.200.31.165/yohosearch/suggest.json';
// return 'http://101.200.31.165/yohosearch/suggest.json';
// return 'http://182.92.99.119:8080/yohosearch/suggest.json';
return 'http://192.168.102.216:8080/yohosearch/suggest.json';
}
else if($type == 'new-shelve') {
return 'http://101.200.31.165/yohosearch/new-shelve.json';//'http://182.92.99.119:8080/yohosearch/new-shelve.json';
// return 'http://182.92.99.119:8080/yohosearch/new-shelve.json';//'http://182.92.99.119:8080/yohosearch/new-shelve.json';
return 'http://192.168.102.216:8080/yohosearch/new-shelve.json';
}
elseif ($type == 'shop') {
return 'http://101.200.31.165/yohosearch/shops.json';
// return 'http://101.200.31.165/yohosearch/shops.json';
// return 'http://182.92.99.119:8080/yohosearch/shops.json';
return 'http://192.168.102.216:8080/yohosearch/shops.json';
}
elseif ($type == 'search') {
return 'http://182.92.99.119:8080/yohosearch/search-once.json';
return 'http://192.168.102.216:8080/yohosearch/search.json';
}
elseif ($type == 'brand') {
return 'http://101.200.31.165/yohosearch/brand/list.json';
// return 'http://101.200.31.165/yohosearch/brand/list.json';
// return 'http://182.92.99.119:8080/yohosearch/brand/list.json';
return 'http://192.168.102.216:8080/yohosearch/brand/list.json';
}
return 'http://192.168.102.216:8087/yohosearch/search.json';
// return 'http://192.168.10.64:8080/yohosearch/search.json';
// return 'http://101.200.31.165/yohosearch/search.json';
//return 'http://101.200.31.165/yohosearch/search.json';
// return 'http://182.92.99.119:8080/yohosearch/search.json';
return 'http://192.168.102.216:8080/yohosearch/search.json';
}
}
... ... @@ -586,4 +594,18 @@ class SearchData
{
return Yohobuy::get(self::getUrl(), $param);
}
/**
* 根据品牌id查询店铺列表接口
* @param type array $param
* @return type []
*/
public static function getQueryShopsByBrandId($brandId)
{
$param = Yohobuy::param();
$param['method'] = 'app.shop.queryShopsByBrandId';
$param['brand_id'] = $brandId;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
}
\ No newline at end of file
... ...
<?php
namespace LibModels\Web\Product;
use Api\Yohobuy;
use Api\Sign;
/**
* 品牌店铺的接口
* @info http://git.dev.yoho.cn/yoho-documents/api-interfaces/blob/master/%E5%95%86%E5%93%81%E5%88%97%E8%A1%A8/brandShops.md
* @copyright yoho.inc
* @author xiaoxiao.hao <xiaoxiao.hao@yoho.cn>
*/
class ShopData
{
/**
* 获取店铺装修的所有资源接口
* @param type int $shopId 店铺id
* @return type []
*/
public static function shopsDecoratorList($shopId)
{
$param = Yohobuy::param();
$param['method'] = 'app.shopsdecorator.getList';
$param['shop_id'] = intval($shopId);
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 查询店铺介绍接口
* @param type int $shopId 店铺id
* @return type []
*/
public static function getIntro($shopId, $uid = '')
{
$param = Yohobuy::param();
$param['method'] = 'app.shops.getIntro';
$param['shop_id'] = intval($shopId);
$param['uid'] = $uid;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 查询店铺下面的所有品牌
* @param type int $shopId 店铺id
* @return type []
*/
public static function getShopsBrands($shopId)
{
$param = Yohobuy::param();
$param['method'] = 'app.shops.getShopsBrands';
$param['shop_id'] = intval($shopId);
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 搜索店铺内商品 || 查询该店铺下全部商品
* @param type int $shopId 店铺id
* @return type []
*/
public static function getSearch($shopId)
{
$param = Yohobuy::param();
$param['method'] = 'app.search.li';
$param['shop'] = intval($shopId);
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 查询该店铺下所有二级品类
* @param type int $shopId 店铺id
* @param type string $yhChannel 频道
* @param type string $gender 性别
* @return type []
*/
public static function getSortInfo($shopId, $yhChannel = '', $gender = '')
{
$param = Yohobuy::param();
$param['method'] = 'app.shop.getSortInfo';
$param['shop_id'] = intval($shopId);
$param['yh_channel'] = $yhChannel;
$param['gender'] = $gender;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 收藏|取消 店铺接口
* @param type int $shopId 店铺id
* @param type Boolean $isfavorite true:收藏,false:取消
* @param type string $type 收藏的类型,brand、product、shop
* @return type []
*/
public static function setFavorite($shopId, $isfavorite, $uid, $type = 'shop')
{
$param = Yohobuy::param();
$param['method'] = $isfavorite ? 'app.favorite.add' : 'app.favorite.cancel';
$param['id'] = intval($shopId);
$param['fav_id'] = intval($shopId);
$param['uid'] = $uid;
$param['type'] = $type;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
/**
* 根据domain查找shop_id
* @param type string $domain 品牌域名
* @return type []
*/
public static function byDomain($domain)
{
$param = Yohobuy::param();
$param['method'] = 'web.brand.byDomain';
$param['domain'] = $domain;
$param['client_secret'] = Sign::getSign($param);
return Yohobuy::get(Yohobuy::API_URL, $param);
}
}
... ...
... ... @@ -177,8 +177,15 @@ class HelperSearch
self::setSearchNav($data['product']['total']);
}
//品牌店铺信息
if (isset($data['shop']) && !empty($data['shop']) && isset($data['shopSort'])) {
$result['shopEntry'] = self::shop($data['shop'], $data['shopSort']);
if (isset($data['shopData']) && !empty($data['shopData'])) {
$result['shopEntry'] = array();
foreach ($data['shopData'] as $val) {
$shopSort = self::shop($val['shop'], $val['shopSort']);
if (empty($shopSort)) {
continue;
}
$result['shopEntry'][] = $shopSort;
}
}
//分页
if (isset($result['totalCount'])) {
... ... @@ -261,7 +268,7 @@ class HelperSearch
if (!$defaultGood) {
$defaultGood = $v['goods_id'];
}
if (!$val['default_images']) {
if (isset($val['default_images']) || empty($val['default_images'])) {
$val['default_images'] = $v['images_url'];
}
}
... ... @@ -307,6 +314,11 @@ class HelperSearch
$isNew = false;
$isSale = false;
}
if (isset($options['isNew']) && $options['isNew']) {
$isNew = true;
}
//SALE、NEW标签不共存
if ($isNew) {
$isSale = false;
... ... @@ -323,7 +335,7 @@ class HelperSearch
'name' => $val['product_name'],
'salePrice' => $val['sales_price'],
'brand' => array(
'url' => Helpers::url('', '', $val['brand_domain']),
'url' => Helpers::url('', '', isset($val['brand_domain']) ? $val['brand_domain'] : ''),
'name' => $val['brand_name']
),
'isFew' => $isFew,
... ... @@ -584,7 +596,7 @@ class HelperSearch
//已选中品牌标签名
$existName = array();
foreach ($brand as $key => $v) {
if (!$v['brand_alif']) {
if (empty($v['brand_alif'])) {
$v['brand_alif'] = substr($v['brand_name_en'], 0, 1);
if (!$v['brand_alif']) {
$pinyin = self::pinYin($v['brand_name']);
... ... @@ -734,10 +746,10 @@ class HelperSearch
unset($params['color']);
}
$result = array();
$color = $filter['color'];
if (!isset($color) && empty($color)) {
if (!isset($filter['color']) && empty($filter['color'])) {
return $result;
}
$color = $filter['color'];
if (isset($color['color_id'])) {
$checked = isset(self::$params['color']) && self::$params['color'] ==$color['color_id'] ? true : false;
$result[] = array(
... ... @@ -869,7 +881,7 @@ class HelperSearch
unset($params['style']);
}
$result = array();
$style = $filter['style'];
$style = empty($filter['style']) ? array() : $filter['style'];
$styleNum = 0;
$styleName = '';
foreach ($style as $v) {
... ... @@ -1175,6 +1187,10 @@ class HelperSearch
}
$queryPath = explode('?', $_SERVER['REQUEST_URI']);
$params_arr = array();
//店铺装修,添加额外参数
if (empty($params['shopId']) && isset($_REQUEST['shopId'])) {
$params['shopId'] = $_REQUEST['shopId'];
}
foreach ($params as $key => $val) {
if (is_array($val) || $val === '') {
continue;
... ... @@ -1310,6 +1326,10 @@ class HelperSearch
if (!empty(self::$specialsaleParam)) {
$url[0] .= '?' . http_build_query(self::$specialsaleParam);
}
//店铺装修,添加额外参数
if (empty($urlParam['shopId']) && isset($_REQUEST['shopId'])) {
$urlParam['shopId'] = $_REQUEST['shopId'];
}
if (isset(self::$params['query'])) {
$urlParam['query'] = self::$params['query'];
}
... ... @@ -1429,7 +1449,14 @@ class HelperSearch
if (self::$total == 0) {
return $shopEntry;
}
$url = Helpers::url('', '', $shop['brand_domain']);
if (empty($shopSort)) {
$shopSort = array();
}
$shop['shop_id'] = empty($shop['shop_id']) ? '' : $shop['shop_id'];
$url = Helpers::url('', array('shopId' => $shop['shop_id']), $shop['brand_domain']);
$sort = array();
$sortInfo = array();
foreach ($shopSort as $msort) {
... ... @@ -1441,11 +1468,12 @@ class HelperSearch
break 2;
}
$sortInfo = array();
$sortInfo['href'] = $url . '/?msort=' . $msort['sort_id'] . '&misort=' . $misort['sort_id'];
$sortInfo['href'] = "{$url}&msort={$msort['sort_id']}&misort={$misort['sort_id']}";
$sortInfo['name'] = $misort['sort_name'];
$sort[] = $sortInfo;
}
}
$shop['brand_ico'] = strstr($shop['brand_ico'], '?', true);
$shopEntry['home'] = $url;
$shopEntry['logo'] = Images::getImageUrl($shop['brand_ico'], 80, 50, 1, 'brandLogo');
$shopEntry['shopName'] = $shop['brand_name'];
... ...
... ... @@ -1050,4 +1050,44 @@ class Helpers
return true;
}
/**
* 格式化产品url
* @param type int $productId 产品id
* @param type $productSkn 产品编号
* @param type $productName 产品名称
* @param type $cnAlphaBet
* @return type url
*/
public static function getProductUrl($productId, $productSkn, $productName = '', $cnAlphaBet = '')
{
$cnAlphaBet = empty($cnAlphaBet) ? $cnAlphaBet : md5($productName);
return self::url(
'/product/pro_' . $productId . '_' .
$productSkn . '/' . $cnAlphaBet . '.html',
null,
'item'
);
}
/**
* 截取字符串长度,超过用省略号表示
* @param type string $str 字符串
* @param type int $len 要截取的长度
* @return type string
*/
public static function substrEllipsis($str, $len)
{
return mb_substr($str, 0, $len, 'utf-8') . ($len >= mb_strlen($str,'utf-8') ? '' : '...');
}
/**
* 判断字符串是否包含中文
* @param type string $str 字符串
* @return type boolean
*/
public static function isChinese($str)
{
return preg_match("/[\x7f-\xff]/", $str);
}
}
... ...
... ... @@ -108,7 +108,7 @@
</div>
</td>
<td class="productPrice">¥{{productPrice}}</td>
<td>{{yohoIcon}}</td>
<td>{{yohoIcon}}</td>
<td class="adjust-cart-num">
{{#if isGift}}
<div>{{productNum}}</div>
... ... @@ -163,7 +163,7 @@
<span class="vipPrice">(VIP)</span>
{{/isVipPrice}}
</td>
<td>{{yohoIcon}}</td>
<td>{{yohoIcon}}</td>
<td class="adjust-cart-num">
{{#if isGift}}
<div>{{productNum}}</div>
... ... @@ -259,7 +259,7 @@
<del class="wapper-price" style="margin-right: 5px;"{{marketPrice}}</del>
<span class="subjoin-price"{{subjoinPrice}}</span>
</td>
<td style="width:7%;">{{yohoIcon}}</td>
<td style="width:7%;">{{yohoIcon}}</td>
<td style="width:10%;">1</td>
<td style="width:10%;">¥{{subjoinPrice}}</td>
<td style="width:20%; border-right: none;">
... ... @@ -318,7 +318,11 @@
{{/unless}}
<div class="right">
<p class="sum">商品总价(¥{{cartEnsure.productAmmount}})- 活动(¥{{cartEnsure.activeSale}})= 商品金额总计(¥{{cartEnsure.productAllA}})</p>
<p>获赠YOHO币:{{cartEnsure.getYoho}}个 商品总价(不含运费):<strong>¥{{cartEnsure.productAllA}}</strong> 元</p>
<p>
<a href="/help/?category_id=87" class="yoho-coin" target="_blank"></a>
共返YOHO币:{{cartEnsure.getYoho}}个 商品总价(不含运费):
<strong>¥{{cartEnsure.productAllA}}</strong>
</p>
</div>
</div>
<div class="cartnew-submit" id="payDiv">
... ...
{{> layout/header}}
{{> layout/header}}
<div class="order-ensure-page yoho-page clearfix">
{{# orderEnsure}}
<div class="order-edit">
... ... @@ -123,13 +123,19 @@
</ul>
</div>
</li>
<li>
{{#if supportDeliveryPay}}
<input value="2" {{#if deliveryPay.checked}}checked{{/if}} class="radio {{#if deliveryPay.checked}}checked{{/if}}" name="pay-type" type="radio" id="" data-pay="{{deliveryPay.paymentId}}"/>
{{/if}}
<label for="">货到付款</label>
<span class="pay-type-tips">注:订单中有限量商品、预售商品、化妆品或者订单金额超过5000元不可以选择货到付款。</span>
<span class="pay-type-tips">
{{#if packages}}
注:您订单中的商品暂不支持货到付款,请您选择在线支付。
{{^}}
注:{{paymentInCashInfo}}
{{/if}}
</span>
</li>
</ul>
... ... @@ -141,7 +147,7 @@
<label for="">{{desc}}</label>
</li>
{{/each}}
<li class="pay-dashed-hr pay-type-tips">声明:我们会努力按照您指定的时间配送,但因为天气、交通等各类因素影响,您的订单有可能会有延误现象,敬请谅解!</li>
<li>
... ... @@ -173,6 +179,48 @@
</div>
</div>
</div>
<!-- 订单提示-->
{{#if packages}}
<div id="differentOrder" class="differentOrder">
<p class="warn">
温馨提示:您购买的商品<span class="red">分属不同的仓库</span>,需要调拨,将被拆分为多个包裹送达
<span class="why">
</span>
</p>
<div id="differentBag" class="differentBag">
{{#each packages}}
<div class="bag">
<h3>
{{title}}
</h3>
<p class="pre">
</p>
<div class="bagDetil">
<ul>
{{#each goodlist}}
<li >
<img src={{src}}/>
{{#if goodsType}}
<p class="{{classname}}" >{{goodsType}}</p>
{{/if}}
</li>
{{/each}}
</ul>
</div>
<p class="next">
</p>
{{#if fee}}
<p class="express-fee">运费:¥{{fee}}元(原价{{orign}}元,优惠{{count}}元)</p>
{{else}}
<p class="express-fee">运费:¥0.00元</p>
{{/if}}
</div>
{{/each}}
</div>
</div>
{{/if}}
<div class="order-pay">
<div class="pay-wapper">
<table>
... ... @@ -214,7 +262,7 @@
<span class="vipPrice">(VIP)</span>
{{/isVipPrice}}
</td>
<td>{{yohoIcon}}</td>
<td>{{yohoIcon}}</td>
<td>{{productNum}}</td>
<td class="cart-sub-total {{#xForOne}}xforone{{/xForOne}}">
{{#if xForOne}}
... ... @@ -259,13 +307,16 @@
<label for="isPPY">是</label>
<input name="isPP" id="isPPN" type="radio" value="N">
<label for="isPPN">否</label>
(如:送朋友的商品可不打印价格哦!)
(如:送朋友的商品可不打印价格哦!)
</p>
</div>
</dd>
</dl>
</div>
<div class="play-right">
<div class="back-coin">
<a href="/help/?category_id=87" class="yoho-coin" target="_blank"></a>共返YOHO币:{{totalYoho}}个
</div>
<ul class="play-total">
{{#each promotionFormulaList}}
<li class="{{#if isExpress}}total-express-w{{/if}}">
... ... @@ -330,9 +381,9 @@
</div>
{{/if}}
</div>
</div>
</div>
</div>
<div class="to-play">
<p>您需要实际支付金额:<em>{{lastOrderAmount}}</em>元</p>
<div class="btn-group clearfix">
... ... @@ -343,4 +394,4 @@
{{/ orderEnsure}}
<div class="loading"><span></span>请稍后...</div>
</div>
{{> layout/footer}}
\ No newline at end of file
{{> layout/footer}}
... ...
{{> layout/header}}
<div class="order-detail-page me-page yoho-page clearfix">
{{# meOrderDetail}}
{{> home/path}}
{{> home/navigation}}
<div class="me-main">
<div class="order-detail block" data-id="{{orderNum}}">
<h2 class="title"></h2>
<div class="status">
<p>
订单编号:
<em>{{orderNum}}</em>
</p>
<p class="cur-status">
当前状态:{{curStatus}}
</p>
{{#if complete}}
<p class="complete-tip">订单已经完成,感谢你在YOHO商城购物,欢迎您对本次交易及所购商品进行评价。</p>
{{/if}}
{{#if operation.goPay}}
<a class="go-pay oo-btn" href="{{operation.goPay}}">立即付款</a>
{{/if}}
</div>
<div class="detail-info{{#if virtualGoods}} virtual-detail{{/unless}}">
{{# progress}}
<div class="order-progress">
<div class="progress-box">
<div class="outter-progress">
<div class="inner-progress" style="width: {{percent}};"></div>
</div>
<ul class="clearfix">
{{#each middleStatus}}
<li class="pg-{{@index}}{{#if cur}} cur{{/if}}">
{{name}}
{{#if date}}
<span class="date">{{date}}</span>
{{/if}}
</li>
{{/each}}
</ul>
</div>
</div>
{{/ progress}}
{{# traceOrder}}
<div class="trace-order">
<p class="sub-title">
<span class="icon"></span>
订单追踪
</p>
<div class="content">
<p>下单时间:{{orderDate}}</p>
{{#if logisticsCompany}}
<p>物流公司:{{logisticsCompany}}</p>
{{/if}}
{{#if courierNumbe}}
<p>快递单号:{{courierNumbe}}</p>
{{/if}}
<table>
<thead>
<th class="handle-time">处理时间</th>
<th class="recive-place">接收地点</th>
<th class="logistics-info">物流信息</th>
</thead>
<tbody>
{{# logistics}}
<tr>
{{#each .}}
<td>
{{.}}
</td>
{{/each}}
</tr>
{{/ logistics}}
</tbody>
</table>
</div>
</div>
{{/ traceOrder}}
{{# orderInfo}}
<div class="order-info">
<p class="sub-title">
<span class="icon"></span>
订单信息
</p>
<div class="content">
<p>收货人:{{receiver}}</p>
<p>收货地址:{{address}}</p>
<p>联系电话:{{phone}}</p>
</div>
</div>
{{/ orderInfo}}
<div class="order-remark">
<p class="sub-title">
<span class="icon"></span>
备注
</p>
<p class="content">
{{remark}}
</p>
</div>
{{# noramlPayMode}}
<div class="pay-mode">
<p class="sub-title">
<span class="icon"></span>
支付及配送方式
</p>
<div class="content">
<p>支付类型:{{payMode}}</p>
{{#if payWay}}
<p>支付方式:{{payWay}}</p>
{{/if}}
<p>送货上门时间:{{deliverTime}}</p>
</div>
</div>
{{/ noramlPayMode}}
{{# virtualPayMode}}
<div class="pay-mode virtual-pay-mode">
<p class="sub-title">
<span class="icon"></span>
付款方式
</p>
<div class="content">
<span>付款方式:{{payMode}}</span>
<span>电话号码:{{phone}}</span>
</div>
</div>
{{/ virtualPayMode}}
<div class="good-list">
<p class="sub-title">
<span class="icon"></span>
商品清单
</p>
<div class="content">
<table>
<thead>
<th class="product-info">商品信息</th>
<th class="good-price">单价(元)</th>
<th class="yoho-coin">
返YOHO币
<a target="_blank" href="{{yohoCoinUrl}}"></a>
</th>
<th class="num">数量</th>
<th class="sum">小计(元)</th>
</thead>
<tbody>
{{# goods}}
<tr>
<td>
<a class="thumb-link" href="{{url}}" target="_blank">
<img class="thumb" src="{{img}}">
{{> home/order-goods-tags}}
</a>
<p class="name-color-size">
<a class="name" href="{{url}}" target="_blank">{{name}}</a>
{{#if color}}
颜色:{{color}}
{{/if}}
{{#if size}}
尺码:{{size}}
{{/if}}
{{#if date}}
日期:{{date}}
{{/if}}
</p>
</td>
<td>{{price}}</td>
<td>{{coin}}</td>
<td>{{num}}</td>
<td>{{sum}}</td>
</tr>
{{/ goods}}
</tbody>
</table>
<div class="order-balance">
{{#each orderBalance}}
<p>
{{promotion}}:
{{#if @first}}
<em>{{account}}</em>
{{^}}
{{#if @last}}
<em class="payment">{{account}}</em>
{{^}}
{{account}}
{{/if}}
{{/if}}
</p>
{{/each}}
</div>
</div>
</div>
{{# operation}}
<div class="order-operation clearfix">
{{#if paid}}
<p>
<span class="success-icon oo-icon"></span>
订单已支付
</p>
{{/if}}
{{#if goPay}}
<a class="go-pay oo-btn" href="{{goPay}}" target="_blank" >立即付款</a>
{{/if}}
{{#if cancelOrder}}
<span class="cancel-order oo-btn">取消订单</span>
{{/if}}
{{#if shipped}}
<span id="receive-confirm" class="confirm-received oo-btn">确认收货</span>
{{/if}}
{{#if cancel}}
<p>
<span class="cancel-icon oo-icon"></span>
订单已取消
</p>
{{/if}}
{{#if checkQrCode}}
<a class="check-qrcode oo-btn" href="{{checkQrCode}}" target="_blank">查看二维码</a>
{{/if}}
</div>
{{/ operation}}
</div>
</div>
</div>
{{/ meOrderDetail}}
{{> home/order-cancel-tpl}}
</div>
{{> layout/header}}
<div class="order-detail-page me-page yoho-page clearfix">
{{# meOrderDetail}}
{{> home/path}}
{{> home/navigation}}
<div class="me-main">
<div class="order-detail block" data-id="{{orderNum}}">
<h2 class="title"></h2>
<div class="status">
<p>
订单编号:
<em>{{orderNum}}</em>
</p>
<p class="cur-status">
当前状态:{{curStatus}}
</p>
{{#if complete}}
<p class="complete-tip">订单已经完成,感谢你在YOHO商城购物,欢迎您对本次交易及所购商品进行评价。</p>
{{/if}}
{{#if operation.goPay}}
<a class="go-pay oo-btn" href="{{operation.goPay}}">立即付款</a>
{{/if}}
</div>
<div class="detail-info{{#if virtualGoods}} virtual-detail{{/unless}}">
{{# progress}}
<div class="order-progress">
<div class="progress-box">
<div class="outter-progress">
<div class="inner-progress" style="width: {{percent}};"></div>
</div>
<ul class="clearfix">
{{#each middleStatus}}
<li class="pg-{{@index}}{{#if cur}} cur{{/if}}">
{{name}}
{{#if date}}
<span class="date">{{date}}</span>
{{/if}}
</li>
{{/each}}
</ul>
</div>
</div>
{{/ progress}}
{{# traceOrder}}
<div class="trace-order">
<p class="sub-title">
<span class="icon"></span>
订单追踪
</p>
<div class="content">
<p>下单时间:{{orderDate}}</p>
{{#if logisticsCompany}}
<p>物流公司:{{logisticsCompany}}</p>
{{/if}}
{{#if courierNumbe}}
<p>快递单号:{{courierNumbe}}</p>
{{/if}}
<table>
<thead>
<th class="handle-time">处理时间</th>
<th class="recive-place">接收地点</th>
<th class="logistics-info">物流信息</th>
</thead>
<tbody>
{{# logistics}}
<tr>
{{#each .}}
<td>
{{.}}
</td>
{{/each}}
</tr>
{{/ logistics}}
</tbody>
</table>
</div>
</div>
{{/ traceOrder}}
{{# orderInfo}}
<div class="order-info">
<p class="sub-title">
<span class="icon"></span>
订单信息
</p>
<div class="content">
<p>收货人:{{receiver}}</p>
<p>收货地址:{{address}}</p>
<p>联系电话:{{phone}}</p>
</div>
</div>
{{/ orderInfo}}
<div class="order-remark">
<p class="sub-title">
<span class="icon"></span>
备注
</p>
<p class="content">
{{remark}}
</p>
</div>
{{# noramlPayMode}}
<div class="pay-mode">
<p class="sub-title">
<span class="icon"></span>
支付及配送方式
</p>
<div class="content">
<p>支付类型:{{payMode}}</p>
{{#if payWay}}
<p>支付方式:{{payWay}}</p>
{{/if}}
<p>送货上门时间:{{deliverTime}}</p>
</div>
</div>
{{/ noramlPayMode}}
{{# virtualPayMode}}
<div class="pay-mode virtual-pay-mode">
<p class="sub-title">
<span class="icon"></span>
付款方式
</p>
<div class="content">
<span>付款方式:{{payMode}}</span>
<span>电话号码:{{phone}}</span>
</div>
</div>
{{/ virtualPayMode}}
<div class="good-list">
<p class="sub-title">
<span class="icon"></span>
商品清单
</p>
<!--订单不同包裹提示-->
{{#if packages}}
<div id="differentOrder" class="differentOrder">
<p class="warn">
温馨提示:您购买的商品<span class="red">分属不同的仓库</span>,需要调拨,将被拆分为多个包裹送达
<span class="why">
</span>
</p>
<div id="differentBag" class="differentBag">
{{#each packages}}
<div class="bag">
<h3>
{{title}}
</h3>
<p class="pre">
</p>
<div class="bagDetil">
<ul>
{{#each goodlist}}
<li>
<a href={{link}}>
<img src={{src}}/>
</a>
{{#if goodsType}}
<p class="{{classname}}" >{{goodsType}}</p>
{{/if}}
</li>
{{/each}}
</ul>
</div>
<p class="next">
</p>
{{#if fee}}
<p>运费:¥{{fee}}元(原价{{orign}}元,优惠{{count}}元)</p>
{{else}}
<p>运费:¥0.00元</p>
{{/if}}
</div>
{{/each}}
</div>
</div>
{{/if}}
<div class="content">
<table>
<thead>
<th class="product-info">商品信息</th>
<th class="good-price">单价(元)</th>
<th class="yoho-coin">
返YOHO币
<a target="_blank" href="{{yohoCoinUrl}}"></a>
</th>
<th class="num">数量</th>
<th class="sum">小计(元)</th>
</thead>
<tbody>
{{# goods}}
<tr>
<td>
<a class="thumb-link" href="{{url}}" target="_blank">
<img class="thumb" src="{{img}}">
{{> home/order-goods-tags}}
</a>
<p class="name-color-size">
<a class="name" href="{{url}}" target="_blank">{{name}}</a>
{{#if color}}
颜色:{{color}}
{{/if}}
{{#if size}}
尺码:{{size}}
{{/if}}
{{#if date}}
日期:{{date}}
{{/if}}
</p>
</td>
<td>{{price}}</td>
<td>{{coin}}个</td>
<td>{{num}}</td>
<td>{{sum}}</td>
</tr>
{{/ goods}}
</tbody>
</table>
<div class="order-balance">
<p class="back-coin">
<a href="/help/?category_id=87" class="yoho-coin" target="_blank"></a>共返YOHO币:{{totalYoho}}个
</p>
{{#each orderBalance}}
<p>
{{promotion}}:
{{#if @first}}
<em>{{account}}</em>
{{^}}
{{#if @last}}
<em class="payment">{{account}}</em>
{{^}}
{{account}}
{{/if}}
{{/if}}
</p>
{{/each}}
</div>
</div>
</div>
{{# operation}}
<div class="order-operation clearfix">
{{#if paid}}
<p>
<span class="success-icon oo-icon"></span>
订单已支付
</p>
{{/if}}
{{#if goPay}}
<a class="go-pay oo-btn" href="{{goPay}}" target="_blank" >立即付款</a>
{{/if}}
{{#if cancelOrder}}
<span class="cancel-order oo-btn">取消订单</span>
{{/if}}
{{#if shipped}}
<span id="receive-confirm" class="confirm-received oo-btn">确认收货</span>
{{/if}}
{{#if cancel}}
<p>
<span class="cancel-icon oo-icon"></span>
订单已取消
</p>
{{/if}}
{{#if checkQrCode}}
<a class="check-qrcode oo-btn" href="{{checkQrCode}}" target="_blank">查看二维码</a>
{{/if}}
</div>
{{/ operation}}
</div>
</div>
</div>
{{/ meOrderDetail}}
{{> home/order-cancel-tpl}}
</div>
{{> layout/footer}}
\ No newline at end of file
... ...
{{> product/goods-list}}
\ No newline at end of file
... ...
{{> layout/header}}
<div class="shop-index-page product-list-page product-page yoho-page center-content home-page">
<div class="center-content clearfix">
{{> layout/path-nav}}
{{> product/shop-header}}
<div class="list-left pull-left">
{{> product/left-content}}
{{> product/shop-sidebar}}
</div>
<div class="list-right pull-right">
{{#if coupon}}
<div class="coupon clearfix">
<div class="coupon-title">
</div>
</div>
{{/if}}
{{#if largeSlideImg}}
<div class="slider-wrap clearfix">
<div class="slider-left pull-left">
<div class="slide-wrapper">
<ul>
{{#largeSlideImg}}
<li>
<a href="{{url}}"><img src="{{img}}"></a>
</li>
{{/largeSlideImg}}
</ul>
</div>
</div>
<div class="slider-right pull-right">
{{#oneRowTwoColImages}}
<a class="slider-item" href="{{url}}"><img src="{{img}}"></a>
{{/oneRowTwoColImages}}
</div>
</div>
{{/if}}
{{#newArrivel}}
<div class="new-arrivel clearfix">
{{> index/floor-header}}
{{> product/shop-single-list}}
</div>
{{/newArrivel}}
{{#hotSingle}}
<div class="hot-single clearfix">
{{> index/floor-header}}
{{> product/shop-single-list}}
</div>
{{/hotSingle}}
{{#allGoods}}
<div class="all-goods clearfix">
{{> index/floor-header}}
<div class="goods-wrap">
{{> product/goods-list}}
</div>
<div class="loading">
<a href="{{href}}" target= "_blank">查看更多</a>
</div>
</div>
{{/allGoods}}
{{#trendInfo}}
<div class="trend-info clearfix">
{{> index/floor-header}}
<ul class="trend-list">
{{#each trendList}}
<li>
<a href="{{href}}">
<img src="{{src}}" />
<div class="main-title">{{mainTitle}}</div>
<div class="sub-title">{{Subtitle}}</div>
</a>
</li>
{{/each}}
</ul>
</div>
{{/trendInfo}}
</div>
</div>
</div>
{{> layout/footer}}
... ...
{{> layout/header}}
<div class="shop-index-page product-list-page product-page yoho-page center-content">
<div class="center-content clearfix">
{{> layout/path-nav}}
{{> product/shop-header}}
<div class="list-left pull-left">
{{> product/left-content}}
{{> product/shop-sidebar}}
</div>
<div class="list-right pull-right">
{{> product/shop-entry}}
{{> product/standard-content}}
{{> product/latest-walk}}
</div>
</div>
</div>
{{> layout/footer}}
... ...
... ... @@ -15,7 +15,10 @@
<div class="li-1">订单号</div>
<div class="li-2">实际支付金额</div>
<div class="li-3">支付方式</div>
<div class="li-4">获得YOHO币</div>
<div class="li-4">
<a href="/help/?category_id=87" class="yoho-coin" target="_blank"></a>
共返YOHO币
</div>
<div class="li-5">获得VIP累计金额</div>
</div>
<div class="list">
... ... @@ -29,7 +32,7 @@
</div>
<div class="li-3 pay-mode">货到付款</div>
<div class="li-4">
<strong class="f-rz">{{yohoCoin}}</strong>
<strong class="f-rz">{{yohoCoin}}</strong>
<a href="{{yohoCoinUrl}}" class="f-e" target="_blank">YOHO币能做什么</a>
</div>
<div class="li-5">
... ...
... ... @@ -14,7 +14,7 @@
{{^}}
<ul>
{{# brands}}
<li class="fav-brand fav-row" data-id="{{id}}">
<li class="fav-brand fav-row" data-id="{{id}}" data-shopid="{{shop_id}}" data-brandOrShopType="{{brandOrShopType}}">
<div class="checkbox">
<input type="checkbox">
</div>
... ...
... ... @@ -304,5 +304,10 @@
seajs.use('js/coupon/coupon');
</script>
{{/if}}
{{!-- 店铺首页 --}}
{{#if shopIndexPage}}
<script>
seajs.use('js/product/shop-index');
</script>
{{/if}}
... ...
<div class="fixed-area">
{{# goodsMenu}}
<div class="all-goods-menu">
<span class="menu-tag">所有商品</span>
<ul class="menu-list">
{{#each menuList}}
<li class="{{#if curMenu}} on {{/if}}"><a class="pjax" href="{{href}}">{{name}}</a></li>
{{/each}}
</ul>
<a href="{{url}}" class="more">MORE</a>
</div>
{{/goodsMenu}}
{{# opts}}
<div class="sort-pager">
{{# sortType}}
<a class="sort-type{{#if active}} active{{/if}} pjax" href="{{href}}">
{{name}}
{{#if hasSortOrient}}
{{#if active}}
{{#if desc}}
<span class="active-icon iconfont">&#xe603;</span>
{{^}}
<span class="active-icon iconfont">&#xe604;</span>
{{/if}}
{{^}}
<span class="iconfont">&#xe614;</span>
{{/if}}
{{^}}
<span class="iconfont">&#xe604;</span>
{{/if}}
</a>
{{/ sortType}}
{{#if list}}
{{#if oldPage}}
<div class="pager-wrap">
<p class="page-orient">
{{#if preHref}}
<a class="pjax" href="{{preHref}}">
<span class="iconfont">&#xe615;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe615;</span>
{{/if}}
<span>
<i>{{curPage}}</i>/{{pageCount}}
</span>
{{#if nextHref}}
<a class="pjax" href="{{nextHref}}">
<span class="iconfont">&#xe601;</span>
</a>
{{^}}
<span class="dis-icon iconfont">&#xe601;</span>
{{/if}}
</p>
</div>
{{^}}
<div class="page-nav">
{{#if preHref}}
<a class="pjax" href="{{preHref}}">
<span class="page-prev"><i class="arrow-left"></i></span>
</a>
{{^}}
<span class="page-prev"><i class="arrow-left"></i></span>
{{/if}}
{{#if nextHref}}
<a class="pjax" href="{{nextHref}}">
<span class="page-next">
下一页
<i class="arrow-right"></i>
<i class="pages">{{curPage}}</i>/{{pageCount}}
</span>
</a>
{{^}}
<span class="page-next">
下一页
<i class="arrow-right"></i>
<i class="pages">{{curPage}}</i>/{{pageCount}}
</span>
{{/if}}
</div>
{{/if}}
{{/if}}
</div>
{{/ opts}}
</div>
<div class="goods-container clearfix">
{{# list}}
{{> product/good}}
{{/list}}
<div class="good-item-wrapper">
<div class="good-info-main"></div>
<div class="good-select-color"></div>
</div>
</div>
... ...
... ... @@ -114,3 +114,17 @@
{{#if node}}
<div id="brand-card" class="brand-card" data-node="{{node}}"></div>
{{/if}}
{{!-- 水牌广告-基础模板 --}}
{{#signboard}}
<div class="sell-signboard left-modular">
<h2 class="title">{{title}}</h2>
<ul class="left-list">
{{#each list}}
<li>
<a target="_blank" href="{{url}}"><img src="{{img}}" alt="{{title}}" /></a>
</li>
{{/each}}
</ul>
</div>
{{/signboard}}
... ...
{{# shopEntry}}
<div class="shop-entry clearfix">
<a class="pull-left" href="{{home}}">
<img class="logo" src="{{logo}}">
</a>
<div class="shop-entry-area">
{{# shopEntry}}
<div class="shop-entry clearfix">
<a class="pull-left" href="{{home}}">
<img class="logo" src="{{logo}}">
</a>
<div class="name pull-left">
<a class="shop-name" href="{{home}}">{{shopName}}</a>
<p class="sorts">
{{#each sort}}
<a href="{{href}}">{{name}}</a>
<div class="name pull-left">
<a class="shop-name" href="{{home}}">{{shopName}}</a>
<p class="sorts">
{{#each sort}}
<a href="{{href}}">{{name}}</a>
{{#unless @last}}
/
{{/unless}}
{{/each}}
</p>
</div>
{{#unless @last}}
/
{{/unless}}
{{/each}}
</p>
</div>
<a class="entry-btn pull-right" href="{{home}}">
进入品牌店铺
<span class="iconfont">&#xe601;</span>
</a>
</div>
{{/ shopEntry}}
<a class="entry-btn pull-right" href="{{home}}">
进入品牌店铺
<span class="iconfont">&#xe601;</span>
</a>
</div>
{{/ shopEntry}}
</div>
\ No newline at end of file
... ...
{{# shopTopBanner}}
<div class="shop-banner">
<div class="banner-img" style="height: {{bannerHeight}}px;background: url({{banner}})"></div>
{{#if isShowShopName}}
<div class="shop-name">
{{brandIntro.brandName}}
</div>
{{/if}}
<div class="opt-wrap">
<div class="shop-intro">
<i class="shop-intro-ico"></i>
店铺介绍
</div>
<div class="shop-collect" data-id="{{brandIntro.shopId}}">
<i class="shop-collect-ico {{#if brandIntro.isFavorite}}on{{/if}}"></i>
<span class="shop-collect-text">
{{#if brandIntro.isFavorite}}
已收藏
{{else}}
收藏
{{/if}}
</span>
</div>
</div>
</div>
{{#brandIntro}}
<div class="pop-shop-intro">
<div class="shop-intro-bg"></div>
<div class="shop-intro-area">
<i class="close-btn"></i>
<div class="brand-cont">
<div class="intro-title">
<h2>{{brandName}}</h2>
<p>品牌介绍</p>
</div>
<div class="intro-cont">
{{{brandCont}}}
</div>
</div>
</div>
</div>
{{/brandIntro}}
<div class="mask"></div>
{{/ shopTopBanner}}
{{#if navigationBar}}
<ul class="shop-nav clearfix">
{{#navigationBar}}
<li class="nav-item {{#if @first}}first{{/if}} {{#if current}}current{{/if}}">
<a href="{{url}}">
{{name}}
{{#if arrow}}
<span class="iconfont">&#xe63a;</span>
{{/if}}
</a>
</li>
{{/navigationBar}}
</ul>
{{/if}}
... ...
{{#brandBrowse}}
<div class="brand-collect left-modular">
<h2 class="title">{{title}}</h2>
<ul class="left-list">
{{#each list}}
<li class="{{#if cur}} on {{/if}}"><a href="{{url}}">{{brandName}}</a></li>
{{/each}}
</ul>
</div>
{{/brandBrowse}}
{{#recommend}}
<div class="classic-recommend left-modular">
<h2 class="title">{{title}}</h2>
<ul class="left-list">
{{#each list}}
<li>
<a href="{{url}}">
<div class="classic-name">
{{#name}}
<p class="name">{{.}}</p>
{{/name}}
{{#enName}}
<p class="en-name">{{.}}</p>
{{/enName}}
</div>
<img src="{{img}}" />
</a>
</li>
{{/each}}
</ul>
</div>
{{/recommend}}
{{#hotRecommend}}
<div class="sell-recommend left-modular">
<h2 class="title">{{title}}</h2>
<ul class="left-list">
{{#each list}}
<li>
<a target="_blank" href="{{url}}"><img src="{{img}}" alt="{{title}}" /></a>
</li>
{{/each}}
</ul>
</div>
{{/hotRecommend}}
... ...
<ul>
{{#each list}}
<li>
<a class="item item-{{@index}}" href="{{url}}" target= "_blank">
<img class="lazy" data-original="{{img}}"/>
<p class="title">
{{title}}
</p>
<p class="price">
{{price}}
</p>
{{#if index}}
<span class="hat">{{index}}</span>
{{/if}}
</a>
</li>
{{/each}}
</ul>
... ...
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.
This diff could not be displayed because it is too large.

21.3 KB | W: 0px | H: 0px

23.7 KB | W: 0px | H: 0px

  • 2-up
  • Swipe
  • Onion skin

21.3 KB | W: 0px | H: 0px

23.7 KB | W: 0px | H: 0px

  • 2-up
  • Swipe
  • Onion skin
... ... @@ -392,7 +392,9 @@ $('#me-checkall').click(function() {
//删除收藏
$('.del-favorite').click(function(e) {
var id = $(this).closest('.fav-row').data('id');
var id = $(this).closest('.fav-row').data('id'),
shopid = $(this).closest('.fav-row').data('shopid'),
brandorshoptype = $(this).closest('.fav-row').data('brandorshoptype');
e.preventDefault();
... ... @@ -401,6 +403,8 @@ $('.del-favorite').click(function(e) {
url: '/home/favorite/cancel',
data: {
id: id,
shopid: shopid,
brandorshoptype: brandorshoptype,
type: favType
}
}).then(function(data) {
... ...
... ... @@ -3,5 +3,91 @@
* @author: xuqi<qi.xu@yoho.cn>
* @date: 2016/2/17
*/
var $ = require('yoho.jquery');
require('./order-block');
\ No newline at end of file
require('./order-block');
//不同订单包裹提示
$('.why').click(function() {
$('#differentBag').show();
return false;
});
$('#differentBag').click(function() {
return false;
});
$(document).click(function() {
$('#differentBag').hide();
});
//订单包裹左右切换
function lunBo($pre, $next, $ul, $iWidth) {
var i = 1,
j = 1;
var iSpeed = 0,
isMoving = false;
$pre.click(function() {
if (isMoving) {
return;
}
if ($ul.css('left') === '0px') {
iSpeed = 0;
} else {
iSpeed += j * $iWidth;
isMoving = true;
}
$ul.stop().animate({
left: iSpeed
}, 300, function() {
isMoving = false;
});
});
$next.click(function() {
var $largeLeft = $ul.parent().width() - $ul.width() + 'px';
if (isMoving) {
return;
}
if ($ul.css('left') === $largeLeft) {
$ul.css('left', $largeLeft);
} else {
iSpeed += -i * $iWidth;
isMoving = true;
}
$ul.stop().animate({
left: iSpeed
}, 300, function() {
isMoving = false;
});
});
}
//订单分类
$('.bag').find('ul').each(function() {
var $pre = $(this).parent().parent().find('.pre');
var $next = $(this).parent().parent().find('.next');
var $iWidth = $(this).find('li').eq(0).width();
var $length = $(this).find('li').size();
var $ulWidth = $iWidth * $length;
$(this).css('width', $ulWidth);
if ($length > 5) {
$pre.show();
$next.show();
lunBo($pre, $next, $(this), $iWidth);
} else {
$pre.hide();
$next.hide();
}
});
... ...
... ... @@ -720,7 +720,7 @@ function getYohoBiList() {
type: 'GET',
dataType: 'json',
url: '/cart/index/getCouponList'
}).then(function(d) {
}).then(function(d) {
if (d.code === 200) {
data = d.data;
... ... @@ -728,9 +728,9 @@ function getYohoBiList() {
for (i = 0; i < dLen; i++) {
juanStr += '<li>' +
'<input name="juangroup" type="radio" value="' +
data[i].code + '" ' + (data[i].valid ? '' : 'disabled="disabled"') + '>' +
'<label>' + data[i].desc + '</label>' +
'<input name="juangroup" type="radio" value="' +
data[i].code + '" ' + (data[i].valid ? '' : 'disabled="disabled"') + '>' +
'<label>' + data[i].desc + '</label>' +
'</li>';
}
... ... @@ -772,6 +772,7 @@ $('.to-play input.submit').click(function() {
redEnvelopes = $('.use-envelopes input:checked').attr('data-use'),
$juangroupInput = $('.play-juan.is-select input[name="juangroup"]:checked'),
codeVal = $juangroupInput.val(),
promotionVal = $juangroupInput.closest('li').find('#juancode').val();
juanCode = !!codeVal ? codeVal : $juangroupInput.closest('li').find('#juancode').val();
$loading.show();
... ... @@ -797,6 +798,7 @@ $('.to-play input.submit').click(function() {
paymentType: paymentType,
remark: remark,
couponCode: juanCode,
promotionCode: promotionVal,
yohoCoin: yohoCoin,
isPreContact: ytoTrue(isPreContact),
isPrintPrice: ytoTrue(isPrintPrice),
... ... @@ -814,4 +816,4 @@ $('.to-play input.submit').click(function() {
}).always(function() {
$this.removeAttr('disabled');
});
});
});
... ...
/**
* @description: 订单保存
* @time: 2015/12/21
*/
var $ = require('yoho.jquery');
var address = require('./address');
var dialog = require('../common/dialog');
var Order = {
/*业务数据(人民币)*/
Data: {
product: 0,//商品价格
activity: 0,//活动
carriage: 0,//邮费
juan: 0,//优惠卷
yohocoin: 0//YOHO币
},
/*view 交互*/
UI: {
e: {
$pan: $('.pan'),
$jc: $('#juancode'),
$bp: $('#biprice'),
$statistics: $('li', '.play-total'),
$tobi: $('p em', '.play-bi-pan .play-pan'),
$cancel: $('.cancel', '.btn-group'),
$total: $('em', '.to-play'),
$tbody: $('table tbody', '.pay-wapper'),
//请填写并核对一下信息
$orderSelectionSave: $('.address-list h2 span'),
$addAddress: $('.add-address'),
$addressManage: $('.address-manage'),
$spanPayTypeLegend: $('span.pay-type-legend'),
$supportType: $('.support-type'),
$existAddressListWrap: $('.exist-address-list'),
$existAddressList: $('.exist-address-list').find('li'),
$existAddress: $('.exist-address-list').find('input[name="exist-address"]'),
$payTimeModify: $('.pay-time-modify'),
$switchPayModify: $('.switch-pay-modify'),
$modityPayInfo: $('.modity-pay-info'),
$payTotal: $('.play-total'),
$toPay: $('.to-play em'),
$redEnvelopes: $('.red-envelopes'),
$useEnvelopes: $('.use-envelopes'),
$hasEnvelopes: $('.has-envelopes span'),
$useEnvelopesInput: $('.use-envelopes').find('input')
},
init: function() {
var e = this.e,
d = Order.Data,
c = Order.Common;
//初始化产品价格(表格中的价格)
e.$tbody.find('tr').each(function(index) {
var td = $(this).find('td');
var len = e.$tbody.find('tr').length;
var subtotal = parseFloat(td.eq(1).html()) * parseInt(td.eq(3).html());
td.eq(1).html('¥' + td.eq(1).html());
if (td.hasClass('xforone')) {
td.eq(4).find('del').html('¥' + c.strFixed(subtotal));
subtotal = 0;
} else {
td.eq(4).html('¥' + c.strFixed(subtotal));
}
d.product += subtotal;
if (!index) {
td.last().attr('rowspan', len);
} else {
td.last().remove();
}
if (index === len - 1) {
e.$tbody.find('tr').eq(0).find('td').last().html('<strong>¥' + c.strFixed(d.product) + '</strong>');
}
});
// 使用优惠券、使用yoho币点击展开
e.$pan.find('dt').click(function() {
var pan = $(this).parent('dl.pan');
if (pan.find('dd').is(':hidden')) {
c.winShow(pan);
$(this).addClass('active');
} else {
c.winHide(pan);
$(this).removeClass('active');
}
});
//请填写并核对一下信息
e.$orderSelectionSave.click(function() {
var i = 0,
$addressLi = $('.exist-address-list li'),
liLen = $addressLi.length,
notSelect = 0;
if (!$(this).attr('expand')) {
$(this).attr('expand', 'expand').text('[不保存并关闭]');
$('.exist-address-list li').removeClass('hide');
$('.save-btn').removeClass('hide');
e.$existAddressListWrap.addClass('address-expand');
if (liLen === 1) {
e.$addressManage.removeClass('hide');
}
} else {
for (i = 0; i < liLen; i++) {
if ($addressLi.eq(i).hasClass('address_select')) {
notSelect++;
}
if (!$addressLi.eq(i).hasClass('address_select')) {
$addressLi.eq(i).addClass('hide');
}
}
if (notSelect === 0) {
$('.exist-address-list li:not(".use-new-address")').removeClass('hide');
$('.use-new-address input').removeAttr('checked');
}
$('.address-list-inner li.address_select input').attr('checked', 'checked');
$('.address-list-inner li').removeClass('active');
$('.address-list-inner li.address_select').addClass('active');
$(this).removeAttr('expand').text('[修改]');
$('.save-btn').addClass('hide');
e.$existAddressListWrap.removeClass('address-expand');
e.$addressManage.addClass('hide');
}
});
//支付及送货时间
e.$switchPayModify.click(function() {
if (e.$payTimeModify.hasClass('hide')) {
e.$payTimeModify.removeClass('hide');
e.$modityPayInfo.addClass('hide');
$(this).text('[不保存并关闭]');
} else {
e.$payTimeModify.addClass('hide');
e.$modityPayInfo.removeClass('hide');
$(this).text('[修改]');
e.$payTimeModify.find('input[name="pay-type"]').filter('.checked').attr('checked', 'checked');
e.$payTimeModify.find('input[name="pay-time-radio"]').filter('.checked').attr('checked', 'checked');
e.$payTimeModify.find('input[name="call-me"]').filter('.checked').attr('checked', 'checked');
}
});
e.$spanPayTypeLegend.click(function() {
$(this).toggleClass('active');
e.$supportType.toggleClass('hide');
});
$(document).on('click', '.exist-address-list li', function() {
$('.exist-address-list li').removeClass('active');
$(this).addClass('active');
$(this).find('input').attr('checked', 'checked');
if ($(this).hasClass('use-new-address')) {
e.$addressManage.removeClass('hide');
$('.address-manage input').val('');
$('.save-btn').removeAttr('data-id');
// 0表示获取所有省的列表,'000000'表示无匹配的区域码
address.newAddress(0, '000000');
}
});
},
//渲染价格明细
render: function(data, tips) {
// 下面这段是在服务端算价格
var e = this.e,
i,
dArr = data.promotion_formula_list,
str = '',
isExpress = '';
var tipsStr;
var envelopesVal;
if (!!tips) {
tipsStr = tips;
} else {
tipsStr = '';
}
for (i = 0; i < dArr.length; i++) {
if (dArr[i].promotion === '优惠券:') {
dArr[i].promotion = (tipsStr ? tipsStr : '优惠券') + '<span class="juan-modify">[修改]</span>:';
}
if (dArr[i].promotion === 'YOHO币:') {
dArr[i].promotion = 'YOHO币<span class="bi-modify">[修改]</span>:';
}
if (dArr[i].isExpress) {
isExpress = 'total-express-w';
} else {
isExpress = '';
}
str += '<li class="' + isExpress + '">' +
'<label>' + dArr[i].promotion + '</label>' +
'<em>' + dArr[i].promotion_amount + '</em>' +
'</li>';
}
e.$payTotal.html(str);
e.$toPay.html((data.last_order_amount).toFixed(2));
//有货币清零状态更新
$('#biprice').val(100 * data.use_yoho_coin);
if (~~data.use_yoho_coin === 0) {
$('.errbitip').text('');
} else {
$('.errbitip').text('抵扣' + data.use_yoho_coin.toFixed(2) + '元');
}
envelopesVal = e.$useEnvelopesInput.data('all') - data.use_red_envelopes;
if (~~data.use_red_envelopes > 0) {
e.$useEnvelopes.find('span').html('-¥' + data.use_red_envelopes.toFixed(2));
e.$useEnvelopes.find('input').attr('data-use', data.use_red_envelopes);
} else {
e.$useEnvelopes.find('span').html('-¥0.00');
e.$hasEnvelopes.html('¥' + (e.$useEnvelopesInput.attr('data-all') * 1).toFixed(2));
e.$redEnvelopes.removeClass('active');
e.$useEnvelopesInput.prop('checked', false);
}
e.$hasEnvelopes.html('¥' + envelopesVal.toFixed(2));
}
},
/*公共方法*/
Common: {
enterNUM: function(str1, str2) {
str1 = str1.replace(/[^\d]/g, '');
if (str1 && str2) {
str1 = parseInt(str1);
str2 = parseInt(str2);
if (str1 > str2) {
str1 = str2;
}
}
return str1;
},
calucate: function() {
var p = Order.Data;
$.each(Order.Data, function(key, index) {
p[key] = parseFloat(Order.Data[key]);
});
return p.product - p.activity + p.carriage - p.juan - p.yohocoin;
},
winShow: function(pan) {
pan.find('dt').show();
pan.find('dd').show();
if (pan.attr('class').match(/(-bi-)|(-juan-)/g)) {
pan.find('dt').hide();
}
},
winHide: function(pan) {
pan.find('dt').show();
pan.find('dd').hide();
/*if (pan.hasClass('play-juan-pan') && $('.juan-modify').length > 0) {
pan.find('dt').hide();
}
if (pan.hasClass('play-bi-pan') && $('.bi-modify').length > 0) {
pan.find('dt').hide();
}*/
},
strFixed: function(str) {
return parseFloat(str).toFixed(2);
}
},
/*业务逻辑*/
Bll: {
e: {
$juanok: $('#juansubmit'),
$juantip: $('.errtip', '.play-juan-pan'),
$biok: $('#bisubmit'),
$carriageGroup: $('input[name="carriagegroup"]'),
$selectExpress: $('.express-list input'),
$bp: $('#biprice'),
$errorTip: $('.errbitip'),
$useEnvelopes: $('.use-envelopes'),
$hasEnvelopes: $('.has-envelopes span'),
$useEnvelopesInput: $('.use-envelopes').find('input'),
$redEnvelopes: $('.red-envelopes'),
$loading: $('.loading')
},
init: function() {
var e = this.e,
u = Order.UI,
options,
c = Order.Common,
envelopesVal;
function getSelectData(callback) {
var $juangroupInput = $('.play-juan.is-select input[name="juangroup"]:checked');
var expressVal = $('.express-list input[name="carriagegroup"]').val();
var biVal = $('#biprice.is-select').val();
var codeVal = $juangroupInput.val();
var cartType = $('.address-manage').attr('cart-type');
var redEnvelopes = $('.use-envelopes input:checked').attr('data-use');
var resultData;
codeVal = !!codeVal ? codeVal : $juangroupInput.closest('li').find('#juancode').val();
resultData = {
cartType: cartType,
deliveryWay: expressVal,
couponCode: codeVal,
yohoCoin: biVal
//redEnvelopes: e.$useEnvelopesInput.length > 0 ? ~~e.$hasEnvelopes.text().substring(1) : '0'
};
if (!!redEnvelopes) {
resultData.redEnvelopes = redEnvelopes;
}
callback(resultData);
}
// 选择快递
e.$selectExpress.click(function() {
var expressId = $(this).val();
e.$loading.show();
getSelectData(function(d) {
d.deliveryWay = expressId;
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data);
if (expressId === '1') {
$('.express-list.sf').addClass('hide');
} else if (expressId === '2') {
$('.express-list.sf').removeClass('hide');
}
} else {
new dialog.Alert(data.message).show();
}
}
};
$.ajax(options);
});
});
//点击 优惠卷支付 确认按钮
e.$juanok.click(function() {
var pan = $(this).parents('dl.pan');
var juanText = '';
$('.play-juan').addClass('is-select');
getSelectData(function(d) {
var code = d.couponCode;
if (!code) {
e.$juantip.html('请选择或填写一个优惠券');
$('.play-juan').removeClass('is-select');
} else {
e.$loading.show();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
juanText = $('.play-juan input[value="' + code + '"]').next().text();
u.render(data.data, juanText);
//$('#juancode').val(code);
c.winHide(pan);
e.$juantip.html('');
//$('.play-juan-pan dt').hide();
} else {
e.$juantip.html(data.message);
$('.play-juan').removeClass('is-select');
}
}
};
$.ajax(options);
}
});
});
// 优惠券修改
$(document).on('click', '.juan-modify', function() {
var $pan = $('.play-juan-pan');
c.winShow($pan);
});
e.$biok.click(function() {
var pan = $(this).parents('dl.pan');
var juanText;
$('#biprice').addClass('is-select');
getSelectData(function(d) {
if (!!d.couponCode) {
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
}
//if (d.yohoCoin * 1 === 0) {
if (!/^\d+$/.test(d.yohoCoin + '') || d.yohoCoin * 1 === 0) {
$('.errbitip').html('请输入一个正整数');
$('#biprice').removeClass('is-select');
} else if (d.yohoCoin * 1 > $('.play-pan em').text() * 1) {
$('.errbitip').html('您的YOHO币不足');
$('#biprice').removeClass('is-select');
} else {
e.$loading.show();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
c.winHide(pan);
//$('.play-bi-pan dt').hide();
} else {
$('.errbitip').html(data.message);
$('#biprice').removeClass('is-select');
}
}
};
$.ajax(options);
}
});
});
// 修改yoho币
$(document).on('click', '.bi-modify', function() {
var $pan = $('.play-bi-pan');
c.winShow($pan);
});
e.$bp.keyup(function() {
var val = $(this).val();
//if (val * 1 < 0 || val.indexOf('.') > 0) {
if (!/^\d+$/.test(val + '')) {
e.$errorTip.html('请输入一个正整数');
} else if (val * 1 > $(this).data('bi') * 1) {
e.$errorTip.html('您的YOHO币不足');
} else {
e.$errorTip.html('抵扣' + (val / 100).toFixed(2) + '元');
}
});
// 取消yoho 币
$('.cancel-bi').click(function() {
var $pan = $('.play-bi-pan');
var juanText;
$('.errbitip').html('');
if ($('#biprice').hasClass('is-select')) {
e.$loading.show();
getSelectData(function(d) {
d.yohoCoin = 0;
if (!!d.couponCode) {
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
}
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
c.winHide($pan);
$('#biprice').val('0');
//$('.play-bi-pan dt').hide();
$('#biprice').removeClass('is-select');
$('.errbitip').html('');
// $('.use-envelopes input').attr('checked', 'checked');
// $('.red-envelopes').addClass('active');
} else {
$('.errbitip').html(data.message);
}
}
};
$.ajax(options);
});
} else {
c.winHide($pan);
$('#biprice').val('0');
}
});
// 取消优惠券
$('.cancel-code').click(function() {
var $pan = $('.play-juan-pan');
if ($('.play-juan').hasClass('is-select')) {
e.$loading.show();
getSelectData(function(d) {
d.couponCode = '';
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data);
c.winHide($pan);
$('.play-juan').removeClass('is-select');
$('#juancode').val('')
.siblings('input[name="juangroup"]').attr('checked', 'checked');
// $('.use-envelopes input').attr('checked', 'checked');
// $('.red-envelopes').addClass('active');
} else {
e.$juantip.html(data.message);
}
}
};
$.ajax(options);
});
} else {
c.winHide($pan);
}
});
// 红包
envelopesVal = e.$useEnvelopesInput.data('all') - e.$useEnvelopesInput.data('use'); // 剩余的红包
e.$hasEnvelopes.text('¥' + envelopesVal.toFixed(2));
e.$useEnvelopes.find('input').click(function() {
var $this = $(this),
juanText;
e.$loading.show();
$this.attr('disabled', 'disabled');
getSelectData(function(d) {
if (!!$this.attr('checked')) {
//d.redEnvelopes = $this.val();
d.redEnvelopes = $this.data('use');
} else {
d.redEnvelopes = 0;
}
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
$this.removeAttr('disabled');
if (!!$this.attr('checked')) {
e.$redEnvelopes.addClass('active');
} else {
e.$useEnvelopes.find('span').html('-¥0.00');
e.$hasEnvelopes.html('¥' + ($this.attr('data-all') * 1).toFixed(2));
e.$redEnvelopes.removeClass('active');
}
} else {
new dialog.Alert(data.message).show();
}
}
};
$.ajax(options);
});
});
//发票抬头和备注字数限制
function limitStrLen($obj, len) {
var $this = $obj;
$this.keyup(function() {
if ($this.val().length > len) {
$this.val($this.val().substr(0, len));
}
});
}
limitStrLen($('#piaodesc'), 30);
limitStrLen($('#notedesc'), 100);
}
}
};
Order.Data.activity = 0;
Order.Data.carriage = 0;
Order.UI.init();
Order.Bll.init();
address.getUserAddressList();
// 0表示获取所有省的列表,'000000'表示无匹配的区域码
address.newAddress(0, '000000');
address.modifyAddress();
address.saveAddress();
/**
* @description: 订单保存
* @time: 2015/12/21
*/
var $ = require('yoho.jquery');
var address = require('./address');
var dialog = require('../common/dialog');
var accMul = function(arg1, arg2) {
var m = 0,
s1 = arg1.toString(),
s2 = arg2.toString();
try {
m += s1.split('.')[1].length;
} catch (e) {
}
try {
m += s2.split('.')[1].length;
} catch (e) {
}
return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m);
};
var Order = {
/*业务数据(人民币)*/
Data: {
product: 0, //商品价格
activity: 0, //活动
carriage: 0, //邮费
juan: 0, //优惠卷
yohocoin: 0 //YOHO币
},
/*view 交互*/
UI: {
e: {
$pan: $('.pan'),
$jc: $('#juancode'),
$bp: $('#biprice'),
$statistics: $('li', '.play-total'),
$tobi: $('p em', '.play-bi-pan .play-pan'),
$cancel: $('.cancel', '.btn-group'),
$total: $('em', '.to-play'),
$tbody: $('table tbody', '.pay-wapper'),
//请填写并核对一下信息
$orderSelectionSave: $('.address-list h2 span'),
$addAddress: $('.add-address'),
$addressManage: $('.address-manage'),
$spanPayTypeLegend: $('span.pay-type-legend'),
$supportType: $('.support-type'),
$existAddressListWrap: $('.exist-address-list'),
$existAddressList: $('.exist-address-list').find('li'),
$existAddress: $('.exist-address-list').find('input[name="exist-address"]'),
$payTimeModify: $('.pay-time-modify'),
$switchPayModify: $('.switch-pay-modify'),
$modityPayInfo: $('.modity-pay-info'),
$payTotal: $('.play-total'),
$toPay: $('.to-play em'),
$redEnvelopes: $('.red-envelopes'),
$useEnvelopes: $('.use-envelopes'),
$hasEnvelopes: $('.has-envelopes span'),
$useEnvelopesInput: $('.use-envelopes').find('input'),
$expressFee: $('.express-fee')
},
init: function() {
var e = this.e,
d = Order.Data,
c = Order.Common;
//初始化产品价格(表格中的价格)
e.$tbody.find('tr').each(function(index) {
var td = $(this).find('td');
var len = e.$tbody.find('tr').length;
var subtotal = parseFloat(td.eq(1).html()) * parseInt(td.eq(3).html());
td.eq(1).html('¥' + td.eq(1).html());
if (td.hasClass('xforone')) {
td.eq(4).find('del').html('¥' + c.strFixed(subtotal));
subtotal = 0;
} else {
td.eq(4).html('¥' + c.strFixed(subtotal));
}
d.product += subtotal;
if (!index) {
td.last().attr('rowspan', len);
} else {
td.last().remove();
}
if (index === len - 1) {
e.$tbody.find('tr').eq(0).find('td').last().html('<strong>¥' + c.strFixed(d.product) + '</strong>');
}
});
// 使用优惠券、使用yoho币点击展开
e.$pan.find('dt').click(function() {
var pan = $(this).parent('dl.pan');
if (pan.find('dd').is(':hidden')) {
c.winShow(pan);
$(this).addClass('active');
} else {
c.winHide(pan);
$(this).removeClass('active');
}
});
//请填写并核对一下信息
e.$orderSelectionSave.click(function() {
var i = 0,
$addressLi = $('.exist-address-list li'),
liLen = $addressLi.length,
notSelect = 0;
if (!$(this).attr('expand')) {
$(this).attr('expand', 'expand').text('[不保存并关闭]');
$('.exist-address-list li').removeClass('hide');
$('.save-btn').removeClass('hide');
e.$existAddressListWrap.addClass('address-expand');
if (liLen === 1) {
e.$addressManage.removeClass('hide');
}
} else {
for (i = 0; i < liLen; i++) {
if ($addressLi.eq(i).hasClass('address_select')) {
notSelect++;
}
if (!$addressLi.eq(i).hasClass('address_select')) {
$addressLi.eq(i).addClass('hide');
}
}
if (notSelect === 0) {
$('.exist-address-list li:not(".use-new-address")').removeClass('hide');
$('.use-new-address input').removeAttr('checked');
}
$('.address-list-inner li.address_select input').attr('checked', 'checked');
$('.address-list-inner li').removeClass('active');
$('.address-list-inner li.address_select').addClass('active');
$(this).removeAttr('expand').text('[修改]');
$('.save-btn').addClass('hide');
e.$existAddressListWrap.removeClass('address-expand');
e.$addressManage.addClass('hide');
}
});
//支付及送货时间
e.$switchPayModify.click(function() {
if (e.$payTimeModify.hasClass('hide')) {
e.$payTimeModify.removeClass('hide');
e.$modityPayInfo.addClass('hide');
$(this).text('[不保存并关闭]');
} else {
e.$payTimeModify.addClass('hide');
e.$modityPayInfo.removeClass('hide');
$(this).text('[修改]');
e.$payTimeModify.find('input[name="pay-type"]').filter('.checked').attr('checked', 'checked');
e.$payTimeModify.find('input[name="pay-time-radio"]').filter('.checked').attr('checked', 'checked');
e.$payTimeModify.find('input[name="call-me"]').filter('.checked').attr('checked', 'checked');
}
});
e.$spanPayTypeLegend.click(function() {
$(this).toggleClass('active');
e.$supportType.toggleClass('hide');
});
$(document).on('click', '.exist-address-list li', function() {
$('.exist-address-list li').removeClass('active');
$(this).addClass('active');
$(this).find('input').attr('checked', 'checked');
if ($(this).hasClass('use-new-address')) {
e.$addressManage.removeClass('hide');
$('.address-manage input').val('');
$('.save-btn').removeAttr('data-id');
// 0表示获取所有省的列表,'000000'表示无匹配的区域码
address.newAddress(0, '000000');
}
});
},
//渲染价格明细
render: function(data, tips) {
// 下面这段是在服务端算价格
var e = this.e,
i,
dArr = data.promotion_formula_list,
packageList = data.package_list,
str = '',
isExpress = '';
var tipsStr;
var envelopesVal;
if (!!tips) {
tipsStr = tips;
} else {
tipsStr = '';
}
for (i = 0; i < dArr.length; i++) {
if (dArr[i].promotion === '优惠券:') {
dArr[i].promotion = (tipsStr ? tipsStr : '优惠券') + '<span class="juan-modify">[修改]</span>:';
}
if (dArr[i].promotion === 'YOHO币:') {
dArr[i].promotion = 'YOHO币<span class="bi-modify">[修改]</span>:';
}
if (dArr[i].isExpress) {
isExpress = 'total-express-w';
} else {
isExpress = '';
}
str += '<li class="' + isExpress + '">' +
'<label>' + dArr[i].promotion + '</label>' +
'<em>' + dArr[i].promotion_amount + '</em>' +
'</li>';
}
e.$payTotal.html(str);
e.$toPay.html((data.last_order_amount).toFixed(2));
//有货币清零状态更新
$('#biprice').val(accMul(100, data.use_yoho_coin));
if (~~data.use_yoho_coin === 0) {
$('.errbitip').text('');
} else {
$('.errbitip').text('抵扣' + data.use_yoho_coin.toFixed(2) + '元');
}
envelopesVal = e.$useEnvelopesInput.data('all') - data.use_red_envelopes;
if (~~data.use_red_envelopes > 0) {
e.$useEnvelopes.find('span').html('-¥' + data.use_red_envelopes.toFixed(2));
e.$useEnvelopes.find('input').attr('data-use', data.use_red_envelopes);
} else {
e.$useEnvelopes.find('span').html('-¥0.00');
e.$hasEnvelopes.html('¥' + (e.$useEnvelopesInput.attr('data-all') * 1).toFixed(2));
e.$redEnvelopes.removeClass('active');
e.$useEnvelopesInput.prop('checked', false);
}
e.$hasEnvelopes.html('¥' + envelopesVal.toFixed(2));
if (packageList) {
e.$expressFee.each(function(index, expressCost) {
var orignCost = packageList[index].shopping_orig_cost,
disCount = packageList[index].shopping_cut_cost,
realCost = packageList[index].shopping_cost;
var cost = parseInt(orignCost) === 0 ?
'运费:¥0.00元' :
'运费:¥' + realCost + '元(原价' + orignCost + '元,优惠' + disCount + ')元';
$(expressCost).text(cost);
});
}
}
},
/*公共方法*/
Common: {
enterNUM: function(str1, str2) {
str1 = str1.replace(/[^\d]/g, '');
if (str1 && str2) {
str1 = parseInt(str1);
str2 = parseInt(str2);
if (str1 > str2) {
str1 = str2;
}
}
return str1;
},
calucate: function() {
var p = Order.Data;
$.each(Order.Data, function(key, index) {
p[key] = parseFloat(Order.Data[key]);
});
return p.product - p.activity + p.carriage - p.juan - p.yohocoin;
},
winShow: function(pan) {
pan.find('dt').show();
pan.find('dd').show();
if (pan.attr('class').match(/(-bi-)|(-juan-)/g)) {
pan.find('dt').hide();
}
},
winHide: function(pan) {
pan.find('dt').show();
pan.find('dd').hide();
/*if (pan.hasClass('play-juan-pan') && $('.juan-modify').length > 0) {
pan.find('dt').hide();
}
if (pan.hasClass('play-bi-pan') && $('.bi-modify').length > 0) {
pan.find('dt').hide();
}*/
},
strFixed: function(str) {
return parseFloat(str).toFixed(2);
}
},
/*业务逻辑*/
Bll: {
e: {
$juanok: $('#juansubmit'),
$juantip: $('.errtip', '.play-juan-pan'),
$biok: $('#bisubmit'),
$carriageGroup: $('input[name="carriagegroup"]'),
$selectExpress: $('.express-list input'),
$bp: $('#biprice'),
$errorTip: $('.errbitip'),
$useEnvelopes: $('.use-envelopes'),
$hasEnvelopes: $('.has-envelopes span'),
$useEnvelopesInput: $('.use-envelopes').find('input'),
$redEnvelopes: $('.red-envelopes'),
$loading: $('.loading')
},
init: function() {
var e = this.e,
u = Order.UI,
options,
c = Order.Common,
envelopesVal;
function getSelectData(callback) {
var $juangroupInput = $('.play-juan.is-select input[name="juangroup"]:checked');
var expressVal = $('.express-list input[name="carriagegroup"]:checked').val();
var biVal = $('#biprice.is-select').val();
var codeVal = $juangroupInput.val();
var promotionVal = $juangroupInput.closest('li').find('#juancode').val();
var cartType = $('.address-manage').attr('cart-type');
var redEnvelopes = $('.use-envelopes input:checked').attr('data-use');
var resultData;
codeVal = codeVal ? codeVal : $juangroupInput.closest('li').find('#juancode').val();
resultData = {
cartType: cartType,
deliveryWay: expressVal,
couponCode: codeVal,
promotionCode: promotionVal,
yohoCoin: biVal
//redEnvelopes: e.$useEnvelopesInput.length > 0 ? ~~e.$hasEnvelopes.text().substring(1) : '0'
};
if (!!redEnvelopes) {
resultData.redEnvelopes = redEnvelopes;
}
callback(resultData);
}
// 选择快递
e.$selectExpress.click(function() {
var expressId = $(this).val();
e.$loading.show();
getSelectData(function(d) {
d.deliveryWay = expressId;
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data);
if (expressId === '1') {
$('.express-list.sf').addClass('hide');
} else if (expressId === '2') {
$('.express-list.sf').removeClass('hide');
}
} else {
new dialog.Alert(data.message).show();
}
}
};
$.ajax(options);
});
});
//点击 优惠卷支付 确认按钮
e.$juanok.click(function() {
var pan = $(this).parents('dl.pan');
var juanText = '';
$('.play-juan').addClass('is-select');
getSelectData(function(d) {
var code = d.couponCode;
if (!code) {
e.$juantip.html('请选择或填写一个优惠券');
$('.play-juan').removeClass('is-select');
} else {
e.$loading.show();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
juanText = $('.play-juan input[value="' + code + '"]').next().text();
u.render(data.data, juanText);
//$('#juancode').val(code);
c.winHide(pan);
e.$juantip.html('');
//$('.play-juan-pan dt').hide();
} else {
e.$juantip.html(data.message);
$('.play-juan').removeClass('is-select');
}
}
};
$.ajax(options);
}
});
});
// 优惠券修改
$(document).on('click', '.juan-modify', function() {
var $pan = $('.play-juan-pan');
c.winShow($pan);
});
e.$biok.click(function() {
var pan = $(this).parents('dl.pan');
var juanText;
$('#biprice').addClass('is-select');
getSelectData(function(d) {
if (!!d.couponCode) {
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
}
//if (d.yohoCoin * 1 === 0) {
if (!/^\d+$/.test(d.yohoCoin + '') || d.yohoCoin * 1 === 0) {
$('.errbitip').html('请输入一个正整数');
$('#biprice').removeClass('is-select');
} else if (d.yohoCoin * 1 > $('.play-pan em').text() * 1) {
$('.errbitip').html('您的YOHO币不足');
$('#biprice').removeClass('is-select');
} else {
e.$loading.show();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
c.winHide(pan);
//$('.play-bi-pan dt').hide();
} else {
$('.errbitip').html(data.message);
$('#biprice').removeClass('is-select');
}
}
};
$.ajax(options);
}
});
});
// 修改yoho币
$(document).on('click', '.bi-modify', function() {
var $pan = $('.play-bi-pan');
c.winShow($pan);
});
e.$bp.keyup(function() {
var val = $(this).val();
//if (val * 1 < 0 || val.indexOf('.') > 0) {
if (!/^\d+$/.test(val + '')) {
e.$errorTip.html('请输入一个正整数');
} else if (val * 1 > $(this).data('bi') * 1) {
e.$errorTip.html('您的YOHO币不足');
} else {
e.$errorTip.html('抵扣' + (val / 100).toFixed(2) + '元');
}
});
// 取消yoho 币
$('.cancel-bi').click(function() {
var $pan = $('.play-bi-pan');
var juanText;
$('.errbitip').html('');
if ($('#biprice').hasClass('is-select')) {
e.$loading.show();
getSelectData(function(d) {
d.yohoCoin = 0;
if (!!d.couponCode) {
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
}
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
c.winHide($pan);
$('#biprice').val('0');
//$('.play-bi-pan dt').hide();
$('#biprice').removeClass('is-select');
$('.errbitip').html('');
// $('.use-envelopes input').attr('checked', 'checked');
// $('.red-envelopes').addClass('active');
} else {
$('.errbitip').html(data.message);
}
}
};
$.ajax(options);
});
} else {
c.winHide($pan);
$('#biprice').val('0');
}
});
// 取消优惠券
$('.cancel-code').click(function() {
var $pan = $('.play-juan-pan');
if ($('.play-juan').hasClass('is-select')) {
e.$loading.show();
getSelectData(function(d) {
d.couponCode = '';
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data);
c.winHide($pan);
$('.play-juan').removeClass('is-select');
$('#juancode').val('')
.siblings('input[name="juangroup"]').attr('checked', 'checked');
// $('.use-envelopes input').attr('checked', 'checked');
// $('.red-envelopes').addClass('active');
} else {
e.$juantip.html(data.message);
}
}
};
$.ajax(options);
});
} else {
c.winHide($pan);
}
});
// 红包
envelopesVal = e.$useEnvelopesInput.data('all') - e.$useEnvelopesInput.data('use'); // 剩余的红包
e.$hasEnvelopes.text('¥' + envelopesVal.toFixed(2));
e.$useEnvelopes.find('input').click(function() {
var $this = $(this),
juanText;
e.$loading.show();
$this.attr('disabled', 'disabled');
getSelectData(function(d) {
if (!!$this.attr('checked')) {
//d.redEnvelopes = $this.val();
d.redEnvelopes = $this.data('use');
} else {
d.redEnvelopes = 0;
}
juanText = $('.play-juan input[value="' + d.couponCode + '"]').next().text();
options = {
type: 'POST',
url: '/cart/index/orderCompute',
data: d,
success: function(data) {
e.$loading.hide();
if (data.code === 200) {
u.render(data.data, juanText);
$this.removeAttr('disabled');
if (!!$this.attr('checked')) {
e.$redEnvelopes.addClass('active');
} else {
e.$useEnvelopes.find('span').html('-¥0.00');
e.$hasEnvelopes.html('¥' + ($this.attr('data-all') * 1).toFixed(2));
e.$redEnvelopes.removeClass('active');
}
} else {
new dialog.Alert(data.message).show();
}
}
};
$.ajax(options);
});
});
//发票抬头和备注字数限制
function limitStrLen($obj, len) {
var $this = $obj;
$this.keyup(function() {
if ($this.val().length > len) {
$this.val($this.val().substr(0, len));
}
});
}
limitStrLen($('#piaodesc'), 30);
limitStrLen($('#notedesc'), 100);
}
}
};
Order.Data.activity = 0;
Order.Data.carriage = 0;
Order.UI.init();
Order.Bll.init();
address.getUserAddressList();
// 0表示获取所有省的列表,'000000'表示无匹配的区域码
address.newAddress(0, '000000');
address.modifyAddress();
address.saveAddress();
//不同订单包裹提示
$('.why').click(function() {
$('#differentBag').show();
return false;
});
$('#differentBag').click(function() {
return false;
});
$(document).click(function() {
$('#differentBag').hide();
});
//订单包裹左右切换
function lunBo($pre, $next, $ul, $iWidth) {
var i = 1,
j = 1;
var iSpeed = 0,
isMoving = false;
$pre.click(function() {
if (isMoving) {
return;
}
if ($ul.css('left') === '0px') {
iSpeed = 0;
} else {
iSpeed += j * $iWidth;
isMoving = true;
}
$ul.stop().animate({
left: iSpeed
}, 300, function() {
isMoving = false;
});
});
$next.click(function() {
var $largeLeft = $ul.parent().width() - $ul.width() + 'px';
if (isMoving) {
return;
}
if ($ul.css('left') === $largeLeft) {
$ul.css('left', $largeLeft);
} else {
iSpeed += -i * $iWidth;
isMoving = true;
}
$ul.stop().animate({
left: iSpeed
}, 300, function() {
isMoving = false;
});
});
}
//订单分类
$('.bag').find('ul').each(function() {
var $pre = $(this).parent().parent().find('.pre');
var $next = $(this).parent().parent().find('.next');
var $iWidth = $(this).find('li').eq(0).width();
var $length = $(this).find('li').size();
var $ulWidth = $iWidth * $length;
$(this).css('width', $ulWidth);
if ($length > 5) {
$pre.show();
$next.show();
lunBo($pre, $next, $(this), $iWidth);
} else {
$pre.hide();
$next.hide();
}
});
... ...
... ... @@ -11,3 +11,5 @@ require('./brand');
require('./hotrank');
require('./item');
require('./shop-index');
... ...
... ... @@ -24,6 +24,43 @@ lazyLoad($('img.lazy'));
* @num 每列存放商品的个数
*/
exports.init = function(num) {
var $shopEntry = $('.shop-entry'),
$shopEntryArea = $('.shop-entry-area'),
shopEntryLen = $shopEntry.length;
if (shopEntryLen > 0) {
if (shopEntryLen % 3 === 1) {
$shopEntry.eq(shopEntryLen - 1).css({
width: '100%'
});
$shopEntry.eq(shopEntryLen - 1).find('.name').css({
width: '600px'
});
} else if (shopEntryLen % 3 === 2) {
$shopEntry.eq(shopEntryLen - 1).css({
width: '49%'
});
$shopEntry.eq(shopEntryLen - 2).css({
width: '49%'
});
$shopEntry.eq(shopEntryLen - 1).find('.name').css({
width: '230px'
});
$shopEntry.eq(shopEntryLen - 2).find('.name').css({
width: '230px'
});
}
$('.shop-entry:nth-child(3n+1)').css({
marginLeft: 0
});
$shopEntryArea.show();
}
productList = null;
... ...
/**
* 首页
* @author: bikai<kai.bi@yoho.cn>
* @date: 2016/4/26
*/
var $ = require('yoho.jquery'),
lazyLoad = require('yoho.lazyload'),
product = require('../product/product');
var $shopIntro = $('.shop-intro'),
$shopCollect = $('.shop-collect'),
$sliderLeft = $('.slider-left'),
$allGoods = $('.all-goods'),
$fixedArea = $allGoods.find('.fixed-area'),
fixedAreaTop = $fixedArea.offset() ? $fixedArea.offset().top : 0;
// Pjax
require('yoho.pjax');
require('../common/slider');
require('../product/list');
product.init(4);
lazyLoad($('img.lazy'));
if ($sliderLeft.length) {
$sliderLeft.slider();
}
$shopIntro.on('click', function() {
$('.pop-shop-intro').show();
$('.mask').show();
});
$('.close-btn, .mask').on('click', function() {
$('.pop-shop-intro').hide();
$('.mask').hide();
});
// 收藏店铺
function colloectAction() {
var $colloectIcon = $shopCollect.find('.shop-collect-ico'),
$colloectText = $shopCollect.find('.shop-collect-text'),
isFavorite = $colloectIcon.hasClass('on'),
needColloect = window.cookie('needColloect');
$.ajax({
type: 'post',
url: '/shoplist/setFavorite',
data: {
isFavorite: isFavorite ? 0 : 1,
needColloect: needColloect,
shopId: $shopCollect.data('id')
},
success: function(res) {
if (res.code === 200) {
if (isFavorite) {
$colloectIcon.removeClass('on');
$colloectText.html('收藏');
} else {
$colloectIcon.addClass('on');
$colloectText.html('已收藏');
}
if (needColloect) {
$colloectIcon.addClass('on');
$colloectText.html('已收藏');
}
} else if (res.code === 401) {
window.setCookie('needColloect', '1', {
path: '/',
domain: '.yohobuy.com',
expires: 90
});
location.href = res.url;
}
}
});
}
$shopCollect.on('click', function() {
colloectAction();
});
if (window.cookie('needColloect') * 1 === 1 && window.getUid()) {
colloectAction();
window.setCookie('needColloect', '', {
path: '/',
domain: '.yohobuy.com',
expires: 1
});
}
// 全部商品使用 pjax 翻页
$allGoods.pjax('a.pjax', '.goods-wrap', {
timeout: 5000,
scrollTo: false // 默认滚动没有动画,禁止掉
}).on('pjax:end', function() {
product.init(4);
lazyLoad($('img.lazy'));
$fixedArea = $allGoods.find('.fixed-area'); // 翻页后 fixed-area 区域有变化,需要更新选择器
// 分页后移动到全部商品
$('html, body').animate({
scrollTop: $allGoods.offset().top - 30
});
}).on('click', '.menu-list li', function() {
var $this = $(this);
$this.siblings().removeClass('on');
$this.addClass('on');
});
$(window).on('scroll', function() {
var scrollTop = $(this).scrollTop();
if (scrollTop > fixedAreaTop) {
$fixedArea.css({
position: 'fixed',
top: 0
});
} else {
$fixedArea.css({
position: 'static',
top: 0
});
}
});
... ...