尚品汇-(十九)

目录:

一:搭建service-client父模块

(1)搭建service-product-client

(2)service-item模块汇总数据

(3)搭建service-item-client模块

(4)搭建web-util模块

二:搭建web父模块

(4)搭建web-util模块

(5)构建web-all模块


一:搭建service-client父模块

该模块管理所有微服务feign client api模块

在gmall-parent模块下创建:

 修改pom.xml文件

 <dependencies>
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>common-util</artifactId>
            <version>1.0</version>
        </dependency>

        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>model</artifactId>
            <version>1.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <scope>provided </scope>
        </dependency>
    </dependencies>

(1)搭建service-product-client

在service-client 模块下创建

 降级方法:

@Component
public class ProductDegradeFeignClient implements ProductFeignClient {

    @Override
    public SkuInfo getSkuInfo(Long skuId) {
        return null;
    }

    @Override
    public BaseCategoryView getCategoryView(Long category3Id) {
        return null;
    }

    @Override
    public BigDecimal getSkuPrice(Long skuId) {
        return null;
    }

    @Override
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId) {
        return null;
    }


    @Override
    public Map getSkuValueIdsMap(Long spuId) {
        return null;
    }
    @Override
    public List<SpuPoster> getSpuPosterBySpuId(Long spuId) {
        return null;
    }
    @Override
    public List<BaseAttrInfo> getAttrList(Long skuId) {
        return null;
    }
}

封装service-product-client接口:在远程调用的时候,很可能出现网络抖动这里面有一个降级的方法,失败的时候,给一个降级的显示,我们这里直接返回null

这里接口的路径不要写在上面了,要写在接口访问里

package com.atguigu.gmall.product.client;

@FeignClient(value ="service-product", fallback = ProductDegradeFeignClient.class)
public interface ProductFeignClient {

    /**
     * 根据skuId获取sku信息
     *
     * @param skuId
     * @return
     */
    @GetMapping("/api/product/inner/getSkuInfo/{skuId}")
    SkuInfo getSkuInfo(@PathVariable("skuId") Long skuId);


    /**
     * 通过三级分类id查询分类信息
     * @param category3Id
     * @return
     */
    @GetMapping("/api/product/inner/getCategoryView/{category3Id}")
    BaseCategoryView getCategoryView(@PathVariable("category3Id")Long category3Id);

    /**
     * 获取sku最新价格
     *
     * @param skuId
     * @return
     */
    @GetMapping("/api/product/inner/getSkuPrice/{skuId}")
    BigDecimal getSkuPrice(@PathVariable(value = "skuId") Long skuId);

    /**
     * 根据spuId,skuId 查询销售属性集合
     *
     * @param skuId
     * @param spuId
     * @return
     */
    @GetMapping("/api/product/inner/getSpuSaleAttrListCheckBySku/{skuId}/{spuId}")
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(@PathVariable("skuId") Long skuId, @PathVariable("spuId") Long spuId);

    /**
     * 根据spuId 查询map 集合属性
     * @param spuId
     * @return
     */
    @GetMapping("/api/product/inner/getSkuValueIdsMap/{spuId}")
    Map getSkuValueIdsMap(@PathVariable("spuId") Long spuId);

   //  根据spuId 获取海报数据
   @GetMapping("/api/product/inner/findSpuPosterBySpuId/{spuId}")
   List<SpuPoster> getSpuPosterBySpuId(@PathVariable Long spuId);
    /**
     * 通过skuId 集合来查询数据
     * @param skuId
     * @return
     */
    @GetMapping("/api/product/inner/getAttrList/{skuId}")
    List<BaseAttrInfo> getAttrList(@PathVariable("skuId") Long skuId);
}

说明:接下来service-item引用service-product-client模块,就可以调用相应接口

在service-item pom.xml引用依赖:

<dependency>

   <groupId>com.atguigu.gmall</groupId>

   <artifactId>service-product-client</artifactId>

   <version>1.0</version>

</dependency>
 

(2)service-item模块汇总数据

引入远程调用模块依赖: 

加上远程调用扫描,可以写到gmall不写到完整的

在Service注入:

在原来的方法里继续添加代码:

上面有的没有进行数据处理,下面才是最终代码 

@Service
public class ItemServiceImpl implements ItemService {

    //  远程调用service-product-client
    @Autowired
    private ProductFeignClient productFeignClient;

    @Override
    public Map<String, Object> getItemBySkuId(Long skuId) {
        //  声明对象
        Map<String, Object> result = new HashMap<>();

        //  获取到的数据是skuInfo + skuImageList
        SkuInfo skuInfo = productFeignClient.getSkuInfo(skuId);

        //  判断skuInfo 不为空
        if (skuInfo!=null){
            //  获取分类数据
            BaseCategoryView categoryView = productFeignClient.getCategoryView(skuInfo.getCategory3Id());
            result.put("categoryView",categoryView);
            //  获取销售属性+销售属性值
            List<SpuSaleAttr> spuSaleAttrListCheckBySku = productFeignClient.getSpuSaleAttrListCheckBySku(skuId, skuInfo.getSpuId());
            result.put("spuSaleAttrList",spuSaleAttrListCheckBySku);
            //  查询销售属性值Id 与skuId 组合的map
            Map skuValueIdsMap = productFeignClient.getSkuValueIdsMap(skuInfo.getSpuId());
            //  将这个map 转换为页面需要的Json 对象
            String valueJson = JSON.toJSONString(skuValueIdsMap);
            result.put("valuesSkuJson",valueJson);

            //  spu海报数据
        List<SpuPoster> spuPosterList =                         productFeignClient.findSpuPosterBySpuId(skuInfo.getSpuId());
        result.put("spuPosterList", spuPosterList);


        }
        //  获取价格
        BigDecimal skuPrice = productFeignClient.getSkuPrice(skuId);
        //  map 中 key 对应的谁? Thymeleaf 获取数据的时候 ${skuInfo.skuName}
        result.put("skuInfo",skuInfo);
        result.put("price",skuPrice);
        //  返回map 集合 Thymeleaf 渲染:能用map 存储数据!
       
        //获取平台属性   Stream流中的map加工方法,去掉其他没用的属性,保留两个属性
        List<BaseAttrInfo> attrList = productFeignClient.getAttrList(skuId);
        //  使用拉姆达表示
        List<Map<String, String>> skuAttrList = attrList.stream().map((baseAttrInfo) -> {
            Map<String, String> attrMap = new HashMap<>();
            attrMap.put("attrName", baseAttrInfo.getAttrName());
            attrMap.put("attrValue",         baseAttrInfo.getAttrValueList().get(0).getValueName());
            return attrMap;
        }).collect(Collectors.toList());
        result.put("skuAttrList", skuAttrList);

        return result;
    }
}

 

 

