瀏覽代碼

Merge remote-tracking branch 'remotes/origin/developerD' into developer

# Conflicts:
#	target/www-0.0.1-SNAPSHOT.jar
chao 4 年之前
父節點
當前提交
6694dc003d

+ 4 - 0
src/main/java/com/caimei/www/controller/BaseController.java

@@ -1,5 +1,6 @@
 package com.caimei.www.controller;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.www.pojo.page.BaseLink;
 import com.caimei.www.pojo.page.TopMenu;
 import com.caimei.www.service.page.BaseService;
@@ -64,6 +65,9 @@ public class BaseController {
 		// 头部菜单
 		List<TopMenu> menuList = baseService.getNavMenu();
 		model.addAttribute("topMenuList", menuList);
+		// 分类菜单
+		List<JSONObject> classifyList = baseService.getClassifyJson();
+		model.addAttribute("classifyJson", classifyList);
 		// 底部帮助页
 		List<BaseLink> helpPages = baseService.getHelpPages();
 		model.addAttribute("helpPages", helpPages);

+ 11 - 25
src/main/java/com/caimei/www/controller/unlimited/HomeController.java

@@ -3,9 +3,9 @@ package com.caimei.www.controller.unlimited;
 import com.caimei.www.controller.BaseController;
 import com.caimei.www.pojo.page.ImageLink;
 import com.caimei.www.pojo.JsonModel;
-import com.caimei.www.pojo.page.PageFloor;
 import com.caimei.www.service.page.BaseService;
 import com.caimei.www.service.page.HomeService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Description(接口已搬至spi)
@@ -20,6 +21,7 @@ import java.util.List;
  * @author : Charles
  * @date : 2020/6/15
  */
+@Slf4j
 @Controller
 public class HomeController extends BaseController {
 
@@ -41,8 +43,14 @@ public class HomeController extends BaseController {
     @GetMapping("/index.html")
     public String home(final Model model) {
 		// 获取banner图
-		List<ImageLink> bannerList = baseService.getHomeBanners();
-		model.addAttribute("bannerList", bannerList);
+		List<ImageLink> bannerList = homeService.getHomeBanners();
+		// 首页楼层
+		Map<String, Object> floorMap = homeService.getHomeFloors();
+		// 右侧侧边栏数据
+        Map<String, Object> sideMap = homeService.getHomeSideJson();
+        model.addAttribute("bannerList", bannerList);
+		model.addAttribute("floorJson", floorMap);
+		model.addAttribute("sideJson", sideMap);
         model.addAttribute("msg", "首页");
         return HOME_PATH;
     }
@@ -65,28 +73,6 @@ public class HomeController extends BaseController {
         return SEARCH_CHILDREN;
     }
 
-    /**
-     * 首页推荐专区
-     * @return
-     */
-/*
-    @GetMapping("/home/recommend")
-    @ResponseBody
-    public JsonModel<List<ProductList>> getRecommendProducts() {
-        return homeService.getRecommendProducts();
-    }
-*/
-
-    /**
-     * 首页楼层专题数据
-     * @return
-     */
-    @GetMapping("/home/floor")
-    @ResponseBody
-    public JsonModel<List<PageFloor>> getHomePageFloorData() {
-        return homeService.getHomePageFloorData();
-    }
-
     /**
      * 首页左侧广告图
      * @return

+ 0 - 4
src/main/java/com/caimei/www/mapper/BaseDao.java

@@ -42,8 +42,4 @@ public interface BaseDao {
      */
     List<BaseLink> getFriendLinks();
 
-    /**
-     * 首页轮播
-     */
-    List<ImageLink> getHomeBanners();
 }

+ 31 - 26
src/main/java/com/caimei/www/mapper/HomeDao.java

@@ -17,36 +17,41 @@ import java.util.List;
 @Mapper
 public interface HomeDao {
     /**
-     * 首页楼层
+     * 首页轮播
      */
-    List<PageFloor> getHomePageFloor();
-    /**
-     * 大专题二级楼层
-     */
-    List<PageFloor> getHomeBigTopicFloor();
+    List<ImageLink> getHomeBanners();
     /**
      * 首页左侧广告图
      */
     List<ImageLink> getAdvertising();
-    /**
-     * 首页推荐专区
-     */
-    List<ProductList> getRecommendeds();
-    /**
-     * type6大专题数据列表
-     */
-    List<ImageLink> getBigTopicData(@Param("topId") Integer topId);
-    /**
-     * type4商品专题
-     */
-    List<ImageLink> getCommodityTopicData();
-    /**
-     * type5小专题
-     */
-    List<ImageLink> getSmallTopicData();
-    /**
-     * type3优质供应商
-     */
-    List<ImageLink> getSuppliersTopData();
+
+//    /**
+//     * 首页楼层
+//     */
+//    List<PageFloor> getHomePageFloor();
+//    /**
+//     * 大专题二级楼层
+//     */
+//    List<PageFloor> getHomeBigTopicFloor();
+//    /**
+//     * 首页推荐专区
+//     */
+//    List<ProductList> getRecommendeds();
+//    /**
+//     * type6大专题数据列表
+//     */
+//    List<ImageLink> getBigTopicData(@Param("topId") Integer topId);
+//    /**
+//     * type4商品专题
+//     */
+//    List<ImageLink> getCommodityTopicData();
+//    /**
+//     * type5小专题
+//     */
+//    List<ImageLink> getSmallTopicData();
+//    /**
+//     * type3优质供应商
+//     */
+//    List<ImageLink> getSuppliersTopData();
 
 }

+ 14 - 14
src/main/java/com/caimei/www/service/generate/impl/GenerateHtmlImpl.java

@@ -6,7 +6,7 @@ import com.caimei.www.pojo.page.ImageLink;
 import com.caimei.www.pojo.page.TopMenu;
 import com.caimei.www.service.generate.GenerateHtml;
 import com.caimei.www.service.page.BaseService;
-import com.caimei.www.utils.RequestUtil;
+import com.caimei.www.service.page.HomeService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -53,7 +53,8 @@ public class GenerateHtmlImpl implements GenerateHtml {
     private TemplateEngine templateEngine;
     @Resource
     private BaseService baseService;
-
+    @Resource
+    private HomeService homeService;
     /**
      * 生成静态首页
      */
@@ -74,6 +75,7 @@ public class GenerateHtmlImpl implements GenerateHtml {
             log.info("[静态页服务]:生成静态首页成功! ^_^");
             return "[静态页服务]:生成静态首页成功! ^_^";
         } catch (Exception e) {
+            boolean delete = dest.delete();
             log.error("[静态页服务]:生成静态首页异常!", e);
             return "[静态页服务]:生成静态首页异常!"+e.toString();
         }
@@ -132,20 +134,18 @@ public class GenerateHtmlImpl implements GenerateHtml {
 		// 头部菜单
 		List<TopMenu> menuList = baseService.getNavMenu();
 		map.put("topMenuList", menuList);
+		// 分类菜单
+		List<JSONObject> classifyList = baseService.getClassifyJson();
+		map.put("classifyJson", classifyList);
 		// 获取banner图
-		List<ImageLink> bannerList = baseService.getHomeBanners();
+		List<ImageLink> bannerList = homeService.getHomeBanners();
 		map.put("bannerList", bannerList);
-        // 获取首页楼层
-        String floor = null;
-        try {
-            String floorResult = RequestUtil.sendGet(coreServer+"/commodity/home/floor?userId=0&source=1");
-            log.debug(floorResult);
-            Map<String, Object> floorMap = JSONObject.parseObject(floorResult, Map.class);
-            floor = floorMap.get("data").toString();
-        } catch (Exception e) {
-            log.error("try-catch:",e);
-        }
-        map.put("floorJson", floor);
+		// 首页楼层
+		Map<String, Object> floorMap = homeService.getHomeFloors();
+		map.put("floorJson", floorMap);
+		// 右侧侧边栏数据
+        Map<String, Object> sideMap = homeService.getHomeSideJson();
+		map.put("sideJson", sideMap);
 		// 底部帮助页
 		List<BaseLink> helpPages = baseService.getHelpPages();
 		map.put("helpPages", helpPages);

+ 4 - 2
src/main/java/com/caimei/www/service/page/BaseService.java

@@ -1,10 +1,12 @@
 package com.caimei.www.service.page;
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.www.pojo.page.BaseLink;
 import com.caimei.www.pojo.page.ImageLink;
 import com.caimei.www.pojo.page.TopMenu;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Description
@@ -35,7 +37,7 @@ public interface BaseService {
     List<BaseLink> getFriendLinks();
 
     /**
-     * 首页轮播
+     * 分类菜单
      */
-    List<ImageLink> getHomeBanners();
+    List<JSONObject> getClassifyJson();
 }

+ 10 - 4
src/main/java/com/caimei/www/service/page/HomeService.java

@@ -15,17 +15,23 @@ import java.util.Map;
  * @date : 2020/6/22
  */
 public interface HomeService {
+
     /**
-     * 首页推荐专区
+     * 首页轮播
      */
-    JsonModel<List<ProductList>> getRecommendProducts();
+    List<ImageLink> getHomeBanners();
+
     /**
-     * 首页楼层专题数据
+     * 首页楼层
      */
-    JsonModel<List<PageFloor>> getHomePageFloorData();
+    Map<String, Object> getHomeFloors();
     /**
      * 首页左侧广告图
      */
     JsonModel<List<ImageLink>> getAdvertising();
 
+    /**
+     * 右侧侧边栏数据
+     */
+    Map<String, Object> getHomeSideJson();
 }

+ 16 - 3
src/main/java/com/caimei/www/service/page/impl/BaseServiceImpl.java

@@ -1,10 +1,12 @@
 package com.caimei.www.service.page.impl;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.caimei.www.mapper.BaseDao;
 import com.caimei.www.pojo.page.*;
 import com.caimei.www.service.page.BaseService;
 import com.caimei.www.utils.AppletsLinkUtil;
+import com.caimei.www.utils.RequestUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
@@ -14,6 +16,7 @@ import org.thymeleaf.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -29,6 +32,8 @@ public class BaseServiceImpl implements BaseService {
     private BaseDao baseDao;
     @Value("${caimei.wwwDomain}")
     private String domain;
+	@Value("${caimei.coreServer}")
+	private String coreServer;
     /**
      * 获取搜索热门关键字
      */
@@ -100,11 +105,19 @@ public class BaseServiceImpl implements BaseService {
     }
 
     /**
-     * 首页轮播
+     * 分类菜单
      */
     @Override
-    public List<ImageLink> getHomeBanners() {
-        return baseDao.getHomeBanners();
+    public List<JSONObject> getClassifyJson() {
+        try {
+            String floorResult = RequestUtil.sendGet(coreServer+"/commodity/classify?typeSort=0&source=www");
+            log.debug(floorResult);
+            Map<String, Object> floorMap = JSONObject.parseObject(floorResult, Map.class);
+            return JSONObject.parseObject(String.valueOf(floorMap.get("data")), List.class);
+        } catch (Exception e) {
+            log.error("try-catch:",e);
+            return null;
+        }
     }
 
 }

+ 40 - 41
src/main/java/com/caimei/www/service/page/impl/HomeServiceImpl.java

@@ -1,5 +1,7 @@
 package com.caimei.www.service.page.impl;
 
+import com.alibaba.fastjson.JSONObject;
+import com.caimei.www.mapper.BaseDao;
 import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.mapper.HomeDao;
 import com.caimei.www.pojo.page.PageFloor;
@@ -8,6 +10,7 @@ import com.caimei.www.pojo.page.ProductList;
 import com.caimei.www.service.page.HomeService;
 import com.caimei.www.utils.ImageUtil;
 import com.caimei.www.utils.PriceUtil;
+import com.caimei.www.utils.RequestUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.Cacheable;
@@ -15,6 +18,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Description
@@ -26,59 +30,54 @@ import java.util.List;
 @Service
 public class HomeServiceImpl implements HomeService {
     @Resource
-    private HomeDao homeDao;
+    private BaseDao baseDao;
     @Value("${caimei.wwwDomain}")
+    @Resource
+    private HomeDao homeDao;
     private String domain;
+	@Value("${caimei.coreServer}")
+	private String coreServer;
+	@Value("${caimei.spiServer}")
+	private String spiServer;
+
+    /**
+     * 首页轮播
+     */
+    @Override
+    public List<ImageLink> getHomeBanners() {
+        return homeDao.getHomeBanners();
+    }
 
     /**
-     * 首页推荐专区商品
+     * 首页楼层
      */
     @Override
-    @Cacheable(value = "getRecommendProducts", key="'www'", unless="#result == null")
-    public JsonModel<List<ProductList>> getRecommendProducts() {
-        List<ProductList> list = homeDao.getRecommendeds();
-        if (list.size() > 0) {
-            // 设置价格等级 及 老图片路径
-            list.forEach(product -> {
-                 product.setPriceGrade(PriceUtil.getpriceGrade(product.getPrice()));
-                 product.setPrice(0d);
-                 product.setImage(ImageUtil.getImageURL("product", product.getImage(), 0, domain));
-            });
+    public Map<String, Object> getHomeFloors() {
+        try {
+            String floorResult = RequestUtil.sendGet(coreServer+"/commodity/home/floor?userId=0&source=1");
+            log.debug(floorResult);
+            Map<String, Object> floorMap = JSONObject.parseObject(floorResult, Map.class);
+            return JSONObject.parseObject(String.valueOf(floorMap.get("data")), Map.class);
+        } catch (Exception e) {
+            log.error("try-catch:",e);
+            return null;
         }
-        return JsonModel.success(list);
     }
 
     /**
-     * 首页楼层专题数据
+     * 右侧侧边栏数据
      */
     @Override
-    public JsonModel<List<PageFloor>> getHomePageFloorData() {
-        // 大专题:6,小专题:5,商品专题:4,优质供应商:3
-        List<PageFloor> floorList = homeDao.getHomePageFloor();
-        floorList.forEach(floor -> {
-            if(floor.getType() == 6){
-                // 6大专题二级楼层
-                List<PageFloor> bigTopicFloors = homeDao.getHomeBigTopicFloor();
-                bigTopicFloors.forEach(bigTopic -> {
-                    List<ImageLink>  topicData = homeDao.getBigTopicData(bigTopic.getId());
-                    bigTopic.setFloorData(topicData);
-                });
-                floor.setSubFloors(bigTopicFloors);
-            } else if (floor.getType() == 5){
-                // 5小专题
-                List<ImageLink>  topicData5 = homeDao.getSmallTopicData();
-                floor.setFloorData(topicData5);
-            } else if (floor.getType() == 4){
-                // 4商品专题
-                List<ImageLink>  topicData4 = homeDao.getCommodityTopicData();
-                floor.setFloorData(topicData4);
-            } else if (floor.getType() == 3){
-                // 3优质供应商
-                List<ImageLink>  topicData3 = homeDao.getSuppliersTopData();
-                floor.setFloorData(topicData3);
-            }
-        });
-        return JsonModel.success(floorList);
+    public Map<String, Object> getHomeSideJson() {
+        try {
+            String sideResult = RequestUtil.sendGet(spiServer+"/home/top/data?source=1");
+            log.debug(sideResult);
+            Map<String, Object> sideMap = JSONObject.parseObject(sideResult, Map.class);
+            return JSONObject.parseObject(String.valueOf(sideMap.get("data")), Map.class);
+        } catch (Exception e) {
+            log.error("try-catch:",e);
+            return null;
+        }
     }
 
     /**

+ 0 - 6
src/main/resources/mapper/BaseMapper.xml

@@ -53,10 +53,4 @@
 		from new_page_friendship_link
 		where delFlag = 0 order by id
     </select>
-    <select id="getHomeBanners" resultType="com.caimei.www.pojo.page.ImageLink">
-		select id, title, link, image
-		from new_page_homeimage
-		where wwwEnabledStatus = 1
-		order by sort desc, createDate desc
-    </select>
 </mapper>

+ 89 - 83
src/main/resources/mapper/HomeMapper.xml

@@ -1,94 +1,100 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.www.mapper.HomeDao">
-	<select id="getHomePageFloor" resultType="com.caimei.www.pojo.page.PageFloor">
-		select id, type, floorTitle as title, floorDetail as detail
-		from new_page_floor
-		where delFlag = 0 and wwwEnabledStatus = '1'
-		order by sort
-	</select>
-	<select id="getHomeBigTopicFloor" resultType="com.caimei.www.pojo.page.PageFloor">
-		select id, title, description as detail
-		from cm_page_big_topic
-		where delFlag = 0 and enabledStatus = '1'
-		order by sort
-	</select>
+    <select id="getHomeBanners" resultType="com.caimei.www.pojo.page.ImageLink">
+		select id, title, link, image
+		from new_page_homeimage
+		where wwwEnabledStatus = 1
+		order by sort desc, createDate desc
+    </select>
+
 	<select id="getAdvertising" resultType="com.caimei.www.pojo.page.ImageLink">
 		select id, adTitle as title, link, adImage as image
 		from new_page_advertising
 		where delFlag = 0
 		order by sort, createDate desc
 	</select>
-	<select id="getRecommendeds" resultType="com.caimei.www.pojo.page.ProductList">
-		select
-			p.productID as id,
-			p.`name` as `name`,
-			br.name as brand,
-			p.mainImage as image,
-			p.price1 as price,
-			p.unit as unit,
-			p.price1TextFlag as priceFlag,
-			p.actType as actType
-		from product p
-		left join cm_brand as br on p.brandID = br.id
-		where p.validFlag != 0
-		and p.actFlag = 1
-		and (p.actType = 1 or p.actType = 2)
-		and p.shopID not in (SELECT s.`value` FROM `sys_dict` s WHERE s.type='heheShopID')
-		order by p.actSort
-	</select>
-	<select id="getBigTopicData" resultType="com.caimei.www.pojo.page.ImageLink">
-		select
-            id,
-            title,
-            link,
-            image
-		from cm_page_big_topic_floor
-		<where>
-			delFlag = 0 and enabledStatus = '1'
-			<if test = "topId != null and topId != ''">
-				and bigTopicId = #{topId}
-			</if>
-		</where>
-		order by sort ,enabledStatus ,createDate
-		limit 0,5
-	</select>
-    <select id="getCommodityTopicData" resultType="com.caimei.www.pojo.page.ImageLink">
-		select
-            id,
-            title,
-            link,
-            image,
-            beginTime,
-            endTime
-		from new_page_commodity_topic
-		where wwwEnabledStatus = 1
-		and <![CDATA[ endTime > sysdate() ]]>
-		and <![CDATA[ beginTime < sysdate() ]]>
-		order by sort
-		limit 0,3
-    </select>
-	<select id="getSmallTopicData" resultType="com.caimei.www.pojo.page.ImageLink">
-		select
-            id,
-            title,
-            link,
-            image
-		from new_page_small_topic
-		where wwwEnabledStatus = 1
-		order by sort
-		limit 0,4
-	</select>
-	<select id="getSuppliersTopData" resultType="com.caimei.www.pojo.page.ImageLink">
-		select
-            id,
-            supplierName as title,
-            link,
-            image
-		from new_page_quality_supplier
-		where delFlag = 0 and wwwEnabledStatus = 1
-		order by sort
-	</select>
-
 
+	<!--	<select id="getHomePageFloor" resultType="com.caimei.www.pojo.page.PageFloor">-->
+<!--		select id, type, floorTitle as title, floorDetail as detail-->
+<!--		from new_page_floor-->
+<!--		where delFlag = 0 and wwwEnabledStatus = '1'-->
+<!--		order by sort-->
+<!--	</select>-->
+<!--	<select id="getHomeBigTopicFloor" resultType="com.caimei.www.pojo.page.PageFloor">-->
+<!--		select id, title, description as detail-->
+<!--		from cm_page_big_topic-->
+<!--		where delFlag = 0 and enabledStatus = '1'-->
+<!--		order by sort-->
+<!--	</select>-->
+<!--	<select id="getRecommendeds" resultType="com.caimei.www.pojo.page.ProductList">-->
+<!--		select-->
+<!--			p.productID as id,-->
+<!--			p.`name` as `name`,-->
+<!--			br.name as brand,-->
+<!--			p.mainImage as image,-->
+<!--			p.price1 as price,-->
+<!--			p.unit as unit,-->
+<!--			p.price1TextFlag as priceFlag,-->
+<!--			p.actType as actType-->
+<!--		from product p-->
+<!--		left join cm_brand as br on p.brandID = br.id-->
+<!--		where p.validFlag != 0-->
+<!--		and p.actFlag = 1-->
+<!--		and (p.actType = 1 or p.actType = 2)-->
+<!--		and p.shopID not in (SELECT s.`value` FROM `sys_dict` s WHERE s.type='heheShopID')-->
+<!--		order by p.actSort-->
+<!--	</select>-->
+<!--	<select id="getBigTopicData" resultType="com.caimei.www.pojo.page.ImageLink">-->
+<!--		select-->
+<!--            id,-->
+<!--            title,-->
+<!--            link,-->
+<!--            image-->
+<!--		from cm_page_big_topic_floor-->
+<!--		<where>-->
+<!--			delFlag = 0 and enabledStatus = '1'-->
+<!--			<if test = "topId != null and topId != ''">-->
+<!--				and bigTopicId = #{topId}-->
+<!--			</if>-->
+<!--		</where>-->
+<!--		order by sort ,enabledStatus ,createDate-->
+<!--		limit 0,5-->
+<!--	</select>-->
+<!--    <select id="getCommodityTopicData" resultType="com.caimei.www.pojo.page.ImageLink">-->
+<!--		select-->
+<!--            id,-->
+<!--            title,-->
+<!--            link,-->
+<!--            image,-->
+<!--            beginTime,-->
+<!--            endTime-->
+<!--		from new_page_commodity_topic-->
+<!--		where wwwEnabledStatus = 1-->
+<!--		and <![CDATA[ endTime > sysdate() ]]>-->
+<!--		and <![CDATA[ beginTime < sysdate() ]]>-->
+<!--		order by sort-->
+<!--		limit 0,3-->
+<!--    </select>-->
+<!--	<select id="getSmallTopicData" resultType="com.caimei.www.pojo.page.ImageLink">-->
+<!--		select-->
+<!--            id,-->
+<!--            title,-->
+<!--            link,-->
+<!--            image-->
+<!--		from new_page_small_topic-->
+<!--		where wwwEnabledStatus = 1-->
+<!--		order by sort-->
+<!--		limit 0,4-->
+<!--	</select>-->
+<!--	<select id="getSuppliersTopData" resultType="com.caimei.www.pojo.page.ImageLink">-->
+<!--		select-->
+<!--            id,-->
+<!--            supplierName as title,-->
+<!--            link,-->
+<!--            image-->
+<!--		from new_page_quality_supplier-->
+<!--		where delFlag = 0 and wwwEnabledStatus = 1-->
+<!--		order by sort-->
+<!--	</select>-->
 </mapper>

+ 72 - 356
src/main/resources/static/css/index/index_new.h5.css

@@ -19,359 +19,75 @@
 #recommendBox .swiper-pagination .swiper-pagination-bullet{display:block;width:2vw;border-width:1vw 1px;border-color:transparent;cursor:pointer;background:none;font-size:0;opacity:.2}
 #recommendBox .swiper-pagination .swiper-pagination-bullet:before{content:"";display:block;width:100%;height:.6vw;background:#E15616;border-radius:.3vw}
 #recommendBox .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active{width:3.8vw;opacity:1}
- .section_page{
-        width: 100%;
-        height: auto;
-    }
-    .section_page .section_page_title{
-        padding: 2.4vw 0 2.4vw 3.2vw;
-        position: relative
-    }
-    .section_page .section_page_title h1{
-        font-weight: bold;
-        color: #4a4f58;
-        font-size: 4.8vw;
-        line-height: 9.7vw;
-    }
-    .section_page .section_page_title p{
-        font-weight: normal;
-        color: #93979f;
-        font-size: 3.4vw;
-        line-height: 4.3vw;
-    }
-    .section_page .page_main_item{
-        width: 45.6vw !important;
-        height: 68vw;
-        overflow: hidden;
-        margin: 0 1.3vw 2.6vw 1.3vw;
-        background: #fff;
-        text-align: left;
-    }
-    .section_page .page_main_image{
-        width: 45.6vw;
-        height: 45.6vw;
-    }
-    .section_page .page_main_text{
-        padding: 0 3.2vw;
-        height: 9.3vw;
-        line-height: 5vw;
-        font-size: 3.4vw;
-        vertical-align: middle;
-        word-break: break-all;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        display: -webkit-inline-box;
-        -webkit-line-clamp: 2;
-        -webkit-box-orient: vertical;
-        margin-top: 1vw;
-    }
-    .section_page .page_main_item.ad_02 img,.section_page .page_main_item.ad_03 img,.section_page .page_main_item.ad_01 img{
-        height: 100%;
-        width: 100%;
-    }
-    .section_page .page_main_price{
-        width: 100%;
-        box-sizing: border-box;
-        padding:0 3.2vw;
-    }
-    .section_page .page_main_price .price_text_tag{
-        width: 100%;
-        box-sizing: border-box;
-        float: left;
-    }
-    .section_page .page_main_price .main_price_show{color:#f94b4b }
-    .section_page .page_main_price .main_price_unde{
-        width: 100%;
-        height: 6.5vw;
-        line-height: 6.5vw;
-        font-size: 3.4vw;
-        color: #4a4f58;
-        text-align: left;
-        float: left;
-    }
-    .section_page .page_main_price .price_text_tag .listTag{
-        padding: 0 2vw;
-        border: .27vw solid #ffe6dc;
-        background: none;
-        font-size: 2.8vw;
-        float: left;
-        height: 4.2vw;
-        line-height: 4.2vw;
-    }
-    .section_page .page_main_item.ad_01,.section_page .page_main_li.ad_01{
-        width: 93.6vw !important;
-        height: 24vw;
-    }
-    .section_page .section_page_main{
-        margin: auto;
-        width: 97vw;
-        height: 140vw;
-        overflow: hidden;
-    }
-    .section_page .section_page_main.type_03 {
-        height: 167vw;
-    }
-    .section_page .section_page_more .more{
-        width: 20vw;
-        height: 6.4vw;
-        margin: 5vw auto;
-        border: .27vw solid #cccccc;
-        color: #909090;
-        font-size: 3vw;
-        line-height: 6.4vw;
-        border-radius: .54vw;
-        position: relative;
-        text-indent: 2vw;
-    }
-    .section_page .section_page_more .more .icon:before {
-        background-position: -51.5vw 0px;
-        width:5.4vw;
-        height: 6.7vw;
-        right: 0;
-        position: absolute;
-    }
-    .section_page .page_main_li{
-        width: 21.6vw;
-        height: 26.6vw;
-        float: left;
-        margin-right: 2.4vw;
-        margin-bottom: 2.4vw;
-        background-color: #FFFFFF;
-        display: block;
-    }
-    .section_page .page_main_li .page_main_logo{
-        width: 100%;
-        height: 21.6vw;
-        display: block;
-        float: left;
-    }
-    .section_page .page_main_li .page_main_name{
-        width: 100%;
-        height: 5vw;
-        float: left;
-        line-height: 5vw;
-        text-align: center;
-        font-size: 2.6vw;
-        color: #4a4f58;
-        background-color: #f9f9f9;
-    }
-     .section_page_bottom{
-        width:97vw;
-        padding: 3.2vw;
-        overflow: hidden;
-    }
-    .page_main_li.ad_01 img{
-        width: 100%;
-        height: 100%;
-    }
-    .section_right{
-        padding: 3.2vw;
-    }
-    .box {
-        white-space: nowrap;
-        overflow-x: auto;
-    }
-    .section_right .section_right_item{
-        display: inline-block;
-        width: 42.2vw;
-        height: 61.6vw;
-        background: #fff;
-        margin-right: 2.4vw;
-        flex-shrink: 0;
-    }
-    .section_right .right_item_title{
-        overflow: hidden;
-        padding: 2.4vw;
-    }
-    .section_right .right_item_title p{
-        float: left;
-        font-size: 3.4vw;
-        font-weight: bold;
-        color: #4a4f58;
-        text-align: left
-    }
-    .section_right .right_item_title a{
-        display: inline-block;
-        float: right;
-        font-size: 3.2vw;
-        color: #909090;
-        text-align: right;
-    }
-    .section_right .right_item_main{
-        height: auto;
-        padding: .54vw 2.4vw;
-    }
-    .section_right .item_banner{
-        width: 37.4vw;
-        height: 37.4vw;
-        display: block;
-        position: relative;
-    }
-   .section_right .item_banner img{
-       width: 100%;
-       height: 100%;
-   }
-   .section_right .item_banner .name{
-        width: 100%;
-        height: 6.4vw;
-        position: absolute;
-        bottom: 0;
-        background: rgba(0,0,0,0.4);
-        line-height: 6.4vw;
-        font-size: 3.2vw;
-        color: #ffffff;
-        text-align: left;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        padding: 0 2.7vw;
-        box-sizing: border-box;
-   }
-   .section_right .item_banner .statu{
-        height: 5.8vw;
-        border-radius: 2.9vw;
-        background: rgba(0,0,0,0.4);
-        position: absolute;
-        left:2vw;
-        top: 2vw;
-   }
-   .section_right .item_banner .statu p{
-        float: left;
-        width: 13.3vw;
-        text-align: center;
-        font-size:2.6vw;
-        line-height: 5.8vw;
-        color: #FFF;
-   }
-   .section_right .item_banner .statu i {
-        display: block;
-        width: 3.7vw;
-        height: 3.7vw;
-        float: left;
-        margin:1.1vw .54vw 0 .54vw;
-    }
-    .section_right .item_text .item_text_name{
-        text-align: left;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        box-sizing: border-box;
-        position: relative;
-        color: #4a4f58;
-        font-size: 3.2vw;
-        padding-left: 2.7vw;
-    }
-    .section_right  .item_text .item_text_name:before{
-        content: '';
-        width: 1.1vw;
-        height: 1.1vw;
-        border-radius: 50%;
-        background-color: #cccccc;
-        position: absolute;
-        left: 0;
-        top: 1.7vw
-    }
-    .section_page .section_page_main.max{
-        height:auto;
-    }
-    .section_page .page_main_item.ad_01.bottom {
-        margin: 2.4vw auto;
-        display: block;
-    }
-     .section_page .page_main_price .icon:before { width:15.8vw;height: 5vw}
-    .section_page .page_main_price .price_grade_1:before{
-        background-position: -84vw -69.5vw;
-    }
-    .section_page .page_main_price .price_grade_2:before{
-        background-position: -84vw -76.5vw;
-    }
-    .section_page .page_main_price .price_grade_3:before{
-        background-position: -84vw -83.7vw;
-    }
-    .section_page .page_main_price .price_grade_4:before{
-         background-position: -84vw -90.7vw;
-    }
-    .section_page .page_main_price .price_grade_5:before{
-        background-position: -84vw -97.5vw;
-    }
-    .section_page .page_main_price .main_price_none .listTag{
-        padding: 0 2vw;
-        border: .27vw solid #ffe6dc;
-        background: none;
-        font-size: 2.8vw;
-        float: right;
-    }
-    .section_page .page_main_price .price_grade{
-        display: block;
-        height: 7vw;
-        line-height: 7vw;
-        color: #4A4F58;
-        font-style: normal;
-        float: left;
-    }
-    .section_page .page_main_price .price_grade .icon {
-        display: inline-block;
-        font-size: 0;
-        height: 5vw;
-        line-height: 5vw;
-        vertical-align: text-bottom;
-    }
-.section_page .page_main_tag {
-        color: #9aa5b5;
-        margin:1vw 3.2vw;
-        border: .27vw solid #e3ebf7;
-        display: inline-block;
-        padding: 0 1.3vw;
-        border-radius: .54vw;
-    }
-.price_grade .bold{font-weight: bold}
-.section_right .item_banner .statu .icon-live{
-    display: block;
-    width: 3vw;
-    height: 3vw;
-    float: left;
-    margin: 1.6vw 0 0 1.6vw;
-    background: url("/img/live/icon-live.h5.gif");
-    background-size: cover;
-}
-.section_right .item_banner .statu .mIcon.icon-end:before{
-    width: 5.3vw;
-    height: 4vw;
-    background-position: -63.8vw -69vw;
-}
-.section_right .item_banner .statu .mIcon.icon-wart:before{
-    width:5.3vw;
-    height: 4vw;
-    background-position: -59vw -69vw;
-}
- .hotList .section_page_main.swiper-wrapper{
-     height: inherit;
- }
- .floorCon{width: 97vw;margin: auto}
-.section_page .page_main_price .price_text_tag.right-box{
-    float: right;
-    width: auto;
-    margin-top: 1vw;
-}
-.section_page .page_main_text .tag{
-     width: 11.3vw;
-    height: 4.3vw;
-    line-height: 4.3vw;
-    font-size: 2.8vw;
-    display: inline-block;
-    margin-right: 1.3vw;
-    text-align: center;
-    color: #FFFFFF !important;
-    background-image: linear-gradient(270deg,
-            #f9c023 0%,
-            #f83600 100%);
-    border-radius: 0px 10px 0px 0px;
-    margin-top: .5vw;
-}
-.Popup{position: fixed;background: rgba(34,39,46, 0.5);top: 0;left: 0;width: 100%;height: 100%;z-index: 99999;opacity: 0;}
-.Popup.show{opacity: 1;}
-.Popup .show_popup{width: 97vw;height: 73.6vw;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;}
-.bg_img img{width: 100%;height: 100%;}
-.bg_icon{text-align: right;position: absolute;right: 10vw;}
-.bg_icon .mIcon{width: 10vw;height: 10vw;display: inline-block;}
-.bg_icon .mIcon:before{width: 10vw;height: 10vw;background-position: -33.3vw -77.3vw;cursor: pointer;}
+/* 楼层 */
+ .section_page{width:100%;height:auto}
+.section_page .section_page_title{padding:2.4vw 0 2.4vw 3.2vw;position:relative}
+.section_page .section_page_title h1{font-weight:bold;color:#4a4f58;font-size:4.8vw;line-height:9.7vw}
+.section_page .section_page_title p{font-weight:normal;color:#93979f;font-size:3.4vw;line-height:4.3vw}
+.section_page .page_main_item{width:45.6vw !important;height:68vw;overflow:hidden;margin:0 1.3vw 2.6vw 1.3vw;background:#fff;text-align:left}
+.section_page .page_main_image{width:45.6vw;height:45.6vw}
+.section_page .page_main_text{padding:0 3.2vw;height:9.3vw;line-height:5vw;font-size:3.4vw;vertical-align:middle;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-inline-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1vw}
+.section_page .page_main_item.ad_02 img,.section_page .page_main_item.ad_03 img,.section_page .page_main_item.ad_01 img{height:100%;width:100%}
+.section_page .page_main_price{width:100%;box-sizing:border-box;padding:0 3.2vw}
+.section_page .page_main_price .price_text_tag{width:100%;box-sizing:border-box;float:left}
+.section_page .page_main_price .main_price_show{color:#f94b4b}
+.section_page .page_main_price .main_price_login,.section_page .page_main_price .main_price_show.none{display:none}
+.section_page .page_main_price .main_price_unde{width:100%;height:6.5vw;line-height:6.5vw;font-size:3.4vw;color:#4a4f58;text-align:left;float:left}
+.section_page .page_main_price .price_text_tag .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw}
+.section_page .section_page_main.section_6{height:auto}
+.section_page .section_page_main.section_6 .section_page_more{display:none}
+.section_page .section_page_main.section_3,.section_page .section_page_main.section_4,.section_page .section_page_main.section_5{height:167vw}
+.section_page_main.section_3 .page_main_item.ad_01,.section_page_main.section_4 .page_main_item.ad_01,.section_page_main.section_5 .page_main_item.ad_01,.section_page_main.section_6 .page_main_item.ad_01,.section_page .page_main_li.ad_01{width:93.6vw !important;height:24vw}
+.section_page .section_page_main{margin:auto;width:97vw;height:140vw;overflow:hidden}
+.section_page .section_page_main.type_03{height:167vw}
+.section_page .section_page_more{display:none}
+.section_page .section_page_more.show{display:block}
+.section_page .section_page_more .more{width:20vw;height:6.4vw;margin:5vw auto;border:.27vw solid #cccccc;color:#909090;font-size:3vw;line-height:6.4vw;border-radius:.54vw;position:relative;text-indent:2vw}
+.section_page .section_page_more .more .icon:before{background-position:-51.5vw 0px;width:5.4vw;height:6.7vw;right:0;position:absolute}
+.section_page .page_main_li{width:21.6vw;height:26.6vw;float:left;margin-right:2.4vw;margin-bottom:2.4vw;background-color:#FFFFFF;display:block}
+.section_page .page_main_li .page_main_logo{width:100%;height:21.6vw;display:block;float:left}
+.section_page .page_main_li .page_main_name{width:100%;height:5vw;float:left;line-height:5vw;text-align:center;font-size:2.6vw;color:#4a4f58;background-color:#f9f9f9}
+.section_page_bottom{width:97vw;padding:3.2vw;overflow:hidden}
+.page_main_li.ad_01 img{width:100%;height:100%}
+.section_right{padding:3.2vw}
+.box{white-space:nowrap;overflow-x:auto}
+.section_right .section_right_item{display:inline-block;width:42.2vw;height:61.6vw;background:#fff;margin-right:2.4vw;flex-shrink:0}
+.section_right .right_item_title{overflow:hidden;padding:2.4vw}
+.section_right .right_item_title p{float:left;font-size:3.4vw;font-weight:bold;color:#4a4f58;text-align:left}
+.section_right .right_item_title a{display:inline-block;float:right;font-size:3.2vw;color:#909090;text-align:right}
+.section_right .right_item_main{height:auto;padding:.54vw 2.4vw}
+.section_right .item_banner{width:37.4vw;height:37.4vw;display:block;position:relative}
+.section_right .item_banner img{width:100%;height:100%}
+.section_right .item_banner .name{width:100%;height:6.4vw;position:absolute;bottom:0;background:rgba(0,0,0,0.4);line-height:6.4vw;font-size:3.2vw;color:#ffffff;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2.7vw;box-sizing:border-box}
+.section_right .item_banner .statu{height:5.8vw;border-radius:2.9vw;background:rgba(0,0,0,0.4);position:absolute;left:2vw;top:2vw}
+.section_right .item_banner .statu p{float:left;width:13.3vw;text-align:center;font-size:2.6vw;line-height:5.8vw;color:#FFF}
+.section_right .item_banner .statu i{display:block;width:3.7vw;height:3.7vw;float:left;margin:1.1vw .54vw 0 .54vw}
+.section_right .item_text .item_text_name{text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box;position:relative;color:#4a4f58;font-size:3.2vw;padding-left:2.7vw}
+.section_right  .item_text .item_text_name:before{content:'';width:1.1vw;height:1.1vw;border-radius:50%;background-color:#cccccc;position:absolute;left:0;top:1.7vw}
+.section_page .section_page_main.max{height:auto}
+.section_page .page_main_item.ad_01.bottom{margin:2.4vw auto;display:block}
+.section_page .page_main_price .icon:before{width:15.8vw;height:5vw}
+.section_page .page_main_price .price_grade_1:before{background-position:-84vw -69.5vw}
+.section_page .page_main_price .price_grade_2:before{background-position:-84vw -76.5vw}
+.section_page .page_main_price .price_grade_3:before{background-position:-84vw -83.7vw}
+.section_page .page_main_price .price_grade_4:before{background-position:-84vw -90.7vw}
+.section_page .page_main_price .price_grade_5:before{background-position:-84vw -97.5vw}
+.section_page .page_main_price .main_price_none .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:right}
+.section_page .page_main_price .price_grade,.section_page .page_main_price .price_grade_shop,.section_page .page_main_price .price_grade_club{display:block;height:7vw;line-height:7vw;color:#4A4F58;font-style:normal;float:left}
+.section_page .page_main_price .price_grade .icon,.section_page .page_main_price .price_grade_shop .icon,.section_page .page_main_price .price_grade_club .icon{display:inline-block;font-size:0;height:5vw;line-height:5vw;vertical-align:text-bottom}
+.section_page .page_main_tag{color:#9aa5b5;margin:1vw 3.2vw;border:.27vw solid #e3ebf7;display:inline-block;padding:0 1.3vw;border-radius:.54vw}
+.section_page .page_main_price .bold{font-weight:bold}
+.section_right .item_banner .statu .icon-live{display:block;width:3vw;height:3vw;float:left;margin:1.6vw 0 0 1.6vw;background:url("/img/live/icon-live.h5.gif");background-size:cover}
+.section_right .item_banner .statu .mIcon.icon-end:before{width:5.3vw;height:4vw;background-position:-63.8vw -69vw}
+.section_right .item_banner .statu .mIcon.icon-wart:before{width:5.3vw;height:4vw;background-position:-59vw -69vw}
+.hotList .section_page_main.swiper-wrapper{height:inherit}
+.floorCon{width:97vw;margin:auto}
+.section_page .page_main_price .price_text_tag.right-box{float:right;width:auto;margin-top:1vw}
+.section_page .page_main_text .tag{width:11.3vw;height:4.3vw;line-height:4.3vw;font-size:2.8vw;display:inline-block;margin-right:1.3vw;text-align:center;color:#FFFFFF !important;background-image:linear-gradient(270deg,#f9c023 0%,#f83600 100%);border-radius:0px 10px 0px 0px;margin-top:.5vw}
+.Popup{position:fixed;background:rgba(34,39,46,0.5);top:0;left:0;width:100%;height:100%;z-index:99999;opacity:0}
+.Popup.show{opacity:1}
+.Popup .show_popup{width:97vw;height:73.6vw;position:absolute;top:0;right:0;left:0;bottom:0;margin:auto}
+.bg_img img{width:100%;height:100%}
+.bg_icon{text-align:right;position:absolute;right:10vw}
+.bg_icon .mIcon{width:10vw;height:10vw;display:inline-block}
+.bg_icon .mIcon:before{width:10vw;height:10vw;background-position:-33.3vw -77.3vw;cursor:pointer}

+ 92 - 504
src/main/resources/static/css/index/index_new.pc.css

@@ -2,9 +2,7 @@
 /**
  * PC端
  */
-#container{
-    min-height: 500px;
-}
+#container{min-height: 500px;}
 li{list-style:none;}
 /* 轮播 */
 #swiper-container{width:100%;height:510px;min-width:1184px;overflow:hidden;position:relative;float: left;}
@@ -22,508 +20,99 @@ li{list-style:none;}
 #swiper-container .swiper-pagination span{display:inline-block;border:5px solid transparent;cursor:pointer}
 #swiper-container .swiper-pagination span:before{content:"";display:inline-block;width:14px;height:4px;background:rgba(255,255,255,.4);border-radius:2px}
 #swiper-container .swiper-pagination span.on:before{width:28px;background:#fff}
-
-.section_container{
-    width: 100%;
-    height: auto;
-    float: left;
-}
-.section_container .inner{
-    width:1184px;
-    margin: 0 auto;
-}
-/*左右楼层*/
-.section_left{
-    width: 900px;
-    float:left;
-}
-.section_page{
-    width: 100%;
-    height: auto;
-    float: left;
-}
-.section_page .section_page_title{
-    width: 100%;
-    height: 103px;
-    box-sizing: border-box;
-    padding: 31px 0 16px 0;
-}
-.section_page .section_page_title h1{
-    font-size: 24px;
-    line-height: 31px;
-    text-align: left;
-    color: #4a4f58;
-}
-.section_page .section_page_title p{
-    font-size: 14px;
-    line-height: 19px;
-    text-align: left;
-    color: #93979f;
-    margin-top: 6px;
-}
-.section_page .section_page_main{
-    width: 100%;
-    float: left;
-    height: 568px;
-    overflow: hidden;
-    transition: all 0.6s;
-}
-.section_page .floorCon{
-    width: 100%;
-}
-.section_page .swiper-wrapper-floor{
-    width: 100%;
-    height: 268px;
-}
-.section_page .section_page_main.type_08{
-    height: 268px;
-}
-
-.section_page .section_page_main.type_03{
-    height: 704px;
-}
-.section_page .section_page_main.max{
-    height:auto;
-}
-.section_page  .page_main_item{
-    width: 164px;
-    height: 268px;
-    float: left;
-    margin-right: 16px;
-    margin-bottom: 16px;
-    background-color: #FFFFFF;
-    transition:all 0.4s;
-    display: block;
-}
-.section_page  .page_main_item.default{
-    cursor: default;
-}
-.section_page  .page_main_item.ad_04{
-    border-radius: 2px;
-}
-.section_page  .page_main_item.ad_04:hover{
-    transform:translateY(-5px);
-    box-shadow:0 8px 8px rgba(102,102,102,0.05),0 10px 10px rgba(102,102,102,0.05),0 12px 12px rgba(102,102,102,0.05);
-}
-.section_page .page_main_item.ad_01{
-    width: 884px;
-    height: 120px;
-}
-.section_page .page_main_item.ad_02{
-    width: 524px;
-}
-.section_page .page_main_item.ad_03{
-    width: 344px;
-}
-.section_page .page_main_item_adv{
-    width: 100%;
-    height: 100%;
-    display: block;
-}
-.section_page .page_main_image{
-    width: 164px;
-    height: 164px;
-    display: block;
-    float: left;
-    border-radius: 2px 2px 0 0;
-}
-.section_page .page_main_text{
-    width: 100%;
-    height: 42px;
-    float: left;
-    box-sizing: border-box;
-    margin-top: 10px;
-    padding: 0 8px;
-    white-space: normal;
-    word-break: break-all;
-    overflow: hidden;
-    text-overflow: ellipsis;
-    display: -webkit-box;
-    -webkit-box-orient: vertical;
-    -webkit-line-clamp: 2;
-    line-height: 21px;
-}
-.section_page .page_main_tag{
-    width: 100%;
-    height:24px;
-    float: left;
-    margin-top: 16px;
-    padding: 0 8px;
-}
-.section_page .page_main_tag p{
-    display: block;
-    padding: 0 4px;
-    height:24px;
-    box-sizing: border-box;
-    border: 1px solid #e3ebf7;
-    border-radius: 2px;
-    float: left;
-    font-size: 12px;
-    line-height: 22px;
-    text-align: center;
-    color: #9aa5b5;
-}
-.section_page .page_main_price{
-    width: 100%;
-    height: 54px;
-    float: left;
-    box-sizing: border-box;
-    padding: 0 8px;
-}
-.section_page .page_main_price .main_price_text{
-    width: 100%;
-    height: 54px;
-    float: left;
-    box-sizing: border-box;
-}
-.section_page .page_main_price .main_price_unde{
-    width: 100%;
-    height: 31px;
-    line-height: 31px;
-    font-size: 14px;
-    color: #4a4f58;
-    text-align: left;
-    float: left;
-}
-.section_page .page_main_price .main_price_show{
-    width: 100%;
-    height: 30px;
-    line-height: 30px;
-    font-size: 14px;
-    color: #f94b4b;
-    text-align: left;
-    float: left;
-}
-.section_page .page_main_price .main_price_show.none{
-    color: #999999;
-    text-decoration: line-through;
-}
-.section_page .page_main_price .price_text_tag{
-    width: 100%;
-    height: 22px;
-    box-sizing: border-box;
-    float: left;
-    margin-top: 0px;
-}
-.section_page .page_main_price .price_text_tag .listTag{
-    margin:0;
-    float: left;
-}
-.section_page .page_main_price .main_price_none{
-    width: 100%;
-    height: 24px;
-    box-sizing: border-box;
-    float: left;
-    margin-top: 2px;
-}
-.section_page .page_main_price .main_price_none.sec{
-    margin-top: 25px;
-}
-.section_page .page_main_price .main_price_none .listTag{
-    margin:0;
-}
-.section_page .page_main_price .price_grade{
-    float: left;
-    margin:0;
-    height: 22px;
-    line-height: 22px;
-    color: #4A4F58;
-    font-style: normal;
-    font-size: 14px;
-}
-.section_page .page_main_price .price_grade span{
-    display: inline-block;
-    float: left;
-}
-.section_page .page_main_price .icon:before{
-    width: 67px;
-    height: 22px;
-}
-.section_page .page_main_price .price_grade_1:before{
-    background-position:0 -714px;
-}
-.section_page .page_main_price .price_grade_2:before{
-    background-position:0 -744px;
-}
-.section_page .page_main_price .price_grade_3:before{
-    background-position:0 -774px;
-}
-.section_page .page_main_price .price_grade_4:before{
-    background-position:0 -804px;
-}
-.section_page .page_main_price .price_grade_5:before{
-    background-position:0 -834px;
-}
-.section_page .section_page_more{
-    width: 100%;
-    height: 32px;
-    margin-top: 16px;
-    float: left;
-}
-.section_page .section_page_more .more{
-    width: 98px;
-    height: 32px;
-    line-height: 32px;
-    font-size: 14px;
-    margin:  0 auto;
-    border-radius: 2px;
-    border: 1px solid #cccccc;
-    color: #909090;
-    text-align: left;
-    transition: all 0.2s;
-    cursor: pointer;
-    padding-left: 15px;
-    box-sizing: border-box;
-    position: relative;
-}
-.section_page .section_page_more .more .icon:before{
-    background-position: -93px 7px;
-    width: 20px;
-    height: 32px;
-    right: 0;
-    position: absolute;
-}
-.section_page .section_page_more .more:hover{
-    color: #E15616;
-    border-color: #E15616;
-}
-.section_page .section_page_more .more:hover .icon:before{
-    background-position: -153px 7px;
-}
-/*地库供应商*/
-.section_page .section_page_bottom{
-    width: 100%;
-    float: left;
-    height: auto;
-}
-.section_page  .page_main_li{
-    width: 134px;
-    height: 166px;
-    float: left;
-    margin-right: 16px;
-    margin-bottom: 16px;
-    background-color: #FFFFFF;
-    transition:all 0.4s;
-    display: block;
-}
-.section_page .page_main_li.ad_01{
-    width: 884px;
-    height: 184px;
-}
-.section_page  .page_main_li.ad_02:hover{
-    transform:translateY(-5px);
-    box-shadow:0 8px 8px rgba(102,102,102,0.05),0 10px 10px rgba(102,102,102,0.05),0 12px 12px rgba(102,102,102,0.05);
-}
-.section_page  .page_main_li.ad_02:hover .page_main_name{
-    color: #E15616;
-    font-weight: bold;
-}
-.section_page  .page_main_li .page_main_logo{
-    width: 100%;
-    height: 134px;
-    display: block;
-    float: left;
-}
-.section_page  .page_main_li .page_main_name{
-    width: 100%;
-    height: 32px;
-    float: left;
-    line-height: 32px;
-    text-align: center;
-    font-size: 14px;
-    color: #4a4f58;
-    background-color: #f9f9f9;
-}
+/* 楼层 */
+.section_container{width:100%;height:auto;float:left}
+.section_container .inner{width:1184px;margin:0 auto}
+.section_left{width:900px;float:left}
+.section_page{width:100%;height:auto;float:left}
+.section_page .section_page_title{width:100%;height:103px;box-sizing:border-box;padding:31px 0 16px 0}
+.section_page .section_page_title h1{font-size:24px;line-height:31px;text-align:left;color:#4a4f58}
+.section_page .section_page_title p{font-size:14px;line-height:19px;text-align:left;color:#93979f;margin-top:6px}
+.section_page .section_page_main{width:100%;float:left;height:568px;overflow:hidden;transition:all 0.6s}
+.section_page .floorCon{width:100%}
+.section_page .swiper-wrapper-floor{width:100%;height:268px}
+.section_page .section_page_main.type_08{height:268px}
+.section_page .section_page_main.type_03{height:704px}
+.section_page  .page_main_item{width:164px;height:268px;float:left;margin-right:16px;margin-bottom:16px;background-color:#FFFFFF;transition:all 0.4s;display:block}
+.section_page  .page_main_item.default{cursor:default}
+.section_page  .page_main_item.ad_04{border-radius:2px}
+.section_page  .page_main_item.ad_04:hover{transform:translateY(-5px);box-shadow:0 8px 8px rgba(102,102,102,0.05),0 10px 10px rgba(102,102,102,0.05),0 12px 12px rgba(102,102,102,0.05)}
+.section_page .section_page_main.section_6{height:auto}
+.section_page .section_page_main.section_6 .section_page_more{display:none}
+.section_page .section_page_main.section_3,.section_page .section_page_main.section_4,.section_page .section_page_main.section_5{height:704px}
+.section_page .section_page_main.max{height:auto}
+.section_page_main.section_3 .page_main_item.ad_01,.section_page_main.section_4 .page_main_item.ad_01,.section_page_main.section_5 .page_main_item.ad_01,.section_page_main.section_6 .page_main_item.ad_01{width:884px;height:120px}
+.section_page_main.section_1 .page_main_item.ad_01,.section_page_main.section_2 .page_main_item.ad_01,.section_page_main.section_3 .page_main_item.ad_02,.section_page_main.section_4 .page_main_item.ad_02{width:524px}
+.section_page_main.section_2 .page_main_item.ad_02,.section_page_main.section_4 .page_main_item.ad_03{width:344px}
+.section_page .page_main_item_adv{width:100%;height:100%;display:block}
+.section_page .page_main_image{width:164px;height:164px;display:block;float:left;border-radius:2px 2px 0 0}
+.section_page .page_main_text{width:100%;height:42px;float:left;box-sizing:border-box;margin-top:10px;padding:0 8px;white-space:normal;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:21px}
+.section_page .page_main_tag{width:100%;height:24px;float:left;margin-top:16px;padding:0 8px}
+.section_page .page_main_tag p{display:block;padding:0 4px;height:24px;box-sizing:border-box;border:1px solid #e3ebf7;border-radius:2px;float:left;font-size:12px;line-height:22px;text-align:center;color:#9aa5b5}
+.section_page .page_main_price{width:100%;height:54px;float:left;box-sizing:border-box;padding:0 8px}
+.section_page .page_main_price .main_price_text{width:100%;height:54px;float:left;box-sizing:border-box}
+.section_page .page_main_price .main_price_unde{width:100%;height:31px;line-height:31px;font-size:14px;color:#4a4f58;text-align:left;float:left}
+.section_page .page_main_price .main_price_show{width:100%;height:30px;line-height:30px;font-size:14px;color:#f94b4b;text-align:left;float:left}
+.section_page .page_main_price .main_price_show.none{color:#999999;text-decoration:line-through}
+.section_page .page_main_price .main_price_login,.section_page .page_main_price .main_price_show.none{display:none}
+.section_page .page_main_price .price_text_tag{width:100%;height:22px;box-sizing:border-box;float:left;margin-top:0px}
+.section_page .page_main_price .price_text_tag .listTag{margin:0;float:left}
+.section_page .page_main_price .main_price_none{width:100%;height:24px;box-sizing:border-box;float:left;margin-top:2px}
+.section_page .page_main_price .main_price_none.sec{margin-top:25px}
+.section_page .page_main_price .main_price_none .listTag{margin:0}
+.section_page .page_main_price .price_grade,.section_page .page_main_price .price_grade_shop,.section_page .page_main_price .price_grade_club{float:left;margin:0;height:22px;line-height:22px;color:#4A4F58;font-style:normal;font-size:14px}
+.section_page .page_main_price .price_grade span,.section_page .page_main_price .price_grade_shop span,.section_page .page_main_price .price_grade_club span{display:inline-block;float:left}
+.section_page .page_main_price .icon:before{width:67px;height:22px}
+.section_page .page_main_price .price_grade_1:before{background-position:0 -714px}
+.section_page .page_main_price .price_grade_2:before{background-position:0 -744px}
+.section_page .page_main_price .price_grade_3:before{background-position:0 -774px}
+.section_page .page_main_price .price_grade_4:before{background-position:0 -804px}
+.section_page .page_main_price .price_grade_5:before{background-position:0 -834px}
+.section_page .section_page_more{width:100%;height:32px;margin-top:16px;float:left;display:none}
+.section_page .section_page_more.show{display:block}
+.section_page .section_page_more .more{width:98px;height:32px;line-height:32px;font-size:14px;margin:0 auto;border-radius:2px;border:1px solid #cccccc;color:#909090;text-align:left;transition:all 0.2s;cursor:pointer;padding-left:15px;box-sizing:border-box;position:relative}
+.section_page .section_page_more .more .icon:before{background-position:-93px 7px;width:20px;height:32px;right:0;position:absolute}
+.section_page .section_page_more .more:hover{color:#E15616;border-color:#E15616}
+.section_page .section_page_more .more:hover .icon:before{background-position:-153px 7px}
+/* 底部供应商 */
+.section_page .section_page_bottom{width:100%;float:left;height:auto}
+.section_page  .page_main_li{width:134px;height:166px;float:left;margin-right:16px;margin-bottom:16px;background-color:#FFFFFF;transition:all 0.4s;display:block}
+.section_page .page_main_li.ad_01{width:884px;height:184px}
+.section_page  .page_main_li.ad_02:hover{transform:translateY(-5px);box-shadow:0 8px 8px rgba(102,102,102,0.05),0 10px 10px rgba(102,102,102,0.05),0 12px 12px rgba(102,102,102,0.05)}
+.section_page  .page_main_li.ad_02:hover .page_main_name{color:#E15616;font-weight:bold}
+.section_page  .page_main_li .page_main_logo{width:100%;height:134px;display:block;float:left}
+.section_page  .page_main_li .page_main_name{width:100%;height:32px;float:left;line-height:32px;text-align:center;font-size:14px;color:#4a4f58;background-color:#f9f9f9}
 /*右边区域*/
-.section_right{
-    width: 284px;
-    float: right;
-    box-sizing: border-box;
-    padding-top: 103px;
-}
-.section_right .section_right_item{
-    width: 100%;
-    height: auto;
-    background-color: #FFFFFF;
-    float: left;
-    margin-bottom: 16px;
-    padding: 16px;
-    box-sizing: border-box;
-    border-radius: 2px;
-}
-.section_right .right_item_title{
-    width: 100%;
-    height: 22px;
-    line-height: 22px;
-    float: left;
-    margin-bottom: 8px;
-}
-.section_right .right_item_title p{
-    float: left;
-    font-size: 16px;
-    font-weight: bold;
-    color: #4a4f58;
-    text-align: left;
-}
-.section_right .right_item_title a{
-    display: inline-block;
-    float: right;
-    font-size: 12px;
-    color: #909090;
-    text-align: right;
-}
-.section_right .right_item_title a:hover{
-    color: #E15616;
-    text-decoration: underline;
-}
-.section_right .right_item_main{
-    width: 100%;
-    height: auto;
-}
-.section_right .item_banner{
-    width: 252px;
-    height: 252px;
-    display: block;
-    float: left;
-    position: relative;
-    margin-bottom: 10px;
-}
-.section_right .item_banner img{
-    width: 252px;
-    height: 252px;
-    display: block;
-}
-.section_right .item_banner .name{
-    width: 100%;
-    height: 32px;
-    position: absolute;
-    bottom: 0;
-    background: rgba(0,0,0,0.4);
-    line-height: 32px;
-    font-size: 16px;
-    color: #ffffff;
-    text-align: left;
-    white-space:nowrap;
-    overflow:hidden;
-    text-overflow:ellipsis;
-    padding: 0 10px;
-    box-sizing: border-box;
-}
-.section_right .item_banner .statu{
-    width: 72px;
-    height: 22px;
-    border-radius: 11px;
-    background: rgba(0,0,0,0.4);
-    position: absolute;
-    left: 8px;
-    top: 8px;
-}
-.section_right .item_banner .statu i{
-    display: block;
-    width: 12px;
-    height: 12px;
-    float: left;
-    margin: 6px 0 0 6px;
-}
-.section_right .item_banner .statu .icon-wart{
-    background: url("/img/live/icon-live.png");
-    background-size: cover;
-}
-.section_right .item_banner .statu .icon-live{
-    background: url("/img/live/icon-liveing.gif");
-    background-size: cover;
-}
-.section_right .item_banner .statu .icon-end{
-    width: 11px;
-    height: 12px;
-    margin: 5px 0 0 5px;
-    background: url("/img/live/icon-lives.png");
-    background-size: cover;
-}
-.section_right .item_banner .statu p{
-    float: left;
-    width: 50px;
-    text-align: center;
-    font-size: 12px;
-    line-height: 22px;
-    color: #FFF;
-}
-.section_right  .item_text{
-    display: block;
-    width: 100%;
-    height:26px;
-    line-height: 26px;
-    font-size: 14px;
-    color: #4a4f58;
-    margin: 3px 0;
-}
-.section_right  .item_text .item_text_name{
-    width: 164px;
-    text-align: left;
-    white-space:nowrap;
-    overflow:hidden;
-    text-overflow:ellipsis;
-    padding-left: 12px;
-    box-sizing: border-box;
-    float: left;
-    position: relative;
-}
-.section_right  .item_text .item_text_name.info{
-    width: 100%;
-}
-.section_right  .item_text .item_text_name:before{
-    content: '';
-    width: 4px;
-    height: 4px;
-    border-radius: 50%;
-    background-color: #cccccc;
-    position: absolute;
-    left: 0;
-    top: 11px;
-}
-.section_right  .item_text .item_text_time{
-    float: right;
-}
-.section_right  .item_text:hover{
-    color: #E15616;
-    text-decoration: underline;
-}
-.section_right  .item_text:hover .item_text_name:before{
-    background-color: #E15616;
-}
-#recommendBox .swiper-pagination{
-    width:100%;
-    padding:10px 0;
-    z-index:1;
-    text-align:center;
-    font-size:0;
-}
-#recommendBox .swiper-pagination span{
-    display:inline-block;
-    width:14px;
-    height:4px;
-    border:5px solid transparent;
-    cursor:pointer;
-    opacity:.2;
-}
-#recommendBox .swiper-pagination span:before{
-    content:"";
-    display:inline-block;
-    width:100%;
-    height:4px;
-    background:#E15616;
-    border-radius:2px;
-}
-#recommendBox .swiper-pagination span.on{
-    width:28px;
-    opacity:1;
-}
-footer{
-    width: 100%;
-    height: auto;
-    float: left;
-}
+.section_right{width:284px;float:right;box-sizing:border-box;padding-top:103px}
+.section_right .section_right_item{width:284px;height:auto;background-color:#FFFFFF;float:left;margin-bottom:16px;padding:16px;box-sizing:border-box;border-radius:2px}
+.section_right .section_right_item.fixed{position:fixed;top:200px;width:284px;}
+.section_right .right_item_title{width:100%;height:22px;line-height:22px;float:left;margin-bottom:8px}
+.section_right .right_item_title p{float:left;font-size:16px;font-weight:bold;color:#4a4f58;text-align:left}
+.section_right .right_item_title a{display:inline-block;float:right;font-size:12px;color:#909090;text-align:right}
+.section_right .right_item_title a:hover{color:#E15616;text-decoration:underline}
+.section_right .right_item_main{width:100%;height:auto}
+.section_right .item_banner{width:252px;height:252px;display:block;float:left;position:relative;margin-bottom:10px}
+.section_right .item_banner img{width:252px;height:252px;display:block}
+.section_right .item_banner .name{width:100%;height:32px;position:absolute;bottom:0;background:rgba(0,0,0,0.4);line-height:32px;font-size:16px;color:#ffffff;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 10px;box-sizing:border-box}
+.section_right .item_banner .statu{width:72px;height:22px;border-radius:11px;background:rgba(0,0,0,0.4);position:absolute;left:8px;top:8px}
+.section_right .item_banner .statu i{display:block;width:12px;height:12px;float:left;margin:6px 0 0 6px}
+.section_right .item_banner .statu .icon-wart{background:url("/img/live/icon-live.png");background-size:cover}
+.section_right .item_banner .statu .icon-live{background:url("/img/live/icon-liveing.gif");background-size:cover}
+.section_right .item_banner .statu .icon-end{width:11px;height:12px;margin:5px 0 0 5px;background:url("/img/live/icon-lives.png");background-size:cover}
+.section_right .item_banner .statu p{float:left;width:50px;text-align:center;font-size:12px;line-height:22px;color:#FFF}
+.section_right  .item_text{display:block;width:100%;height:26px;line-height:26px;font-size:14px;color:#4a4f58;margin:3px 0}
+.section_right  .item_text .item_text_name{width:100%;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:12px;box-sizing:border-box;float:left;position:relative}
+.section_right  .item_text .item_text_name:before{content:'';width:4px;height:4px;border-radius:50%;background-color:#cccccc;position:absolute;left:0;top:11px}
+.section_right  .item_text .item_text_time{float:right}
+.section_right .item_text .item_text_name.info{width:164px;}
+.section_right  .item_text:hover{color:#E15616;text-decoration:underline}
+.section_right  .item_text:hover .item_text_name:before{background-color:#E15616}
 
+#recommendBox .swiper-pagination{width:100%;padding:10px 0;z-index:1;text-align:center;font-size:0}
+#recommendBox .swiper-pagination span{display:inline-block;width:14px;height:4px;border:5px solid transparent;cursor:pointer;opacity:.2}
+#recommendBox .swiper-pagination span:before{content:"";display:inline-block;width:100%;height:4px;background:#E15616;border-radius:2px}
+#recommendBox .swiper-pagination span.on{width:28px;opacity:1}
+footer{width:100%;height:auto;float:left}
 
 /* 首页右侧导航 */
 #sideNav{display:none;position:fixed;right:0;margin-right:0;width:88px;z-index:9999;bottom:180px;}
@@ -533,7 +122,6 @@ footer{
 #sideNav .item>a:first-child:before{display:none}
 #sideNav .item>a.on{background:#FEF6F3;color:#E15616}
 
-
 /* 中屏导航与广告显示 */
 @media screen and (max-width:1420px){
     #sideNav,#scrollTop{right:10px;margin-right:0;opacity:.9;}

+ 48 - 75
src/main/resources/static/js/base.js

@@ -49,82 +49,57 @@ var globalHead = new Vue({
         shopId:'',
         userIdentity:'',
         articleType: '',
-        // topMenuList:[],
         isFiexd:false,
-        TabList:[
-            {name:'产品',link:'/product/instrument.html',value:'1'},
-            {name:'仪器',link:'/product/instrument.html',value:'2'}
-        ],
-        NavsList:[],
-        currenIndex:1,
+        classifyIndex:1,
         nav_linkName:''
     },
     methods: {
-        changeline:function(tab){
-            this.currenIndex=tab.value;
+        changeClassify: function(value){
+            this.classifyIndex=value;
         },
-        // GetNavigationMenu :function(){//获取顶部导航分类
-        //     var _self = this;
-        //     PublicApi.GetNavigationMenu({source:1},function(response){
-        //         if(response.code == 0){
-        //             _self.topMenuList = response.data.topMenuList;
-        //         }else{
-        //             CAIMEI.Alert(response.msg, '确定');
-        //         }
-        //     });
-        // },
-        GetProductClassify: function(index) { // 导航分类菜单
-            var _self = this;
-            PublicApi.GetProductClassify({typeSort:index,source :'www'},function(response){
-                if(response.code == 0){
-                    if(index == 1){
-                        var navObject = {
-                            name:'产品',
-                            list:response.data
-                        };
-                        _self.NavsList.push(navObject)
-                    }else{
-                        var navObject = {
-                            name:'仪器',
-                            list:response.data
-                        };
-                        _self.NavsList.push(navObject)
-                    }
-                    if(isPC){
-                        setTimeout(function(){
-                            $('#mainClassify').slide({
-                                mainCell:".clsCon",
-                                titCell:".clsTab a",
-                                trigger: "mouseover"
-                            });
-                        },500);
-                        setTimeout(function(){
-                            $('#mainClassify').slide({
-                                mainCell:".tabItem_right",
-                                titCell:".tabItem_lift a",
-                                trigger: "mouseover"
-                            });
-                        },500);
-                    }else{
-                        setTimeout(function(){
-                            $('#mainClassify').slide({
-                                mainCell:".clsCon",
-                                titCell:".clsTab a",
-                                trigger: "click"
-                            });
-                        },500);
-                        setTimeout(function(){
-                            $('#mainClassify').slide({
-                                mainCell:".tabItem_right",
-                                titCell:".tabItem_lift a",
-                                trigger: "click"
-                            });
-                        },500);
-                    }
-                }else{
-                    CAIMEI.Alert(response.msg, '确定');
-                }
-            });
+        // 初始化分类菜单效果
+        initClassufyTab: function(){
+            if(isPC){
+                setTimeout(function(){
+                    $('#mainClassify').slide({
+                        mainCell:".clsCon",
+                        titCell:".clsTab a",
+                        trigger: "mouseover"
+                    });
+                    $('#mainClassify_1').slide({
+                        mainCell:".tabItem_right",
+                        titCell:".tabItem_lift a",
+                        trigger: "mouseover"
+                    });
+                    $('#mainClassify_2').slide({
+                        mainCell:".tabItem_right",
+                        titCell:".tabItem_lift a",
+                        trigger: "mouseover"
+                    });
+                    $("#mainClassify_2 .tabItem_lift a").eq(0).trigger("mouseover");
+                    $("#mainClassify_1 .tabItem_lift a").eq(0).trigger("mouseover");
+                },500);
+            }else{
+                setTimeout(function(){
+                    $('#mainClassify').slide({
+                        mainCell:".clsCon",
+                        titCell:".clsTab a",
+                        trigger: "click"
+                    });
+                    $('#mainClassify_1').slide({
+                        mainCell:".tabItem_right",
+                        titCell:".tabItem_lift a",
+                        trigger: "click"
+                    });
+                    $('#mainClassify_2').slide({
+                        mainCell:".tabItem_right",
+                        titCell:".tabItem_lift a",
+                        trigger: "click"
+                    });
+                    $("#mainClassify_2 .tabItem_lift a").eq(0).trigger("click");
+                    $("#mainClassify_1 .tabItem_lift a").eq(0).trigger("click");
+                },500);
+            }
         },
         // 头部购物车数据
         getHeadCart: function(userId) {
@@ -185,10 +160,6 @@ var globalHead = new Vue({
         }
     },
     created: function () {
-        // 导航分类数据
-        this.GetProductClassify(1);
-        this.GetProductClassify(2);
-        // this.GetNavigationMenu();
         // 判断登录状态
         if (globalUserData.token) {
             this.loginStatus = true;
@@ -207,6 +178,8 @@ var globalHead = new Vue({
     },
     mounted:function(){
         var _self = this;
+        // 初始化分类菜单效果
+        this.initClassufyTab();
         var userData = JSON.parse(window.localStorage.getItem('userInfo'));
         if(userData!=null) {
             this.userIdentity = userData.userIdentity;

+ 155 - 190
src/main/resources/static/js/index.js

@@ -2,78 +2,41 @@ var homeData = new Vue({
     el: '#container',
     data: {
         userId:0,
-        images: [],
-        listLoading:true,
-        advertising: [],
         asideNav: [],
-        productIdArr:[],
         liveList:[],//右侧直播模块
         cmImageList:[],//右侧活动模块
         infoList:[],//右侧文章模块
-        pageList:[],//左侧楼层
-        supplierImage:'',//供应商banner
-        supplierWwwLink:'',//供应商banner 链接
-        supplierList:[],//供应商列表
-        // topMenuList:[],
-        showflag:false,
+        popupFlag:false
     },
     filters: {
-        statusType:function(value) {
-            switch (value) {
-                case 1:
-                    return  '未开始';
-                    break;
-                case 2:
-                    return  '直播中';
-                    break;
-                case 3:
-                    return  '看回放';
-                    break;
-            }
-        },
-        statusTypeClass:function(value) {
-            switch (value) {
-                case 1:
-                    return  'icon-wart';
-                    break;
-                case 2:
-                    return  'icon-live';
-                    break;
-                case 3:
-                    return  'icon-end';
-                    break;
-            }
-        },
-        NumFormat:function(value) {//处理金额
+        NumFormat: function(value) {//处理金额
             return Number(value).toFixed(2);
         },
     },
     methods: {
-        zhuanti:function(){
-            this.showflag=false;
+        // 美博会弹窗链接
+        popupPage:function(){
+            this.popupFlag=false;
             window.location.href='/activity/activityTopic.html?id=306&name=美博会';
             localStorage.setItem('lockTime',Date.now());
             window.localStorage.setItem('isActivityStatus',true);
         },
-        closepopup:function(){
-              this.showflag=false;
+        // 关闭美博会弹窗
+        closePopup:function(){
+              this.popupFlag=false;
               $('.Popup').slideUp(100);
               localStorage.setItem('lockTime',Date.now());
               localStorage.setItem('isActivityStatus',true);
         },
-        // GetBanners: function(){
-        //     var _self = this;
-        //     PublicApi.GetHomeBanner({},function(response){
-        //         if(response.code == 0){
-        //             _self.images = response.data;
-        //             _self.listLoading =false;
-        //             _self.SwiperBanner();
-        //         }else{
-        //             CAIMEI.Alert(response.msg, '确定');
-        //         }
-        //     });
-        // },
-        SwiperBanner: function(){
+        diffTime:function(time){
+            var date = Date.now();
+            console.log('缓存时间戳',time);
+            console.log('当前时间戳',date);
+            console.log('计算时间戳',(date-time));
+            return (date -time) < 2*60*1000 ? false : true
+        },
+        // 页面主图轮播
+        swiperBanner: function(){
             setTimeout(function(){
                 if (isPC) {
                     $('#swiper-container').slide({
@@ -106,85 +69,6 @@ var homeData = new Vue({
                 }
             },300);
         },
-        // GetNavigationMenu :function(){//获取顶部导航分类
-        //     var _self = this;
-        //     PublicApi.GetNavigationMenu({source:1},function(response){
-        //         if(response.code == 0){
-        //             _self.topMenuList = response.data.topMenuList;
-        //         }else{
-        //             CAIMEI.Alert(response.msg, '确定');
-        //         }
-        //     });
-        // },
-        GetHomeFloorData: function(){
-            var _self = this;
-            // 预设静态数据
-            var staticJson = $("#floorJson").val();
-            if (staticJson) {
-                var staticData = JSON.parse(staticJson);
-                _self.setFloorData(staticData);
-            }
-            // 如果没有静态数据(重新请求) 或 用户登录(重新请求获取价格)
-            if (!staticJson || GLOBAL_USER_ID>0){
-                PublicApi.GetHomeData({userId:GLOBAL_USER_ID,source:1},function(response){
-                    if(response.code == 0){
-                        var data = response.data;
-                        _self.setFloorData(data);
-                    }else{
-                        CAIMEI.Alert(response.msg, '确定');
-                    }
-                });
-            }
-        },
-        setFloorData: function(data){
-            var _self = this;
-            _self.listLoading = false;
-            _self.pageList = data.homePageFloor;
-            // _self.liveList = data.liveList;
-            _self.supplierList = data.supplierImage.qualitySupplierList;
-            _self.supplierImage = data.supplierImage.wwwImage;
-            _self.supplierWwwLink = data.supplierImage.wwwLink;
-            _self.pageList.forEach(function(page){
-                if(page.floorContent){
-                    if(isPC){
-                        if(page.floorContent.templateType == '1' || page.floorContent.templateType == '3'){
-                            if (page.floorImageList.length>7){
-                                page.isPageMore = true;
-                            }
-                        }else if(page.floorContent.templateType == '2' || page.floorContent.templateType == '4' || page.floorContent.templateType == '7'){
-                            if (page.floorImageList.length>5){
-                                page.isPageMore = true;
-                            }
-                        }else if(page.floorContent.templateType == '5'){
-                            if (page.floorImageList.length>10){
-                                page.isPageMore = true;
-                            }
-                        }
-                    }else{
-                        if(page.floorContent.templateType == '1' || page.floorContent.templateType == '3'){
-                            if (page.floorImageList.length>3){
-                                page.isPageMore = true;
-                            }
-                        }else if(page.floorContent.templateType == '2' || page.floorContent.templateType == '4'){
-                            if (page.floorImageList.length>2){
-                                page.isPageMore = true;
-                            }
-                        }else if(page.floorContent.templateType == '5'){
-                            if (page.floorImageList.length>4){
-                                page.isPageMore = true;
-                            }
-                        }
-                    }
-                }
-            });
-            _self.GetHomeRightData();
-            setTimeout(function() {
-                // 设置侧边导航数据
-                _self.SetAsideNav();
-                _self.SwiperFloor();
-            },500);
-            console.log(_self.pageList)
-        },
         GetHomeRightData: function(){
             var _self = this;
             PublicApi.GetHomeRightData({ source: 1 },function(response){
@@ -198,44 +82,33 @@ var homeData = new Vue({
                 }
             });
         },
-        PromotionsFormat:function(promo){//促销活动类型数据处理
-            if(promo!=null){
-                if(promo.type == 1 && promo.mode == 1){
-                    return true
-                }else{
-                    return false
-                }
-            }
-            return false
-        },
-        showMorePageFn:function(page){
-            page.isPageMore = !page.isPageMore;
-        },
-        getAdvertising: function(){
+        setAsideNav: function(){
             var _self = this;
-            $.getJSON("/home/advertising").done(function (r) {
-                if (r.code === 0 && r.data) {
-                    _self.advertising = r.data;
+            if (isPC) {
+                var titArr = $('.section_page_title').find('h1');
+                _self.asideNav = [];
+                for (var i=0; i<titArr.length; i++){
+                    _self.asideNav.push({
+                        id: $(titArr[i]).attr("data-id"),
+                        value: $(titArr[i]).text()
+                    })
                 }
-            });
-        },
-        SetAsideNav: function(){
-            var _self = this;
-            var titArr = $('.section_page_title').find('h1');
-            _self.asideNav = [];
-            for (var i=0; i<titArr.length; i++){
-                _self.asideNav.push({
-                    id: $(titArr[i]).attr("data-id"),
-                    value: $(titArr[i]).text()
-                })
             }
         },
-        SwiperFloor: function(){
-            setTimeout(function(){  // 图片懒加载
-                $("img[data-original]").lazyload();
-            },500);
+        // 商品楼层轮播
+        swiperFloor: function(){
             setTimeout(function(){
+                // 图片懒加载
+                $("img[data-original]").lazyload();
+                // 商品轮播
                 if (isPC) {
+                    var cell = $(".swiper-pagination-floor");
+                    var size = Math.ceil(cell.attr("data-id")/5);
+                    var span = '';
+                    for (var i = 0; i < size; i++) {
+                        span += '<span></span>';
+                    }
+                    cell.html(span);
                     $('#recommendBox').slide({
                         mainCell:".recommendBox-wrapper",
                         titCell:".swiper-pagination-floor span",
@@ -258,7 +131,6 @@ var homeData = new Vue({
                             el: '.swiper-pagination'
                         }
                     });
-
                 }
             },500);
         },
@@ -279,55 +151,149 @@ var homeData = new Vue({
                 }
             }
         },
-        diffTime:function(time){
-            var date = Date.now();
-            console.log('缓存时间戳',time);
-            console.log('当前时间戳',date);
-            console.log('计算时间戳',(date-time));
-            return (date -time) < 2*60*1000 ? false : true
+        // 设置页面查看更多按钮显示
+        setReadeMore: function(){
+            $(".section_page_more").each(function(){
+                var id = $(this).attr('data-id')*1;
+                var size = $(this).attr('data-size')*1;
+                var el = $(this);
+                var readMore = false;
+                if (isPC) {
+                    if([1,3].indexOf(id) !== -1 && size>7) {
+                        readMore = true;
+                    }
+                    if([2,4,7].indexOf(id) !== -1 && size>5) {
+                        readMore = true;
+                    }
+                    if(5 === id && size>10) {
+                        readMore = true;
+                    }
+                } else {
+                    if([1,3].indexOf(id) !== -1 && size>3) {
+                        readMore = true;
+                    }
+                    if([2,4].indexOf(id) !== -1 && size>2) {
+                        readMore = true;
+                    }
+                    if(5 === id && size>4) {
+                        readMore = true;
+                    }
+                }
+                if (readMore) {
+                    el.addClass("show");
+                } else {
+                    el.parents(".section_page").find(".section_page_main").addClass("max");
+                }
+            });
+        },
+        // 点击查看更多
+        showMoreItem: function(e){
+            var el = e.currentTarget;
+            $(el).parents(".section_page").find(".section_page_main").addClass("max");
+            $(el).parents(".section_page_more").hide();
+        },
+        // 设置页面商品价格
+        setPriceShown: function(){
+            var productIds = [];
+            var userId = GLOBAL_USER_ID;
+            var shopId = GLOBAL_SHOP_ID;
+            var userIdentity = GLOBAL_USER_IDENTITY;
+            $(".main_price_text").each(function(){
+                var id = $(this).attr('data-id');
+                if (productIds.indexOf(id) === -1) {
+                    productIds .push(id);
+                }
+            });
+            // 获取商品价格列表
+            $.getJSON(coreServer+"/commodity/price/list",{
+                userId: GLOBAL_USER_ID,
+                productIds: productIds.join(',')
+            }).done(function (res) {
+                if (res.code === 0 && res.data) {
+                    var priceList = res.data;
+                    $(".main_price_none").hide();
+                    $(".price_grade_club").hide();
+                    $(".price_grade_shop").hide();
+                    $(".main_price_login").show();
+                    priceList.map(function(price){
+                        // 用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构
+                        // priceFlag: 0公开价格 1不公开价格 2仅对会员机构公开
+                        var parent = $(".main_price_text.product_"+ price.productId);
+                        var priceFlag = parent.find(".main_price_login").attr('data-id')*1;
+                        if (userIdentity===2 || (priceFlag === 0 && userIdentity===4 ) || (userIdentity===3 && shopId === price.shopId*1)) {
+                            parent.find(".price_o_num").text(Number(price.originalPrice).toFixed(2));
+                            parent.find(".price_num").text(Number(price.price).toFixed(2));
+                            if(price.promotions && price.promotions.type*1===1 && price.promotions.mode*1===1){
+                                parent.find(".main_price_show").hide();
+                                parent.find(".main_price_show.none").show();
+                            }
+                        } else if (userIdentity===4 && priceFlag === 2){
+                            parent.find(".main_price_show").hide();
+                            parent.find(".price_grade_club").show();
+                        } else {
+                            parent.find(".main_price_show").hide();
+                            parent.find(".price_grade_shop").show();
+                        }
+                    });
+                }
+            });
         }
     },
     created: function() {
-        var userInfo = localStorage.getItem('userInfo');
-        if(userInfo){
-            this.userId = JSON.parse(userInfo).userId;
+        if(GLOBAL_TOKEN){
+            this.userId = GLOBAL_USER_ID;
         }
-        this.SwiperBanner();
-        // this.GetNavigationMenu();
-        this.GetHomeFloorData();
     },
     mounted: function() {
         var _this = this;
-
-        // this.getAdvertising();
+        // 页面主图轮播
+        this.swiperBanner();
+        // 设置页面查看更多
+        this.setReadeMore();
+        // 推荐专区商品轮播
+        this.swiperFloor();
+        // 设置右侧导航
+        this.setAsideNav();
+        // 获取设置商品价格
+        if (GLOBAL_USER_ID) {
+            this.setPriceShown();
+        }
         // 侧边栏滚动判断
         var distance = 0;
         $(window).scroll(function () {
             if($('body').attr("style") && $('body').attr("style").indexOf('fixed')>0){
                 return false;
             }
-            var scoll = Math.max($('html').scrollTop(), $('body').scrollTop());
-            if(scoll >300){
+            var scrollSize = Math.max($('html').scrollTop(), $('body').scrollTop());
+            if(scrollSize >300){
                 $('#sideNav').show();
                 if(isPC){
-                    $('#advertising').show();
+                    // $('#advertising').show();
                     // 鼠标滚动楼层
                     setTimeout(function () {
-                        distance = scoll;
+                        distance = scrollSize;
                     },0);
+                    // 侧边导航栏高亮
                     $('.section_page_title').each(function (i,e) {
                         //每个元素距离顶部的距离
                         var top = $(e).offset().top;
-                        if(scoll > distance){
-                            if(scoll >= (top-300)){
+                        if(scrollSize > distance){
+                            if(scrollSize >= (top-300)){
                                 $('#sideNav').find('a').eq(i).addClass('on').siblings().removeClass("on");
                             }
                         }else {
-                            if(scoll >= (top-600)){
+                            if(scrollSize >= (top-600)){
                                 $('#sideNav').find('a').eq(i).addClass('on').siblings().removeClass("on");
                             }
                         }
                     });
+                    // 侧边模块固定 fixed
+                    if($('#fixed-wrap').length>0) {
+                        var tocWrap = $('#fixed-wrap'),
+                            changeSize = $("#globalHead").outerHeight() + $("#swiper-container").outerHeight() + $("#sidebar").outerHeight();
+                            //changeSize = document.getElementById("header").offsetHeight + document.getElementById("sidebar").offsetHeight;
+                        scrollSize >= changeSize ? tocWrap.addClass("fixed") : tocWrap.removeClass("fixed");
+                    }
                 }
             }else {
                 $('#sideNav').hide();
@@ -350,11 +316,10 @@ var homeData = new Vue({
         //新加优惠券弹窗
         if(isActivityStatus){
             var  lockTime = localStorage.getItem('lockTime');
-            var  eTime = this.diffTime(lockTime);
-            _this.showflag = eTime;
+            _this.popupFlag = this.diffTime(lockTime);
         }else{
             setTimeout(function () {
-                 _this.showflag = true;
+                 _this.popupFlag = true;
             },1000);
         }
     }

+ 6 - 0
src/main/resources/templates/components/analysis.html

@@ -0,0 +1,6 @@
+<!--百度统计 start-->
+    <script th:if="${siteEnv}==2">var _hmt=_hmt||[];(function(){var hm=document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?ccdb07ae255aa2a1d68c7c725a40d99c";var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm,s);})();</script>
+    <!--百度统计 end-->
+    <script th:if="${siteEnv}==2">
+        var isFormal = window.location.href.indexOf('www.caimei365.com') !== -1;if(isFormal){var _czc = _czc || [];_czc.push(["_setAccount", "1279558759"]);}
+    </script>

+ 1 - 1
src/main/resources/templates/components/footer.html

@@ -13,7 +13,7 @@
             <div class="list" th:each="type: ${helpPages}">
                 <span class="tab" th:text="${type.name}"></span>
                 <div class="con">
-                    <a th:each="page: ${type.linkList}" th:href="'/help/'+${page.id}+'.html'" th:text="${page.name}"></a>
+                    <a th:each="page: ${type.linkList}" th:href="'/help/'+${page.id}+'.html'" th:text="${page.name}" rel="nofollow"></a>
                 </div>
             </div>
             <div class="list">

+ 16 - 0
src/main/resources/templates/components/head-link-home.html

@@ -0,0 +1,16 @@
+<meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width,account-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0">
+    <meta name="apple-mobile-web-app-capable" content="yes">
+    <meta name="apple-mobile-web-app-status-bar-style" content="black">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
+    <meta http-equiv="keywords" content="采美平台业务包括采美采购商城,采美正品联盟,美业供应链合作,美业平台综合运营,三方项目服务合作,美业信息咨询服务,美业二手市场,医美直播,品牌招商等。其中采购商城包括热门小气泡仪器,皮肤检测,水光仪器,中胚层治疗仪器,激光仪器,射频仪器,超声仪器,微针射频仪器,脱毛仪器,红蓝光,身体塑形溶脂仪器等。产品包括:医美术后修复产品,高端SPA产品,高端院线产品,医美家居护理产品,玻尿酸,动能素,精纯液,填充针剂,线材,消耗品等。">
+    <meta http-equiv="description" content="采美365网,生美医美正品采购服务平台,国内首家美容行业的B2B平台,具有一,二,三类医疗器械销售资质和进出口资质。聚集全球100多个高品质供应商资源,包括医疗、非医疗美容产品和仪器设备,能一站式满足医疗美容机构、生活美容机构、新兴皮肤管理中心等多样化采购需求。同时提供供应链合作,整合上下游资源,为美容产业的持续前进和发展提出新的解决方案。">
+    <link rel="shortcut icon" th:href="@{/favicon.png}" type="image/x-icon"/>
+    <link rel="bookmark" th:href="@{/favicon.png}" type="image/x-icon"/>
+    <link href="/lib/swiper.min.css" media="screen and (max-width:768px)" rel="stylesheet" type="text/css">
+    <link href="/lib/jquery-confirm.min.css" rel="stylesheet" type="text/css">
+    <link href="/lib/css/viewer.min.css" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/base/init.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/base/base.h5.css(v=${version})}" media="screen and (max-width:768px)" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/base/base.pc.css(v=${version})}" media="screen and (min-width:768px)" rel="stylesheet" type="text/css">
+

+ 41 - 42
src/main/resources/templates/components/header.html

@@ -130,67 +130,66 @@
                 </div>
                 <div class="clsTab">
                     <div class="clsTab-main">
-                        <template v-for="(tab,i) in TabList" :key="i">
-                            <a :class="{'on':i==0}" href="javascript:void(0);" @click="changeline(tab)">
-                                {{tab.name}}
-                                <p :class="tab.value==currenIndex?'line':''"></p>
-                            </a>
-                        </template>
+                        <a href="javascript:void(0);" @click="changeClassify(1)" class="on">产品<p :class="1==classifyIndex?'line':''"></p></a>
+                        <a href="javascript:void(0);" @click="changeClassify(2)">仪器<p :class="2==classifyIndex?'line':''"></p></a>
                     </div>
                 </div>
                 <div class="clsCon">
-                    <div class="tabItem" v-for="big in NavsList" style="display: none;">
+                    <th:block th:each="type:${#numbers.sequence(1,2)}">
+                    <div class="tabItem" style="display:none;" th:id="'mainClassify_'+${type}">
                         <div class="tabItem_lift">
-                            <template v-for="(nav,index) in big.list" :key="index" >
-                                <a :class="{'on':index==0}"  href="javascript:void(0);">
-                                    <img class="tabItem_lift_icon" v-if="isPC" :src="nav.wwwIcon ? nav.wwwIcon : ''" alt="">
-                                    {{ nav.name }}
-                                </a>
-                            </template>
+                            <th:block th:each="big,stat : ${classifyJson}" th:if="${big.get('typeSort')}*1==${type}" th:object="${big}">
+                            <a th:class="${stat.index}==0? 'on':''"  href="javascript:void(0);">
+                                <img class="tabItem_lift_icon" v-if="isPC" th:src="*{wwwIcon}" th:alt="*{name}"><th:block th:text="*{name}"></th:block>
+                            </a>
+                            </th:block>
                         </div>
                         <div class="tabItem_right">
-                            <div class="tabItem_right_content" v-for="(nav,i) in big.list" :class="{'on':i==0}">
-                                <div class="line"  v-if="nav.smalltypeList!==null&&nav.smalltypeList!==''" v-for="small in nav.smalltypeList">
+                            <th:block th:each="big,stat : ${classifyJson}" th:if="${big.get('typeSort')}*1==${type}" th:object="${big}">
+                            <div class="tabItem_right_content" th:class="${stat.index}==0? 'on':''">
+                                <th:block th:if="${big.containsKey('smallTypeList')} and ${big.get('smallTypeList')!=null}">
+                                <div class="line" th:each="small : *{smallTypeList}" th:object="${small}">
                                     <div class="lft show">
-                                        <a :href="'/product/instruelist.html?bigTypeID='+nav.bigTypeID+'&smallTypeID='+small.smallTypeID+'&typeSort='+nav.typeSort+''" target="_blank">
+                                        <a th:href="'/product/instruelist.html?bigTypeId=' + *{bigTypeId} +'&smallTypeId='+*{smallTypeId} + '&typeSort=' + ${big.getString('typeSort')}" target="_blank">
                                             <span v-if="isPC"> > </span>
-                                            <p>{{ small.name }}</p>
+                                            <p th:text="*{name}"></p>
                                         </a>
                                     </div>
                                     <div class="rgt mfw" >
-                                        <template v-if="small.tinytypeList!='' && small.tinytypeList!=null"  v-for="tiny in small.tinytypeList">
-                                            <a class="3" :href="'/product/instruelist.html?bigTypeID='+nav.bigTypeID+'&smallTypeID='+small.smallTypeID+'&tinyTypeID='+tiny.tinyTypeID+'&typeSort='+nav.typeSort+''" target="_blank">
-                                                <img v-if="!isPC" :src="tiny.crmIcon" alt="tiny.name">
-                                                <span v-text="tiny.name"></span>
+                                        <th:block th:if="${small.containsKey('tinyTypeList')} and ${small.get('smallTypeList')!=null}">
+                                            <th:block th:each="tiny : *{tinyTypeList}" th:object="${tiny}">
+                                            <a th:href="'/product/instruelist.html?bigTypeId=' + ${big.getString('bigTypeId')} +'&smallTypeId='+*{smallTypeId} + '&tinyTypeID=' + *{tinyTypeId} + '&typeSort=' + ${big.getString('typeSort')}" target="_blank">
+                                                <img v-if="!isPC" th:src="*{crmIcon}" alt="*{name}">
+                                                <p th:text="*{name}"></p>
                                             </a>
-                                        </template>
-                                        <template v-if="!small.tinytypeList">
-                                            <a class="none" :href="'/product/instruelist.html?bigTypeID='+nav.bigTypeID+'&smallTypeID='+small.smallTypeID+'&typeSort='+nav.typeSort+''" target="_blank">
-                                                <img v-if="!isPC" :src="small.crmIcon" alt="全部商品">
-                                                <p>全部商品</p>
+                                            </th:block>
+                                        </th:block>
+                                        <th:block th:unless="${small.containsKey('tinyTypeList')} and ${small.get('smallTypeList')!=null}">
+                                            <a th:href="'/product/instruelist.html?bigTypeId=' + *{bigTypeId} +'&smallTypeId='+*{smallTypeId} + '&typeSort=' + ${big.getString('typeSort')}" target="_blank">
+                                                <img v-if="!isPC" th:src="*{crmIcon}" alt="全部商品"><p>全部商品</p>
                                             </a>
-                                        </template>
+                                        </th:block>
                                     </div>
                                 </div>
-                                <template v-if="!nav.smalltypeList">
-                                    <div class="line">
-                                        <div class="lft none">
-                                            <a :href="'/product/instruelist.html?bigTypeID='+nav.bigTypeID+'&typeSort='+nav.typeSort+''" target="_blank">
-                                                <span v-if="isPC"> > </span>
-                                                <p>{{ nav.name }}</p>
-                                            </a>
-                                        </div>
-                                        <div class="rgt mfw" >
-                                            <a :href="'/product/instruelist.html?bigTypeID='+nav.bigTypeID+'&typeSort='+nav.typeSort+''" target="_blank">
-                                                <img v-if="!isPC" :src="nav.crmIcon" alt="全部商品">
-                                                <p>全部商品</p>
-                                            </a>
-                                        </div>
+                                </th:block>
+                                <div class="line" th:unless="${big.containsKey('smallTypeList')} and ${big.get('smallTypeList')!=null}">
+                                    <div class="lft none">
+                                        <a th:href="'/product/instruelist.html?bigTypeId=' + *{bigTypeId} + '&typeSort=' + ${big.getString('typeSort')}" target="_blank">
+                                            <span v-if="isPC"> > </span>
+                                            <p th:text="*{name}"></p>
+                                        </a>
                                     </div>
-                                </template>
+                                    <div class="rgt mfw" >
+                                        <a th:href="'/product/instruelist.html?bigTypeId=' + *{bigTypeId} + '&typeSort=' + ${big.getString('typeSort')}" target="_blank">
+                                            <img v-if="!isPC" th:src="*{crmIcon}" alt="全部商品"><p>全部商品</p>
+                                        </a>
+                                    </div>
+                                </div>
                             </div>
+                            </th:block>
                         </div>
                     </div>
+                    </th:block>
                 </div>
             </div>
         </div>

+ 203 - 873
src/main/resources/templates/index.html

@@ -4,910 +4,240 @@
 <head>
     <title>采美365网--医疗美容生活美容正品采购平台</title>
     <meta name="baidu-site-verification" content="KbkRJg9357"/>
-    <template th:replace="components/head-link"></template>
+    <link rel="canonical" href="https://www.caimei365.com/"/>
+    <template th:replace="components/head-link-home"></template>
     <link th:href="@{/css/index/index_new.h5.css(v=${version})}" media="screen and (max-width:768px)" rel="stylesheet" type="text/css">
     <link th:href="@{/css/index/index_new.pc.css(v=${version})}" media="screen and (min-width:768px)" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
 </head>
 <body>
 <!-- 引用头部 -->
 <template th:replace="components/header"></template>
 <!-- 首页 -->
 <div id="container">
-    <!-- 首页楼层静态数据 -->
-    <input type="hidden" th:value="${floorJson}" id="floorJson">
-    <!--loading-->
-    <div v-if="listLoading" class="loading home">
-        <img src="/img/base/loading.gif">
+    <!--首页图片轮播-->
+    <div id="swiper-container" class="swiper-container">
+        <ul class="swiper-wrapper swiper-wrapper-banner">
+            <li class="swiper-slide mfc" th:each="img: ${bannerList}">
+                <a th:href="${img.link}"><img th:src="${img.image}" th:alt="${img.title}"></a>
+            </li>
+        </ul>
+        <div class="swiper-pagination swiper-pagination-banner mfc"><span v-if="isPC" th:each="img: ${bannerList}"></span></div>
+        <a class="swiper-button-prev" href="javascript:void(0)"></a>
+        <a class="swiper-button-next" href="javascript:void(0)"></a>
     </div>
-    <template>
-        <!--首页图片轮播-->
-        <div id="swiper-container" class="swiper-container">
-            <ul class="swiper-wrapper swiper-wrapper-banner">
-                <li class="swiper-slide mfc" th:each="img: ${bannerList}">
-                    <a th:href="${img.link}"><img th:src="${img.image}" th:alt="${img.title}"></a>
-                </li>
-            </ul>
-            <div class="swiper-pagination swiper-pagination-banner mfc"><span v-if="isPC" th:each="img: ${bannerList}"></span></div>
-            <a class="swiper-button-prev" href="javascript:void(0)"></a>
-            <a class="swiper-button-next" href="javascript:void(0)"></a>
-        </div>
-        <div class="mNavBox h5Only clear">
-            <!--导航菜单-->
-            <template th:each="menu: ${topMenuList}">
-                <a class="nav" th:href="${menu.link}">
-                    <img class="nav-icon" th:src="${menu.icon}" th:alt="${menu.name}">
-                    <p th:text="${menu.name}"></p>
-                </a>
-            </template>
-        </div>
-        <!--首页楼层主体数据-->
-        <div class="section_container">
-            <div class="inner">
-                <div class="section_right">
-                    <div class="box swiper-wrapper" >
-                        <div class="section_right_item" v-if="liveList && liveList.length>0">
-                            <div class="right_item_title">
-                                <p>精彩直播</p>
-                                <a href="https://wx.vzan.com/plug-ins/?v=637429463853329710#/FixupIndex/399803126?shareuid=0" target="_blank" v-if="isPC">更多></a>
-                                <a href="https://wx.vzan.com/plug-ins/?v=637429463853329710#/FixupIndex/399803126?shareuid=0" target="_blank" v-if="!isPC">></a>
-                            </div>
-                            <div class="right_item_main" v-for="(live,index) in liveList">
-                                <a :href="live.link" class="item_banner" v-if="index === 0" target="_blank" :title="live.liveTitle">
-                                    <img src="/img/base/placeholder.png" :data-original="live.homePageImage" :alt="live.liveTitle">
-                                    <div class="name" v-text="live.liveTitle"></div>
-                                    <div class="statu">
-                                        <i :class="live.liveStatus | statusTypeClass" class="mIcon"></i>
-                                        <p>{{ live.liveStatus | statusType }}</p>
-                                    </div>
-                                </a>
-                                <a :href="live.link" class="item_text" v-if="index > 0" target="_blank" :title="live.liveTitle">
-                                    <p class="item_text_name info" v-text="live.liveTitle"></p>
-                                </a>
-                            </div>
+    <div class="mNavBox h5Only clear">
+        <!--导航菜单-->
+        <a th:each="menu: ${topMenuList}" class="nav" th:href="${menu.link}">
+            <img class="nav-icon" th:src="${menu.icon}" th:alt="${menu.name}">
+            <p th:text="${menu.name}"></p>
+        </a>
+    </div>
+    <!--首页楼层主体数据-->
+    <div class="section_container">
+        <div class="inner">
+            <div id="sidebar" class="section_right">
+                <div class="box swiper-wrapper" >
+                    <div class="section_right_item" th:if="${sideJson.get('liveList')}!=null and ${sideJson.get('liveList').size}>0">
+                        <div class="right_item_title">
+                            <p>精彩直播</p>
+                            <a href="https://wx.vzan.com/plug-ins/?v=637429463853329710#/FixupIndex/399803126?shareuid=0" target="_blank">
+                                <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
+                            </a>
                         </div>
-                        <div class="section_right_item" v-if="cmImageList && cmImageList.length>0">
-                            <div class="right_item_title">
-                                <p>最新活动</p>
-                                <a href="/promotions.html" target="_blank" v-if="isPC">更多></a>
-                                <a href="/promotions.html" target="_blank" v-if="!isPC">></a>
-                            </div>
-                            <div class="right_item_main" v-for="(cmImage,index) in cmImageList">
-                                <a :href="cmImage.link" class="item_banner" v-if="index === 0" target="_blank" :title="cmImage.title">
-                                    <img src="/img/base/placeholder.png" :data-original="cmImage.homePageImage" :alt="cmImage.title">
-                                    <div class="name" v-text="cmImage.title"></div>
-                                </a>
-                                <a :href="cmImage.link" class="item_text" v-if="index > 0" target="_blank" :title="cmImage.title">
-                                    <p class="item_text_name info" v-text="cmImage.title"></p>
-                                </a>
-                            </div>
+                        <div class="right_item_main" th:each="live,stat : ${sideJson.get('liveList')}" th:object="${live}">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{liveTitle}" class="item_banner" target="_blank">
+                                <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{liveTitle}">
+                                <div class="name" th:text="*{liveTitle}"></div>
+                                <div class="statu">
+                                    <template th:if="*{liveStatus}==1"><i class="mIcon icon-wart"></i><p>未开始</p></template>
+                                    <template th:if="*{liveStatus}==2"><i class="mIcon icon-live"></i><p>直播中</p></template>
+                                    <template th:if="*{liveStatus}==3"><i class="mIcon icon-end"></i><p>看回放</p></template>
+                                </div>
+                            </a>
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{liveTitle}" class="item_text" target="_blank">
+                                <p class="item_text_name" th:text="*{liveTitle}"></p>
+                            </a>
                         </div>
-                        <div class="section_right_item" v-if="infoList && infoList.length>0">
-                            <div class="right_item_title">
-                                <p>热门文章</p>
-                                <a href="https://www.caimei365.com/info/center-3-1.html" target="_blank" v-if="isPC">更多></a>
-                                <a href="https://www.caimei365.com/info/center-3-1.html" target="_blank" v-if="!isPC">></a>
-                            </div>
-                            <div class="right_item_main" v-for="(info,index) in infoList">
-                                <a :href="info.link" class="item_banner" v-if="index === 0" target="_blank" :title="info.title">
-                                    <img src="/img/base/placeholder.png" :data-original="info.homePageImage" :alt="info.title">
-                                    <div class="name" v-text="info.title"></div>
-                                </a>
-                                <a :href="info.link" class="item_text" v-if="index > 0" target="_blank" :title="info.title">
-                                    <p class="item_text_name " v-text="info.title"></p>
-                                    <p class="item_text_time" v-if="isPC" v-text="info.createDate"></p>
-                                </a>
-                            </div>
+                    </div>
+                    <div id="fixed-wrap" class="section_right_item" th:if="${sideJson.get('cmImageList')}!=null and ${sideJson.get('cmImageList').size}>0">
+                        <div class="right_item_title">
+                            <p>最新活动</p>
+                            <a href="https://www.caimei365.com/promotions.html" target="_blank">
+                                <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
+                            </a>
+                        </div>
+                        <div class="right_item_main" th:each="image,stat : ${sideJson.get('cmImageList')}" th:object="${image}">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank">
+                                <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{title}">
+                                <div class="name" th:text="*{title}"></div>
+                            </a>
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank">
+                                <p class="item_text_name" th:text="*{title}"></p>
+                            </a>
+                        </div>
+                    </div>
+                    <div class="section_right_item" th:if="${sideJson.get('infoList')}!=null and ${sideJson.get('infoList').size}>0">
+                        <div class="right_item_title">
+                            <p>热门文章</p>
+                            <a href="https://www.caimei365.com/info/center-3-1.html" target="_blank">
+                                <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
+                            </a>
+                        </div>
+                        <div class="right_item_main" th:each="info,stat : ${sideJson.get('infoList')}" th:object="${info}">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank">
+                                <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{title}">
+                                <div class="name" th:text="*{title}"></div>
+                            </a>
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank">
+                                <p class="item_text_name info" th:text="*{title}"></p>
+                                <p class="item_text_time" v-if="isPC" th:text="*{createDate}"></p>
+                            </a>
                         </div>
                     </div>
                 </div>
-                <div class="section_left ">
-                    <div class="section_page" v-for="(page,index) in pageList">
-                        <div class="section_page_title" v-if="page.floorContent">
-                            <h1 v-text="page.title" :data-id="index+1"></h1>
-                            <p v-text="page.detail"></p>
+            </div>
+            <div class="section_left ">
+                <div class="section_page" th:each="floor,stat : ${floorJson.get('homePageFloor')}">
+                    <th:block th:if="${floor.get('floorContent')}!=null">
+                        <div class="section_page_title">
+                            <h1 th:text="${floor.get('title')}" th:attr="data-id=${stat.index+1}"></h1>
+                            <p th:text="${floor.get('detail')}"></p>
                         </div>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '1'">
-                            <div class="section_page_main clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                   class="page_main_item ad_02" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                   :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                                </a>
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</sapn>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag" v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag ">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <div class="section_page_more" v-if="page.isPageMore">
-                                <div class="more" @click="showMorePageFn(page)"> <i class="icon mIcon"></i>查看更多</div>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '2'">
-                            <div class="section_page_main clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a  :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                    class="page_main_item ad_02" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                                </a>
-                                <a  :href="page.floorContent.adsLink2!='' ? page.floorContent.adsLink2 : 'javascript:void(0)'"
-                                    class="page_main_item ad_03" :class="page.floorContent.adsLink2!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink2!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage2" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage2" alt="" class="page_main_item_adv">
-                                </a>
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</sapn>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag" v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <div class="section_page_more" v-if="page.isPageMore">
-                                <div class="more" @click="showMorePageFn(page)"> <i class="icon mIcon"></i>查看更多</div>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '3'">
-                            <div class="section_page_main type_03 clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a  :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                    class="page_main_item ad_01" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                                </a>
-                                <a  :href="page.floorContent.adsLink2!='' ? page.floorContent.adsLink2 : 'javascript:void(0)' "
-                                    class="page_main_item ad_02" :class="page.floorContent.adsLink2!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink2!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage2" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage2" alt="" class="page_main_item_adv">
-                                </a>
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</sapn>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <div class="section_page_more" v-if="page.isPageMore">
-                                <div class="more" @click="showMorePageFn(page)"> <i class="icon mIcon"></i>查看更多</div>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '4'">
-                            <div class="section_page_main type_03 clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a  :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                    class="page_main_item ad_01" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                                </a>
-                                <a  :href="page.floorContent.adsLink2!='' ? page.floorContent.adsLink2 : 'javascript:void(0)' "
-                                    class="page_main_item ad_02" :class="page.floorContent.adsLink2!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink2!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage2" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage2" alt="" class="page_main_item_adv">
-                                </a>
-                                <a  :href="page.floorContent.adsLink3!='' ? page.floorContent.adsLink3 : 'javascript:void(0)' "
-                                    class="page_main_item ad_03" :class="page.floorContent.adsLink3!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink3!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage3" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage3" alt="" class="page_main_item_adv">
-                                </a>
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1" >美博会</sapn>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <div class="section_page_more" v-if="page.isPageMore">
-                                <div class="more" @click="showMorePageFn(page)"><i class="icon mIcon"></i>查看更多</div>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '5'">
-                            <div class="section_page_main type_03 clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a  :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                    class="page_main_item ad_01" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                    :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                    <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                    <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                                </a>
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><span class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</span>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
+                        <th:block th:object="${floor.get('floorContent')}">
+                            <div th:class="*{templateType}==8? 'hotList swiper-container-floor' : ''" th:id="*{templateType}==8? 'recommendBox' : ''">
+                                <div th:class="*{templateType}==8? *{'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+templateType} : *{'section_page_main clear mfw section_'+templateType}">
+                                    <!-- 广告图 -->
+                                    <th:block th:if="*{templateType}==1 or *{templateType}==2 or *{templateType}==3 or *{templateType}==4 or *{templateType}==5">
+                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <th:block th:if="*{templateType}==2 or *{templateType}==3 or *{templateType}==4">
+                                        <a th:href="*{#strings.isEmpty(adsLink2)}? 'javascript:;' : *{adsLink2}" th:attr="target=(*{#strings.isEmpty(adsLink2)} ? '_self' : '_blank')" class="page_main_item ad_02">
+                                            <img v-if="isPC" th:src="*{pcAdsImage2}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage2}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <th:block th:if="*{templateType}==4">
+                                        <a th:href="*{#strings.isEmpty(adsLink3)}? 'javascript:;' : *{adsLink3}" th:attr="target=(*{#strings.isEmpty(adsLink3)} ? '_self' : '_blank')" class="page_main_item ad_03">
+                                            <img v-if="isPC" th:src="*{pcAdsImage3}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage3}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <!-- 商品/图片 列表 -->
+                                    <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
+                                        <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
+                                            <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                            <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
+                                            <div class="page_main_text">
+                                                <th:block th:if="${pros.containsKey('product')}">
+                                                    <span class="tag" th:if="${pros.get('product').containsKey('beautyActFlag')} and ${pros.get('product').get('beautyActFlag')}==1">美博会</span>
+                                                </th:block>
+                                                <span th:text="${pros.get('name')}"></span>
+                                            </div>
+                                            <div class="page_main_price" th:if="*{listType}==1">
+                                                <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                                    <!-- 商品价格 -->
+                                                    <div th:attr="class=*{'main_price_text product_'+productId}, data-id=*{productId}">
+                                                        <!-- 正常商品 -->
+                                                        <th:block th:if="*{productCategory}==1">
+                                                            <div class="price_text_tag" th:if="${pros.get('product').containsKey('actStatus')}">
+                                                                <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
+                                                                    <template th:text="*{promotions.name}"></template>
+                                                                    <th:block th:if="*{promotions.type}==1 and *{promotions.mode}==1">
+                                                                        <!--单品优惠:优惠价-->
+                                                                        <span class="price_num"></span>
+                                                                    </th:block>
                                                                 </p>
                                                             </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <div class="section_page_more" v-if="page.isPageMore">
-                                <div class="more" @click="showMorePageFn(page)"> <i class="icon mIcon"></i>查看更多</div>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '6'">
-                            <div class="section_page_main clear mfw" :class="page.isPageMore ? '' : 'max'">
-                                <a  :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</sapn>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
+                                                            <div class="main_price_none">
+                                                                <em class="price_grade"><span class="bold">¥</span><i th:attr="class=*{'icon mIcon price_grade_'+priceGrade}"></i></em>
+                                                            </div>
+                                                            <div class="main_price_login" th:attr="data-id=*{priceFlag}">
+                                                                <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                                                                <em th:if="*{priceFlag}==1" class="price_grade"><span>¥</span>价格未公开</em>
+                                                                <th:block th:unless="*{priceFlag}==1">
+                                                                    <em class="price_grade_club"><span>¥</span>会员可见</em>
+                                                                    <!--机构价-->
+                                                                    <div class="main_price_show">¥<span class="price_num"></span></div>
+                                                                    <!--单品优惠时的划线价-->
+                                                                    <div class="main_price_show none">¥<span class="price_o_num"></span></div>
+                                                                    <!--供应商除自己的商品外,也显示价格等级-->
+                                                                    <em class="price_grade_shop"><span class="bold">¥</span><i th:attr="class=*{'icon mIcon price_grade_'+priceGrade}"></i></em>
+                                                                </th:block>
+                                                            </div>
+                                                        </th:block>
+                                                        <!-- 二手商品 -->
+                                                        <th:block th:if="*{productCategory}!=1">
+                                                            <div class="main_price_none sec">
+                                                                <em class="price_grade"><span>¥</span>登录可见</em>
+                                                            </div>
+                                                            <div class="main_price_login" data-id="0">
+                                                                <div class="price_text_tag"></div>
+                                                                <div th:if="*{detailTalkFlag}==2" class="main_price_show">¥价格祥聊</div>
+                                                                <div th:if="*{detailTalkFlag}!=2" class="main_price_show">¥<span class="price_num"></span></div>
+                                                            </div>
+                                                        </th:block>
                                                     </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                            <a  :href="page.floorContent.adsLink1!='' ? page.floorContent.adsLink1 : 'javascript:void(0)' "
-                                class="page_main_item ad_01" :class="page.floorContent.adsLink1!='' ? '' : 'default' "
-                                :target="page.floorContent.adsLink1!='' ? '_blank' : ''">
-                                <img v-if="isPC" :src="page.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
-                                <img v-else :src="page.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
-                            </a>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '7'">
-                            <div class="section_page_main clear mfw" :class="page.isPageMore ? 'max' : ''">
-                                <a :href="pros.link" class="page_main_item ad_04" v-for="(pros,index) in page.floorImageList" target="_blank">
-                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
-                                    <div class="page_main_tag" v-if="pros.listType == 2"><p>{{ pros.label }}</p></div>
-                                    <div class="page_main_text"><span class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</span>{{ pros.name }}</div>
-                                    <div class="page_main_price" v-if="pros.listType == 1">
-                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                            <!--正常商品, 二手商品-->
-                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                            <template v-if="pros.product.productCategory==1">
-                                                <template v-if="pros.product.priceFlag==1">
-                                                    <!--价格未公开-->
-                                                    <div class="main_price_text">
-                                                        <div class="price_text_tag">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_unde">¥价格未公开</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <!--可见价格-->
-                                                    <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                    {{pros.product.promotions.name}}
-                                                                    <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                </p>
-                                                            </div>
-                                                            <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <!--仅会员机构可见-->
-                                                    <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <div class="main_price_text">
-                                                            <div class="price_text_tag">
-                                                                <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                            </div>
-                                                            <div class="main_price_unde">¥会员可见</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥价格祥聊</div>
-                                                </div>
-                                                <div class="main_price_text" v-else>
-                                                    <div class="price_text_tag"></div>
-                                                    <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                </div>
-                                            </template>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="pros.product.productCategory == 1">
-                                                <div class="price_text_tag right-box">
-                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                                <div class="main_price_none">
-                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="main_price_none sec">
-                                                    <em class="price_grade"><span>¥</span>登录可见</em>
-                                                </div>
-                                            </template>
-                                        </template>
-                                    </div>
-                                </a>
-                            </div>
-                        </template>
-                        <template v-if="page.floorContent && page.floorContent.templateType == '8'">
-                            <div class="floorCon">
-                                <div class="hotList swiper-container-floor" id="recommendBox">
-                                    <div class="section_page_main type_08 clear mfw swiper-wrapper recommendBox-wrapper" :class="page.isPageMore ? 'max' : ''">
-                                        <a class="page_main_item ad_04 swiper-slide" :href="pros.link"  v-for="(pros,index) in page.floorImageList" target="_blank">
-                                            <img class="page_main_image" :src="pros.image" :alt="pros.name">
-                                            <div class="page_main_tag" v-if="pros.listType == 2">{{ pros.label }}</div>
-                                            <div class="page_main_text" target="_blank"><sapn class="tag" v-if="pros.product!=null && pros.product.beautyActFlag==1">美博会</sapn>{{pros.name}}</div>
-                                            <div class="page_main_price" v-if="pros.listType == 1">
-                                                <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                                    <!--正常商品, 二手商品-->
-                                                    <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                                    <template v-if="pros.product.productCategory==1">
-                                                        <template v-if="pros.product.priceFlag==1">
-                                                            <!--价格未公开-->
-                                                            <div class="main_price_text">
-                                                                <div class="price_text_tag">
-                                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                                </div>
-                                                                <div class="main_price_unde">¥价格未公开</div>
-                                                            </div>
-                                                        </template>
-                                                        <template v-else>
-                                                            <!--可见价格-->
-                                                            <template v-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                                <div class="main_price_text" v-if="pros.product.productCategory == 1">
-                                                                    <div class="price_text_tag">
-                                                                        <p class="listTag" v-if="pros.product.actStatus==1">
-                                                                            {{pros.product.promotions.name}}
-                                                                            <span v-if="pros.priceFlag != 1">:¥{{pros.product.price | NumFormat}}</span>
-                                                                        </p>
-                                                                    </div>
-                                                                    <div class="main_price_show" :class="PromotionsFormat(pros.product.promotions) ? 'none' : ''">
-                                                                        ¥{{ (PromotionsFormat(pros.product.promotions) ? pros.product.originalPrice : pros.product.price ) | NumFormat  }}
-                                                                    </div>
-                                                                </div>
-                                                            </template>
-                                                            <!--仅会员机构可见-->
-                                                            <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                                <div class="main_price_text">
-                                                                    <div class="price_text_tag">
-                                                                        <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                                    </div>
-                                                                    <div class="main_price_unde">¥会员可见</div>
-                                                                </div>
-                                                            </template>
-                                                            <template v-else>
-                                                                <div class="price_text_tag right-box">
-                                                                    <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                                </div>
-                                                                <div class="main_price_none">
-                                                                    <em class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                                    <p class="listTag " v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                                </div>
-                                                            </template>
-                                                        </template>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="main_price_text" v-if="pros.product.detailTalkFlag == '2'">
-                                                            <div class="price_text_tag"></div>
-                                                            <div class="main_price_show">¥价格祥聊</div>
-                                                        </div>
-                                                        <div class="main_price_text" v-else>
-                                                            <div class="price_text_tag"></div>
-                                                            <div class="main_price_show">¥{{ pros.product.price | NumFormat  }}</div>
-                                                        </div>
-                                                    </template>
-                                                </template>
-                                                <template v-else>
-                                                    <template v-if="pros.product.productCategory == 1">
-                                                        <div class="price_text_tag right-box">
-                                                            <p class="listTag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                        <div class="main_price_none">
-                                                            <em class="price_grade right-box"><span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i></em>
-                                                            <p class="listTag" v-if="pros.actStatus==1">{{pros.product.promotions.name}}</p>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <div class="main_price_none sec">
-                                                            <em class="price_grade"><span>¥</span>登录可见</em>
-                                                        </div>
-                                                    </template>
-                                                </template>
+                                                </th:block>
                                             </div>
                                         </a>
-                                    </div>
-                                    <div class="swiper-pagination swiper-pagination-floor mfc"><span v-if="isPC" v-for="i in  Math.ceil(page.floorImageList.length / 5)"></span></div>
+                                    </th:block>
+                                    <!-- 广告图 -->
+                                    <th:block th:if="*{templateType}==6">
+                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
                                 </div>
+                                <div th:if="*{templateType}==8" class="swiper-pagination swiper-pagination-floor mfc" th:attr="data-id=${floor.get('floorImageList').size}"></div>
                             </div>
-                        </template>
+                            <div class="section_page_more" th:attr="data-id=*{templateType}, data-size=${floor.get('floorImageList').size}">
+                                <div class="more" @click="showMoreItem($event)"> <i class="icon mIcon"></i>查看更多</div>
+                            </div>
+                        </th:block>
+                    </th:block>
+                </div>
+                <div class="section_page">
+                    <div class="section_page_title">
+                        <h1 data-id="99">优质供应商</h1>
+                        <p>采美正品联盟 质量保证</p>
                     </div>
-                    <div class="section_page">
-                        <div class="section_page_title">
-                            <h1 :data-id="pageList.length+1">优质供应商</h1>
-                            <p>采美正品联盟 质量保证</p>
-                        </div>
-                        <div class="section_page_bottom">
-                            <a :href="supplierWwwLink!='' ? supplierWwwLink : 'javascript:void(0)' " class="page_main_li ad_01" :target="supplierWwwLink!='' ? '_blank' : ''"><img class="page_main_item_adv" :src="supplierImage" alt=""> </a>
-                            <a :href="shop.link" class="page_main_li ad_02" v-for="(shop,index) in supplierList" target="_blank">
-                                <img class="page_main_logo" src="/img/base/placeholder.png" :data-original="shop.image" :alt="shop.supplierName">
-                                <div class="page_main_name">{{ shop.supplierName }}</div>
+                    <div class="section_page_bottom" th:object="${floorJson.get('supplierImage')}">
+                        <a th:href="*{#strings.isEmpty(wwwLink)}? 'javascript:;' : *{wwwLink}" th:attr="target=(*{#strings.isEmpty(wwwLink)} ? '_self' : '_blank')" class="page_main_li ad_01">
+                            <img th:src="*{wwwImage}" alt="" class="page_main_item_adv">
+                        </a>
+                        <template th:each="shop : ${floorJson.get('supplierImage').get('qualitySupplierList')}"  th:object="${shop}">
+                            <a th:href="*{link}" target="_blank" class="page_main_li ad_02">
+                                <img class="page_main_logo" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{supplierName}">
+                                <div class="page_main_name" th:text="*{supplierName}"></div>
                             </a>
-                        </div>
+                        </template>
                     </div>
                 </div>
             </div>
         </div>
-        <!--右侧边栏导航-->
-        <div id="sideNav" v-if="isPC">
-            <div class="item">
-                <a class="item-sideNav" href="javascript:void(0);" v-for="nav in asideNav" :data-id="nav.id" v-text="nav.value" ></a>
-            </div>
+    </div>
+    <!--右侧边栏导航-->
+    <div id="sideNav" v-if="isPC">
+        <div class="item">
+            <a class="item-sideNav" href="javascript:void(0);" v-for="nav in asideNav" :data-id="nav.id" v-text="nav.value" ></a>
         </div>
-        <!--美博会弹窗-->
-        <div id="meibohui" class="Popup" v-if="showflag" :class="showflag ? 'show' :'' "
-             onclick="_czc.push(['_trackEvent','美博会','点击','用户访问','','meibohui'])">
-            <div class="show_popup">
-                <div class="bg_icon" @click="closepopup"><i class="icon mIcon"></i></div>
-                <div class="bg_img" @click="zhuanti"><img
-                        src="https://static.caimei365.com/app/meibohui/www/activity-pop-pc.png" v-if="isPC"><img
-                        src="https://static.caimei365.com/app/meibohui/www/activity-pop-h5.png" v-else></div>
+    </div>
+    <!--美博会弹窗-->
+    <div id="meibohui" class="Popup" v-if="popupFlag" :class="popupFlag ? 'show' :'' "
+         onclick="_czc.push(['_trackEvent','美博会','点击','用户访问','','meibohui'])">
+        <div class="show_popup">
+            <div class="bg_icon" @click="closePopup"><i class="icon mIcon"></i></div>
+            <div class="bg_img" @click="popupPage">
+                <img src="https://static.caimei365.com/app/meibohui/www/activity-pop-pc.png" v-if="isPC">
+                <img src="https://static.caimei365.com/app/meibohui/www/activity-pop-h5.png" v-else>
             </div>
         </div>
-    </template>
+    </div>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

二進制
target/www-0.0.1-SNAPSHOT.jar