商品详情页面渲染

(3)搭建service-item-client模块

在service-client 目录下创建。

搭建方式同service-product-client

接口类

package com.atguigu.gmall.item.client

@FeignClient(value = "service-item", fallback = ItemDegradeFeignClient.class)
public interface ItemFeignClient {

    /**
     * @param skuId
     * @return
     */
    @GetMapping("/api/item/{skuId}")
    Result getItem(@PathVariable("skuId") Long skuId);

}

降级方法:返回空的信息 

@Component
public class ItemDegradeFeignClient implements ItemFeignClient {


    @Override
    public Result getItem(Long skuId) {
        return Result.fail();
    }
}

二:搭建web父模块

搭建web

构建方式如:common父模块

修改配置pom.xml

<dependencies>
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>web-util</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

        <!-- 服务注册 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
<!-- 服务配置-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>


        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

        <!-- 流量控制 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>
    </dependencies>

(4)搭建web-util模块

搭建方式如service-util

修改配置pom.xml

<dependencies>
        <dependency>
            <groupId>com.atguigu.gmall</groupId>
            <artifactId>common-util</artifactId>
            <version>1.0</version>
        </dependency>

        <!-- 服务调用feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>provided </scope>
        </dependency>
    </dependencies>

导入工具类:

GlobalExceptionHandler :

package com.atguigu.gmall.common.handler;

import com.atguigu.gmall.common.execption.GmallException;
import com.atguigu.gmall.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;


@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result error(Exception e){
        e.printStackTrace();
        return Result.fail();
    }

    /**
     * 自定义异常处理方法
     * @param e
     * @return
     */
    @ExceptionHandler(GmallException.class)
    @ResponseBody
    public Result error(GmallException e){
        return Result.fail(e.getMessage());
    }
}

 FeignInterceptor :单点登录以后,各个微服务之间不会传递头信息,我们给他们自动加入了头信息

package com.atguigu.gmall.common.interceptor;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

@Component
public class FeignInterceptor implements RequestInterceptor {

    public void apply(RequestTemplate requestTemplate){
            //  微服务远程调用使用feign ,feign 传递数据的时候,没有。
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            //  添加header 数据
            requestTemplate.header("userTempId", request.getHeader("userTempId"));
            requestTemplate.header("userId", request.getHeader("userId"));

    }

}

(5)构建web-all模块

搭建方式在web模块下创建

修改pom.xml文件

<dependencies>
   <dependency>
      <groupId>com.atguigu.gmall</groupId>
      <artifactId>service-item-client</artifactId>
      <version>1.0</version>
   </dependency>
</dependencies>


<build>
   <finalName>web-all</finalName>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
   </plugins>
</build>

 添加配置文件bootstrap.properties:

spring.application.name=web-all
spring.profiles.active=dev
spring.cloud.nacos.discovery.server-addr=192.168.254.165:8848
spring.cloud.nacos.config.server-addr=192.168.254.165:8848
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=yaml

 

启动类
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源自动配置
@ComponentScan({"com.atguigu.gmall"})   //扫描引入的工具类里面的注解
@EnableDiscoveryClient        //服务发现注解
@EnableFeignClients(basePackages= {"com.atguigu.gmall"})   //远程调用注解
public class WebAllApplication {

    public static void main(String[] args) {
        SpringApplication.run(WebAllApplication.class, args);
    }
}

 将web-all 模块添加到网关

  1. 由于我们的微服务接口都是通过网关暴露服务,所以需要配置网关
server-gateway网关添加配置:
routes:

- id: service-product

  uri: lb://service-product

  predicates:

  - Path=/*/product/** # 路径匹配

- id: service-item

  uri: lb://service-item

  predicates:

  - Path=/*/item/**
#==================web前端==========================

- id: web-item

  uri: lb://web-all

  predicates:

  - Host=item.gmall.com

导入静态资源

在web-all 工     将这两个文件夹放入到resouces 文件夹中。

导入之后,可能发送异常警告

 

IDEA,默认前端是ES5,这里是ES6

编写web-all中的控制器ItemController :

前端取值:

 model.addAllAttributes(result.getData());用这个方法前端就可以实现上面方式的取值

Package com.atguigu.gmall.all.controller
@Controller
public class ItemController {

    @Autowired
    private ItemFeignClient itemFeignClient;

    /**
     * sku详情页面
          * @param skuId
     * @param model
     * @return
     */
    @RequestMapping("{skuId}.html")
    public String getItem(@PathVariable Long skuId, Model model){
        // 通过skuId 查询skuInfo
        Result<Map> result = itemFeignClient.getItem(skuId);
        model.addAllAttributes(result.getData());
        return "item/index";
    }
}

可以切换销售属性: 

前端代码:

item详情页:

切换销售属性关键代码

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE">
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
    <title>尚品汇 产品详情</title>
    <link rel="icon" href="/img/favicon.ico">

    <link rel="stylesheet" type="text/css" href="/css/all.css"/>
    <link rel="stylesheet" type="text/css" href="/css/pages-item.css"/>
    <link rel="stylesheet" type="text/css" href="/css/pages-zoom.css"/>

    <div th:include="common/head :: head"></div>
</head>

<body>

<!--页面顶部-->
<div th:include="common/header :: header"></div>

<div id="itemArray">
    <!-- 商品分类导航 -->
    <div class="typeNav">
        <div class="py-container">
            <div class="yui3-g NavList">
                <div class="all-sorts-list">
                    <div class="yui3-u Left all-sort">
                        <h4>全部商品分类</h4>
                    </div>
                </div>
                <div class="yui3-u Center navArea">
                    <ul class="nav">
                        <li class="f-item">服装城</li>
                        <li class="f-item">美妆馆</li>
                        <li class="f-item">尚品汇超市</li>
                        <li class="f-item">全球购</li>
                        <li class="f-item">闪购</li>
                        <li class="f-item">团购</li>
                        <li class="f-item">有趣</li>
                        <li class="f-item"><a href="http://activity.gmall.com/seckill.html" target="_blank">秒杀</a></li>
                    </ul>
                </div>
                <div class="yui3-u Right"></div>
            </div>
        </div>
    </div>
    <div class="py-container" >
        <div id="item">
            <div class="crumb-wrap">
                <ul class="sui-breadcrumb">
                    <li>
                        <a th:href="@{http://list.gmall.com/list.html?category1Id={category1Id}(category1Id=${categoryView.category1Id})}" th:text="${categoryView.category1Name}">手机、数码、通讯</a>
                    </li>
                    <li>
                        <a th:href="@{http://list.gmall.com/list.html?category2Id={category2Id}(category2Id=${categoryView.category2Id})}" th:text="${categoryView.category2Name}">手机</a>
                    </li>
                    <li>
                        <a th:href="@{http://list.gmall.com/list.html?category3Id={category3Id}(category3Id=${categoryView.category3Id})}" th:text="${categoryView.category3Name}">Apple苹果</a>
                    </li>
                    <li class="active" th:text="${skuInfo.skuName}">iphone 6S系类</li>
                </ul>
            </div>
            <!--product-info-->
            <div class="product-info">
                <div class="fl preview-wrap">
                    <!--放大镜效果-->
                    <div class="zoom">
                        <!--默认第一个预览-->
                        <div id="preview" class="spec-preview hm-display-statistics" th:attr="hm-display=|{'displayType':'query','item_type':'sku_id','item':${skuInfo.id},'order':1}|">
                     <span class="jqzoom">
                        <img th:jqimg="${skuInfo.skuDefaultImg}" th:src="${skuInfo.skuDefaultImg}" width="400" height="400"/>
                     </span>
                        </div>
                        <!--下方的缩略图-->
                        <div class="spec-scroll">
                            <a class="prev">&lt;</a>
                            <!--左右按钮-->
                            <div class="items">
                                <ul>
                                    <li th:each="skuImage: ${skuInfo.skuImageList}">
                                        <img th:src="${skuImage.imgUrl}" th:bimg="${skuImage.imgUrl}" onmousemove="preview(this)"/>
                                    </li>
                                </ul>
                            </div>
                            <a class="next">&gt;</a>
                        </div>
                    </div>


                    <div class="preview-info" style="margin-top: 20px">
                        <div class="left-btns">
                            <a class="follow J-follow followed hm-action-statistics" href="#none" @click="addFavor()" :hm-action = "'{\'action_id\':\'favor_add\', \'item_type\': \'skuId\', \'item\': '+skuId+'}'">
                                <i class="sprite-follow-sku"></i><em>{{ favorLable }}</em>
                            </a>
                            <a class="share J-share" href="#none">
                                <i class="sprite-share"></i><em>分享</em>
                            </a>
                            <a class="compare J-compare J_contrast" href="#none">
                                <i class="sprite-compare"></i><em>对比</em>
                            </a>
                        </div>
                    </div>

                </div>
                <div class="fr itemInfo-wrap" id="app" >
                    <div class="sku-name">
                        <h4 th:text="${skuInfo.skuName}"></h4>
                    </div>
                    <div class="news">
                        <span>推荐选择下方[移动优惠购],手机套餐齐搞定,不用换号,每月还有花费返</span>
                    </div>
                    <div class="summary">
                        <div class="summary-wrap">
                            <div class="fl title">
                                <i>价  格</i>
                            </div>
                            <div class="fl price">
                                <i>¥</i>
                                <em><span th:text="${price}">4499.00</span></em>
                                <span>降价通知</span>
                            </div>
                            <div class="fr remark">
                                <i>累计评价</i>
                                <em>500万+</em>
                            </div>
                        </div>
                        <div class="summary-wrap" v-if="couponInfoList !== undefined && couponInfoList.length > 0">
                            <div class="fl title">
                                <i>优 惠 券</i>
                            </div>
                            <div class="fl fix-width">
                                <div class="fl fix-width" @click="couponMore()">
                                    <a href="#none" v-for="(couponInfo, index) in couponInfoList" :key="couponInfo.id" v-if="index < 3" :title="couponInfo.couponName"><i class="red-bg i-coupon" v-if="couponInfo.couponType == 'CASH'">现金券{{ couponInfo.benefitAmount }}元</i></a>
                                    <a href="#none" v-for="(couponInfo, index) in couponInfoList" :key="couponInfo.id" v-if="index < 3" :title="couponInfo.couponName"><i class="red-bg i-coupon" v-if="couponInfo.couponType == 'DISCOUNT'">折扣券{{ couponInfo.benefitDiscount }}折</i></a>
                                    <a href="#none" v-for="(couponInfo, index) in couponInfoList" :key="couponInfo.id" v-if="index < 3" :title="couponInfo.couponName"><i class="red-bg i-coupon" v-if="couponInfo.couponType == 'FULL_REDUCTION'">满{{ couponInfo.conditionAmount }}减{{ couponInfo.benefitAmount }}元</i></a>
                                    <a href="#none" v-for="(couponInfo, index) in couponInfoList" :key="couponInfo.id" v-if="index < 3" :title="couponInfo.couponName"><i class="red-bg i-coupon" v-if="couponInfo.couponType == 'FULL_DISCOUNT'">满{{ couponInfo.conditionNum }}件打{{ couponInfo.benefitDiscount }}折</i></a>
                                    <a href="#none" v-if="couponInfoList.length > 3" class="coupon-more">更多</a>
                                </div>
                            </div>
                        </div>
                        <div class="summary-wrap" v-if="activityRuleList !== undefined && activityRuleList.length > 0">
                            <div class="fl title">
                                <i>促  销</i>
                            </div>
                            <div class="fl fix-width">
                                <div v-for="activityRule in activityRuleList" :key="activityRule.id">
                                    <i class="red-bg">{{ activityRule.activityType == 'FULL_REDUCTION' ? '满减' : '折扣' }}</i>
                                    <em class="t-gray" v-if="activityRule.activityType == 'FULL_REDUCTION'">满{{ activityRule.conditionAmount }}减{{ activityRule.benefitAmount }}元 </em>
                                    <em class="t-gray" v-if="activityRule.activityType == 'FULL_DISCOUNT'">满{{ activityRule.conditionNum}}件打{{ activityRule.benefitDiscount }}折</em>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="support">
                        <div class="summary-wrap">
                            <div class="fl title">
                                <i>支  持</i>
                            </div>
                            <div class="fl fix-width">
                                <em class="t-gray">以旧换新,闲置手机回收 4G套餐超值抢 礼品购</em>
                            </div>
                        </div>
                        <div class="summary-wrap">
                            <div class="fl title">
                                <i>配 送 至</i>
                            </div>
                            <div class="fl fix-width">
                                <em class="t-gray">满999.00另加20.00元,或满1999.00另加30.00元,或满2999.00另加40.00元,即可在购物车换购热销商品</em>
                            </div>
                        </div>
                        <div class="summary-wrap">
                            <div class="fl title">
                                <i>重   量</i>
                            </div>
                            <div class="fl fix-width">
                                <em class="t-gray" th:text="${skuInfo.weight}"></em>
                            </div>
                        </div>
                    </div>
                    <div class="clearfix choose">
                        <div id="specification" class="summary-wrap clearfix">


                            <dl v-for="spuSaleAttr in spuSaleAttrList" :key="spuSaleAttr.id">
                                <dt>
                                    <div class="fl title">
                                        <i>{{spuSaleAttr.saleAttrName}}</i>
                                    </div>
                                </dt>
                                <dd v-for="spuSaleAttrValue in spuSaleAttr.spuSaleAttrValueList" :key="spuSaleAttrValue.id" @click="spuSaleAttrFun(spuSaleAttr.index, spuSaleAttrValue.id)">
                                    <a href="javascript:;" :class="{'selected':spuSaleAttrValue.isChecked == 1}">{{spuSaleAttrValue.saleAttrValueName}}<span title="点击取消选择">&nbsp;</span></a>
                                </dd>
                            </dl>

                        </div>

                        <div class="summary-wrap">
                            <div class="fl title">
                                <div class="control-group">
                                    <div class="controls">
                                        <input autocomplete="off" type="text" :value="skuNum" minnum="1" class="itxt" />
                                        <a href="javascript:void(0)" class="increment plus hm-action-statistics" @click="add()" th:attr="hm-action=|{'action_id':'cart_add','item_type':'sku_id','item':${skuInfo.id}}|">+</a>
                                        <a href="javascript:void(0)" class="increment mins hm-action-statistics" @click="down()" th:attr="hm-action=|{'action_id':'cart_down','item_type':'sku_id','item':${skuInfo.id}}|">-</a>
                                    </div>
                                </div>
                            </div>
                            <div class="fl">
                                <ul class="btn-choose unstyled">
                                    <li>
                                        <a href="javascript:void(0);" v-if="isAddCart" @click="addToCart()" class="sui-btn  btn-danger addshopcar">加入购物车</a>
                                        <a href="javascript:void(0);" v-if="!isAddCart" class="sui-btn  btn-danger addshopcar" disabled="disabled">加入购物车</a>
                                    </li>
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!--product-detail-->
            <div class="clearfix product-detail">
                <div class="fl aside">
                    <ul class="sui-nav nav-tabs tab-wraped">
                        <li class="active">
                            <a href="#index" data-toggle="tab">
                                <span>相关分类</span>
                            </a>
                        </li>
                        <li>
                            <a href="#profile" data-toggle="tab">
                                <span>推荐品牌</span>
                            </a>
                        </li>
                    </ul>
                    <div class="tab-content tab-wraped">
                        <div id="index" class="tab-pane active">
                            <ul class="part-list unstyled">
                                <li>手机</li>
                                <li>手机壳</li>
                                <li>内存卡</li>
                                <li>Iphone配件</li>
                                <li>贴膜</li>
                                <li>手机耳机</li>
                                <li>移动电源</li>
                                <li>平板电脑</li>
                            </ul>
                            <ul class="goods-list unstyled">
                                <li>
                                    <div class="list-wrap">
                                        <div class="p-img">
                                            <img src="./img/_/part01.png"/>
                                        </div>
                                        <div class="attr">
                                            <em>Apple苹果iPhone 6s (A1699)</em>
                                        </div>
                                        <div class="price">
                                            <strong>
                                                <em>¥</em>
                                                <i>6088.00</i>
                                            </strong>
                                        </div>
                                        <div class="operate">
                                            <a href="javascript:void(0);" class="sui-btn btn-bordered">加入购物车</a>
                                        </div>
                                    </div>
                                </li>
                                <li>
                                    <div class="list-wrap">
                                        <div class="p-img">
                                            <img src="./img/_/part02.png"/>
                                        </div>
                                        <div class="attr">
                                            <em>Apple苹果iPhone 6s (A1699)</em>
                                        </div>
                                        <div class="price">
                                            <strong>
                                                <em>¥</em>
                                                <i>6088.00</i>
                                            </strong>
                                        </div>
                                        <div class="operate">
                                            <a href="javascript:void(0);" class="sui-btn btn-bordered">加入购物车</a>
                                        </div>
                                    </div>
                                </li>
                                <li>
                                    <div class="list-wrap">
                                        <div class="p-img">
                                            <img src="./img/_/part03.png"/>
                                        </div>
                                        <div class="attr">
                                            <em>Apple苹果iPhone 6s (A1699)</em>
                                        </div>
                                        <div class="price">
                                            <strong>
                                                <em>¥</em>
                                                <i>6088.00</i>
                                            </strong>
                                        </div>
                                        <div class="operate">
                                            <a href="javascript:void(0);" class="sui-btn btn-bordered">加入购物车</a>
                                        </div>
                                    </div>
                                    <div class="list-wrap">
                                        <div class="p-img">
                                            <img src="./img/_/part02.png"/>
                                        </div>
                                        <div class="attr">
                                            <em>Apple苹果iPhone 6s (A1699)</em>
                                        </div>
                                        <div class="price">
                                            <strong>
                                                <em>¥</em>
                                                <i>6088.00</i>
                                            </strong>
                                        </div>
                                        <div class="operate">
                                            <a href="javascript:void(0);" class="sui-btn btn-bordered">加入购物车</a>
                                        </div>
                                    </div>
                                    <div class="list-wrap">
                                        <div class="p-img">
                                            <img src="./img/_/part03.png"/>
                                        </div>
                                        <div class="attr">
                                            <em>Apple苹果iPhone 6s (A1699)</em>
                                        </div>
                                        <div class="price">
                                            <strong>
                                                <em>¥</em>
                                                <i>6088.00</i>
                                            </strong>
                                        </div>
                                        <div class="operate">
                                            <a href="javascript:void(0);" class="sui-btn btn-bordered">加入购物车</a>
                                        </div>
                                    </div>
                                </li>
                            </ul>
                        </div>
                        <div id="profile" class="tab-pane">
                            <p>推荐品牌</p>
                        </div>
                    </div>
                </div>
                <div class="fr detail">
                    <div class="clearfix fitting">
                        <h4 class="kt">选择搭配</h4>
                        <div class="good-suits">
                            <div class="fl master">
                                <div class="list-wrap">
                                    <div class="p-img">
                                        <img src="./img/_/l-m01.png"/>
                                    </div>
                                    <em>¥5299</em>
                                    <i>+</i>
                                </div>
                            </div>
                            <div class="fl suits">
                                <ul class="suit-list">
                                    <li class="">
                                        <div id="">
                                            <img src="./img/_/dp01.png"/>
                                        </div>
                                        <i>Feless费勒斯VR</i>
                                        <label data-toggle="checkbox" class="checkbox-pretty">
                                            <input type="checkbox">
                                            <span>39</span>
                                        </label>
                                    </li>
                                    <li class="">
                                        <div id="">
                                            <img src="./img/_/dp02.png"/></div>
                                        <i>Feless费勒斯VR</i>
                                        <label data-toggle="checkbox" class="checkbox-pretty">
                                            <input type="checkbox">
                                            <span>50</span>
                                        </label>
                                    </li>
                                    <li class="">
                                        <div id="">
                                            <img src="./img/_/dp03.png"/>
                                        </div>
                                        <i>Feless费勒斯VR</i>
                                        <label data-toggle="checkbox" class="checkbox-pretty">
                                            <input type="checkbox">
                                            <span>59</span>
                                        </label>
                                    </li>
                                    <li class="">
                                        <div id="">
                                            <img src="./img/_/dp04.png"/>
                                        </div>
                                        <i>Feless费勒斯VR</i>
                                        <label data-toggle="checkbox" class="checkbox-pretty">
                                            <input type="checkbox">
                                            <span>99</span>
                                        </label>
                                    </li>
                                </ul>
                            </div>
                            <div class="fr result">
                                <div class="num">已选购0件商品</div>
                                <div class="price-tit">
                                    <strong>套餐价</strong>
                                </div>
                                <div class="price">¥5299</div>
                                <button class="sui-btn  btn-danger addshopcar">加入购物车</button>
                            </div>
                        </div>
                    </div>
                    <div class="tab-main intro">
                        <ul class="sui-nav nav-tabs tab-wraped">
                            <li class="active">
                                <a href="#one" data-toggle="tab">
                                    <span>商品介绍</span>
                                </a>
                            </li>
                            <li>
                                <a href="#two" data-toggle="tab">
                                    <span>规格与包装</span>
                                </a>
                            </li>
                            <li>
                                <a href="#three" data-toggle="tab">
                                    <span>售后保障</span>
                                </a>
                            </li>
                            <li>
                                <a href="#four" data-toggle="tab">
                                    <span>商品评价({{ commentCount.count }})</span>
                                </a>
                            </li>
                            <li>
                                <a href="#five" data-toggle="tab">
                                    <span>手机社区</span>
                                </a>
                            </li>
                        </ul>
                        <div class="clearfix"></div>
                        <div class="tab-content tab-wraped">
                            <div id="one" class="tab-pane active">
                                <div class="intro-detail">
                                    <img th:each="spuPoster: ${spuPosterList}" th:src="${spuPoster.imgUrl}" th:bimg="${spuPoster.imgUrl}"/>
                                </div>
                            </div>
                            <div id="two" class="tab-pane">
                                <p>规格与包装</p>
                                <ul class="goods-intro unstyled">
                                    <li th:each="skuAttr: ${skuAttrList}">
                                        <span th:text="${skuAttr.attrName}"></span>:<span th:text="${skuAttr.attrValue}"></span>
                                    </li>
                                </ul>
                            </div>
                            <div id="three" class="tab-pane">
                                <p>售后保障</p>
                            </div>
                            <div id="four" class="tab-pane">
                                <div class="comment">
                                    <div class="com-tit">商品评价</div>
                                    <div class="com-percent">
                                        <p>好评度
                                            <span class="percent">{{ commentCount.rate }}</span>
                                        </p>
                                    </div>
                                    <div class="com-tab-type">
                                        <ul class="type">
                                            <li class="current">
                                                <a href="javascript:;">全部评价({{ commentCount.count }})</a>
                                            </li>
<!--                                            <li>-->
<!--                                                <a href="javascript:;">晒图(500)</a>-->
<!--                                            </li>-->
<!--                                            <li>-->
<!--                                                <a href="javascript:;">追评(500)</a>-->
<!--                                            </li>-->
                                            <li>
                                                <a href="javascript:;">好评({{ commentCount.count3 }})</a>
                                            </li>
                                            <li>
                                                <a href="javascript:;">中评({{ commentCount.count2 }})</a>
                                            </li>
                                            <li>
                                                <a href="javascript:;">差评({{ commentCount.count1 }})</a>
                                            </li>
                                        </ul>
                                        <div class="content">
                                            <div class="com-item" v-for="commentInfo in commentList" :key="commentInfo.id">
                                                <div class="user-column">
                                                    <div class="username">
                                                        <img :src="commentInfo.headImg" width="30"/>{{ commentInfo.nickName }}
                                                    </div>
                                                    <div class="usernum">品享值258698</div>
                                                </div>
                                                <div class="user-info">
                                                    <div>
                                                        <i :class="commentInfo.appraise >= 1 ? 'sui-icon icon-tb-favorfill' : 'sui-icon icon-tb-favor'"></i>
                                                        <i :class="commentInfo.appraise >= 2 ? 'sui-icon icon-tb-favorfill' : 'sui-icon icon-tb-favor'"></i>
                                                        <i :class="commentInfo.appraise >= 3 ? 'sui-icon icon-tb-favorfill' : 'sui-icon icon-tb-favor'"></i>
                                                        <i :class="commentInfo.appraise >= 4 ? 'sui-icon icon-tb-favorfill' : 'sui-icon icon-tb-favor'"></i>
                                                        <i :class="commentInfo.appraise >= 5 ? 'sui-icon icon-tb-favorfill' : 'sui-icon icon-tb-favor'"></i>
                                                    </div>
                                                    <p>{{ commentInfo.commentTxt }}</p>
                                                    <div class="guige">
                                                        <ul class="mini">
                                                            <li>{{ commentInfo.createTime }}</li>
                                                        </ul>
                                                        <div class="operate">
                                                            <span id="collect"><i class="sui-icon icon-tb-like"></i> 325</span>
                                                            <span id="comment"><i class="sui-icon icon-tb-wang"></i> 256</span>
                                                        </div>
                                                        <div class="clearfix"></div>
                                                    </div>
                                                </div>
                                            </div>

                                            <div class="choose-order">
                                                <div class="sui-pagination pagination-large top-pages">
                                                    <ul>
                                                        <li class="prev disabled"
                                                            :class="{disabled: pageNo == 1}"
                                                            @click.prevent="getCommentPageList(pageNo - 1)"
                                                        >
                                                            <a href="javascript:">«上一页</a>
                                                        </li>
                                                        <li
                                                                v-for="page in pages"
                                                                :key="page"
                                                                :class="{active: pageNo == page, disabled: pageNo == page}"
                                                                :title="'第'+page+'页'"
                                                                @click.prevent="getCommentPageList(page)"
                                                        >
                                                            <a href="javascript:">{{ page }}</a>
                                                        </li>

                                                        <li class="prev disabled"
                                                            :class="{disabled: pageNo == pages}"
                                                            @click.prevent="getCommentPageList(pageNo + 1)"
                                                        >
                                                            <a href="javascript:">下一页»</a>
                                                        </li>
                                                    </ul>
                                                    <div>
                                                        <span>&nbsp;&nbsp;&nbsp;&nbsp;共{{pages}}页&nbsp;</span>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="clearfix"></div>

                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div id="five" class="tab-pane">
                                <p>手机社区</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!--like-->
            <div class="clearfix"></div>
            <div class="like">
                <h4 class="kt">猜你喜欢</h4>
                <div class="like-list">
                    <ul class="yui3-g">
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike01.png"/>
                                </div>
                                <div class="attr">
                                    <em>DELL戴尔Ins 15MR-7528SS 15英寸 银色 笔记本</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>3699.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有6人评价</i>
                                </div>
                            </div>
                        </li>
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike02.png"/>
                                </div>
                                <div class="attr">
                                    <em>Apple苹果iPhone 6s/6s Plus 16G 64G 128G</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>4388.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有700人评价</i>
                                </div>
                            </div>
                        </li>
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike03.png"/>
                                </div>
                                <div class="attr">
                                    <em>DELL戴尔Ins 15MR-7528SS 15英寸 银色 笔记本</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>4088.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有700人评价</i>
                                </div>
                            </div>
                        </li>
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike04.png"/>
                                </div>
                                <div class="attr">
                                    <em>DELL戴尔Ins 15MR-7528SS 15英寸 银色 笔记本</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>4088.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有700人评价</i>
                                </div>
                            </div>
                        </li>
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike05.png"/>
                                </div>
                                <div class="attr">
                                    <em>DELL戴尔Ins 15MR-7528SS 15英寸 银色 笔记本</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>4088.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有700人评价</i>
                                </div>
                            </div>
                        </li>
                        <li class="yui3-u-1-6">
                            <div class="list-wrap">
                                <div class="p-img">
                                    <img src="./img/_/itemlike06.png"/>
                                </div>
                                <div class="attr">
                                    <em>DELL戴尔Ins 15MR-7528SS 15英寸 银色 笔记本</em>
                                </div>
                                <div class="price">
                                    <strong>
                                        <em>¥</em>
                                        <i>4088.00</i>
                                    </strong>
                                </div>
                                <div class="commit">
                                    <i class="command">已有700人评价</i>
                                </div>
                            </div>
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <!-- 底部栏位 -->
    <!--页面底部-->
    <div class="clearfix footer">
        <div class="py-container">
            <div class="footlink">
                <div class="clearfix Mod-list">
                    <div class="yui3-g">
                        <div class="yui3-u-1-6">
                            <h4>购物指南</h4>
                            <ul class="unstyled">
                                <li>购物流程</li>
                                <li>会员介绍</li>
                                <li>生活旅行/团购</li>
                                <li>常见问题</li>
                                <li>购物指南</li>
                            </ul>

                        </div>
                        <div class="yui3-u-1-6">
                            <h4>配送方式</h4>
                            <ul class="unstyled">
                                <li>上门自提</li>
                                <li>211限时达</li>
                                <li>配送服务查询</li>
                                <li>配送费收取标准</li>
                                <li>海外配送</li>
                            </ul>
                        </div>
                        <div class="yui3-u-1-6">
                            <h4>支付方式</h4>
                            <ul class="unstyled">
                                <li>货到付款</li>
                                <li>在线支付</li>
                                <li>分期付款</li>
                                <li>邮局汇款</li>
                                <li>公司转账</li>
                            </ul>
                        </div>
                        <div class="yui3-u-1-6">
                            <h4>售后服务</h4>
                            <ul class="unstyled">
                                <li>售后政策</li>
                                <li>价格保护</li>
                                <li>退款说明</li>
                                <li>返修/退换货</li>
                                <li>取消订单</li>
                            </ul>
                        </div>
                        <div class="yui3-u-1-6">
                            <h4>特色服务</h4>
                            <ul class="unstyled">
                                <li>夺宝岛</li>
                                <li>DIY装机</li>
                                <li>延保服务</li>
                                <li>尚品汇E卡</li>
                                <li>尚品汇通信</li>
                            </ul>
                        </div>
                        <div class="yui3-u-1-6">
                            <h4>帮助中心</h4>
                            <img src="/img/wx_cz.jpg">
                        </div>
                    </div>
                </div>
                <div class="Mod-copyright">
                    <ul class="helpLink">
                        <li>关于我们<span class="space"></span></li>
                        <li>联系我们<span class="space"></span></li>
                        <li>关于我们<span class="space"></span></li>
                        <li>商家入驻<span class="space"></span></li>
                        <li>营销中心<span class="space"></span></li>
                        <li>友情链接<span class="space"></span></li>
                        <li>关于我们<span class="space"></span></li>
                        <li>营销中心<span class="space"></span></li>
                        <li>友情链接<span class="space"></span></li>
                        <li>关于我们</li>
                    </ul>
                    <p>地址:北京市昌平区宏福科技园综合楼6层</p>
                    <p>京ICP备19006430号</p>
                </div>
            </div>
        </div>
    </div>
    <!--页面底部END-->
    <!--侧栏面板开始-->
    <div class="J-global-toolbar">
        <div class="toolbar-wrap J-wrap">
            <div class="toolbar" :style="coupon.more == 0 ? 'width:59px;' : 'width:270px;'">
                <div class="toolbar-panels J-panel">

                    <!-- 购物车 -->
                    <div style="visibility: hidden;" class="J-content toolbar-panel tbar-panel-cart toolbar-animate-out">
                        <h3 class="tbar-panel-header J-panel-header">
                            <a href="" class="title"><i></i><em class="title">购物车</em></a>
                            <span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('cart');"></span>
                        </h3>
                        <div class="tbar-panel-main">
                            <div class="tbar-panel-content J-panel-content">
                                <div id="J-cart-tips" class="tbar-tipbox hide">
                                    <div class="tip-inner">
                                        <span class="tip-text">还没有登录,登录后商品将被保存</span>
                                        <a href="#none" class="tip-btn J-login">登录</a>
                                    </div>
                                </div>
                                <div id="J-cart-render">
                                    <!-- 列表 -->
                                    <div id="cart-list" class="tbar-cart-list">
                                    </div>
                                </div>
                            </div>
                        </div>
                        <!-- 小计 -->
                        <div id="cart-footer" class="tbar-panel-footer J-panel-footer">
                            <div class="tbar-checkout">
                                <div class="jtc-number"><strong class="J-count" id="cart-number">0</strong>件商品</div>
                                <div class="jtc-sum"> 共计:<strong class="J-total" id="cart-sum">¥0</strong></div>
                                <a class="jtc-btn J-btn" href="#none" target="_blank">去购物车结算</a>
                            </div>
                        </div>
                    </div>

                    <!-- 我的关注 -->
                    <div style="visibility: hidden;" data-name="follow" class="J-content toolbar-panel tbar-panel-follow">
                        <h3 class="tbar-panel-header J-panel-header">
                            <a href="#" target="_blank" class="title"> <i></i> <em class="title">我的关注</em> </a>
                            <span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('follow');"></span>
                        </h3>
                        <div class="tbar-panel-main">
                            <div class="tbar-panel-content J-panel-content">
                                <div class="tbar-tipbox2">
                                    <div class="tip-inner"><i class="i-loading"></i></div>
                                </div>
                            </div>
                        </div>
                        <div class="tbar-panel-footer J-panel-footer"></div>
                    </div>

                    <!-- 我的优惠券 -->
                    <div id="coupon-div" class="J-content toolbar-panel tbar-panel-history toolbar-animate-in">
                        <h3 class="tbar-panel-header J-panel-header coupon-more">
                            <a href="#none" class="title"> <i></i> <em class="title">我的优惠券</em> </a>
                            <span class="close-panel J-close" onclick="cartPanelView.tbar_panel_close('history');"></span>
                        </h3>
                        <div class="tbar-panel-main">
                            <div class="tbar-panel-content J-panel-content">
                                <div class="jt-history-wrap" style="height: 1000px;overflow-y: scroll;">
                                    <ul style="overflow:auto;">

                                        <li v-for="couponInfo in couponInfoList" :key="couponInfo.id" class="jth-item" style="width: 190px;height:100%; padding: 10px 10px;">
                                            <div class="coupon-price">
                                                <span class="token" v-if="couponInfo.couponType == 'CASH'">{{ couponInfo.benefitAmount }}元</span>
                                                <span class="token" v-if="couponInfo.couponType == 'DISCOUNT'">{{ couponInfo.benefitDiscount }}折</span>
                                                <span class="token" v-if="couponInfo.couponType == 'FULL_REDUCTION'">{{ couponInfo.benefitAmount }}元</span>
                                                <span class="token" v-if="couponInfo.couponType == 'FULL_DISCOUNT'">{{ couponInfo.benefitDiscount }}折</span>

                                                <span class="coupon-name" v-if="couponInfo.couponType == 'CASH'">现金券</span>
                                                <span class="coupon-name" v-if="couponInfo.couponType == 'DISCOUNT'">折扣券</span>
                                                <span class="coupon-name" v-if="couponInfo.couponType == 'FULL_REDUCTION'">满减卷</span>
                                                <span class="coupon-name" v-if="couponInfo.couponType == 'FULL_DISCOUNT'">满件打折卷</span>
                                            </div>
                                            <div class="coupon-info">
                                                <span class="condition" v-if="couponInfo.couponType == 'CASH'">现金券{{ couponInfo.benefitAmount }}元</span>
                                                <span class="condition" v-if="couponInfo.couponType == 'DISCOUNT'">折扣券{{ couponInfo.benefitDiscount }}折</span>
                                                <span class="condition" v-if="couponInfo.couponType == 'FULL_REDUCTION'">满{{ couponInfo.conditionAmount }}减{{ couponInfo.benefitAmount }}元</span>
                                                <span class="condition" v-if="couponInfo.couponType == 'FULL_DISCOUNT'">满{{ couponInfo.conditionNum }}件打{{ couponInfo.benefitDiscount }}折</span>

                                                <p>{{ couponInfo.rangeDesc }}</p>
                                            </div>
                                            <p class="coupon-time">过期时间:{{ couponInfo.expireTime }}</p>
                                            <div class="coupon-seal" v-if="couponInfo.isGet > 0 && couponInfo.couponStatus == 'NOT_USED'"></div>
                                            <div class="coupon-term" v-if="couponInfo.isGet > 0 && couponInfo.couponStatus == 'USED'"></div>
                                            <button type="button" class="sui-btn btn-primary btn-large hm-action-statistics" @click="getCouponInfo(couponInfo.id)" v-if="couponInfo.isGet == 0" :hm-action = "'{\'action_id\':\'get_coupon\', \'item_type\': \'couponId\', \'item\': '+couponInfo.id+'}'">领&nbsp;取</button>
                                        </li>

                                    </ul>
                                </div>
                            </div>
                        </div>
                        <div class="tbar-panel-footer J-panel-footer"></div>
                    </div>

                </div>

                <div class="toolbar-header"></div>

                <!-- 侧栏按钮 -->
                <div class="toolbar-tabs J-tab">
                    <div onclick="cartPanelView.tabItemClick('cart')" class="toolbar-tab tbar-tab-cart" data="购物车"
                         tag="cart">
                        <i class="tab-ico"></i>
                        <em class="tab-text"></em>
                        <span class="tab-sub J-count " id="tab-sub-cart-count">0</span>
                    </div>
                    <div onclick="cartPanelView.tabItemClick('follow')" class="toolbar-tab tbar-tab-follow" data="我的关注"
                         tag="follow">
                        <i class="tab-ico"></i>
                        <em class="tab-text"></em>
                        <span class="tab-sub J-count hide">0</span>
                    </div>
                    <div onclick="cartPanelView.tabItemClick('history')" class="toolbar-tab tbar-tab-history" data="我的足迹"
                         tag="history">
                        <i class="tab-ico"></i>
                        <em class="tab-text"></em>
                        <span class="tab-sub J-count hide">0</span>
                    </div>
                </div>

                <div class="toolbar-footer">
                    <div class="toolbar-tab tbar-tab-top"><a href="#"> <i class="tab-ico  "></i> <em
                            class="footer-tab-text">顶部</em> </a></div>
                    <div class="toolbar-tab tbar-tab-feedback"><a href="#" target="_blank"> <i class="tab-ico"></i> <em
                            class="footer-tab-text ">反馈</em> </a></div>
                </div>

                <div class="toolbar-mini"></div>

            </div>

            <div id="J-toolbar-load-hook"></div>


        </div>
    </div>
</div>
<script type="text/javascript" src="/js/plugins/sui/sui.min.js"></script>
<script type="text/javascript" src="/js/plugins/jquery.jqzoom/jquery.jqzoom.js"></script>
<script type="text/javascript" src="/js/plugins/jquery.jqzoom/zoom.js"></script>
<script src="/js/api/activity.js"></script>
<script src="/js/api/favorInfo.js"></script>
<script src="/js/api/comment.js"></script>
<script src="/js/api/cart.js"></script>
<script th:inline="javascript">
var item = new Vue({
    el: '#itemArray',
    data: {
        skuId: [[${skuInfo.id}]],
        spuId: [[${skuInfo.spuId}]],
        valuesSku: '',
        skuNum: 1,

        selectValuesSkus: [],
        isAddCart: true,

        spuSaleAttrList: [[${spuSaleAttrList}]],
        valuesSkuJson: [[${valuesSkuJson}]],
        activityRuleList: [],
        couponInfoList: [],

        coupon: {
            more: 0, // 0:隐藏  1:显示
        },

        favorLable: '关注',

        commentList: [], // 列表
        pageNo: 1,
        pageSize:10,
        pages: 1,

        commentCount: {
            count: 0,
            count1: 0,
            count2: 0,
            count3: 0,
            rate: '100%'
        }
    },

    created() {
        this.init()
    },

    methods: {
        init() {
            this.spuSaleAttrList.forEach((spuSaleAttr, index) => {
                spuSaleAttr.index = index
                spuSaleAttr.spuSaleAttrValueList.forEach((spuSaleAttrValue) => {
                    if (spuSaleAttrValue.isChecked == 1) {
                        this.selectValuesSkus.push(spuSaleAttrValue.id)
                    }
                })
            })
            console.log('this.valuesSku:' + this.valuesSku)

            //初始化促销活动与优惠券
            this.findActivityAndCoupon()

            //是否关注
            this.isFavor()

            //评论列表
            this.getCommentPageList(1)
            this.countBySpuId()
        },

        addToCart() {
            // 判断是否登录和是否存在临时用户,如果都没有,添加临时用户
            if(!auth.isTokenExist() && !auth.isUserTempIdExist()) {
                auth.setUserTempId()
            }

            // 获取来源信息
            var sourceType = 'query'
            var key = 'sourceType_'+this.skuId
            if(auth.isExist(key)) {
                sourceType = auth.getCookie(key)
                auth.removeCookie(key)
            }

            cart.addToCart(this.skuId, this.skuNum).then(response => {
                // if (response.code==200){
                // }
                //  window.location.href = 'http://cart.gmall.com/addCart.html'
                window.location.href = 'http://cart.gmall.com/addCart.html?skuId=' + this.skuId + '&skuNum=' + this.skuNum + '&sourceType=' + sourceType
                // window.location.href = 'http://cart.gmall.com/addCart.html?skuId=' + this.skuId + '&skuNum=' + this.skuNum
            })
        },

        spuSaleAttrFun(index, spuSaleAttrValueId) {
            debugger
            console.log('spuSaleAttrValueId:' + spuSaleAttrValueId)
            this.isAddCart = true
            //  JSON.parse() : Json 字符串转换为对象! {"115|117":"44","114|117":"45"}
            var valuesSkuJson = JSON.parse(this.valuesSkuJson);

            //根据索引替换已选中的spuSaleAttrValueId
            this.selectValuesSkus[index] = spuSaleAttrValueId // 115|117

            var valuesSku = this.selectValuesSkus.join('|')
            //  3716|3718
            console.log('valuesSku:' + valuesSku)

            //查看新组装的数据是否存在skuId,如果存在跳到该页面,如果不存在控制选中状态
            // 44 = valuesSkuJson["115|117"]
            //  {"3716|3718":"18","3717|3718":"17"}
            var curSkuId = valuesSkuJson[valuesSku]
            //  17
            if (curSkuId) {
                if(curSkuId != this.skuId) {
                    window.location.href = '/' + curSkuId + '.html'
                } else {
                    this.isAddCart = true
                }
            } else {
                //控制购物车是否可选
                this.isAddCart = false
            }

            //控制销售属性是否选中
            this.spuSaleAttrList.forEach((spuSaleAttr, i) => {
                spuSaleAttr.spuSaleAttrValueList.forEach((spuSaleAttrValue) => {
                    if (item == i) {
                        if (spuSaleAttrValueId == spuSaleAttrValue.id) {
                            spuSaleAttrValue.isChecked = 1
                        } else {
                            spuSaleAttrValue.isChecked = 0
                        }
                    }
                })
            })
        },

        add() {
            this.skuNum += 1
        },

        down() {
            if (this.skuNum > 1) {
                this.skuNum -= 1
            }
        },

        compare(val1,val2){
            return val1-val2;
        },

        couponMore() {
            if(this.coupon.more == 0) {
                this.coupon.more = 1

                //动态设置右侧浮动层高度为浏览器可见区域高度,更多出现滚动条
                $(".jt-history-wrap").css("height", $(window).height()-5)
            } else {
                this.coupon.more = 0
            }
        },

        findActivityAndCoupon() {
            activity.findActivityAndCoupon(this.skuId).then(response => {
                this.activityRuleList = response.data.data.activityRuleList
                this.couponInfoList = response.data.data.couponInfoList
            })
        },

        getCouponInfo(couponId) {
            activity.getCouponInfo(couponId).then(response => {
                this.couponInfoList.forEach(item => {
                    if(couponId == item.id) {
                        // 已领取
                        item.isGet = 1
                        // 未使用
                        item.couponStatus = 'NOT_USED'
                    }
                })
            })
        },

        isFavor() {
            favorInfo.isFavor(this.skuId).then(response => {
                if(response.data.data) {
                    this.favorLable = '已关注'
                }
            })
        },

        addFavor() {
            var param = {
                spuId: this.spuId,
                skuId: this.skuId
            }
            favorInfo.add(param).then(response => {
                this.favorLable = '已关注'
            })
        },

        getCommentPageList(page = 1) {
            this.pageNo = page
            if(this.pageNo < 1) this.pageNo = 1
            if(this.pageNo >= this.pages) this.pageNo = this.pages

            comment.getPageList(this.spuId, this.pageNo, this.pageSize).then(response => {
                this.commentList = response.data.data.records
                this.pages = response.data.data.pages
            })
        },

        countBySpuId() {
            comment.countBySpuId(this.spuId).then(response => {
                this.commentCount = response.data.data
            })
        }

    }
})
</script>
</body>
</html>

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值