Selaa lähdekoodia

Merge remote-tracking branch 'origin/developerA' into developerA

Aslee 2 vuotta sitten
vanhempi
commit
54fca020d1
50 muutettua tiedostoa jossa 1477 lisäystä ja 476 poistoa
  1. 9 0
      src/main/java/com/caimei/www/controller/unlimited/ProductController.java
  2. 8 0
      src/main/java/com/caimei/www/mapper/SupplierDao.java
  3. 16 0
      src/main/java/com/caimei/www/pojo/page/SupplierDetail.java
  4. 15 0
      src/main/java/com/caimei/www/service/page/impl/SupplierServiceImpl.java
  5. 6 0
      src/main/resources/mapper/SupplierMapper.xml
  6. 15 13
      src/main/resources/static/css/activity/attestation.css
  7. 2 2
      src/main/resources/static/css/base/base.pc.css
  8. 23 2
      src/main/resources/static/css/base/floor.css
  9. 16 2
      src/main/resources/static/css/index/index_new.pc.css
  10. 6 2
      src/main/resources/static/css/product/detail.h5.css
  11. 8 3
      src/main/resources/static/css/product/detail.pc.css
  12. 206 0
      src/main/resources/static/css/product/product-hot.css
  13. 9 9
      src/main/resources/static/css/supplier-center/shop/goods.css
  14. 6 3
      src/main/resources/static/css/supplier-center/shop/release.css
  15. BIN
      src/main/resources/static/img/activity/attestation/9.png
  16. BIN
      src/main/resources/static/img/activity/attestation/section_bg_device_03.png
  17. BIN
      src/main/resources/static/img/flea-market/banner.png
  18. BIN
      src/main/resources/static/img/flea-market/banner@2x.png
  19. BIN
      src/main/resources/static/img/hot/icon-hot-bg.png
  20. BIN
      src/main/resources/static/img/hot/icon-hot-bg@h5.png
  21. BIN
      src/main/resources/static/img/hot/icon-hot-btn.png
  22. BIN
      src/main/resources/static/img/hot/icon-hot-btn@h5.png
  23. BIN
      src/main/resources/static/img/hot/icon-hotpor-bg.png
  24. BIN
      src/main/resources/static/img/hot/icon-hotpor-bg@h5.png
  25. BIN
      src/main/resources/static/img/hot/icon-hottop-bg.png
  26. BIN
      src/main/resources/static/img/hot/icon-hottop-bg@h5.png
  27. BIN
      src/main/resources/static/img/supplier/icon-hotimage.png
  28. 67 6
      src/main/resources/static/js/activity/attestation.js
  29. 36 0
      src/main/resources/static/js/common/serviceapi/utils.service.js
  30. 17 227
      src/main/resources/static/js/flea-market/form.js
  31. 20 2
      src/main/resources/static/js/index.js
  32. 3 0
      src/main/resources/static/js/pay/caimei-hlbpay.js
  33. 3 0
      src/main/resources/static/js/pay/caimei-paycash.js
  34. 7 1
      src/main/resources/static/js/product/detail.js
  35. 2 2
      src/main/resources/static/js/product/instruement.js
  36. 303 0
      src/main/resources/static/js/product/product-hot.js
  37. 35 0
      src/main/resources/static/js/supplier-center/shop/goods.js
  38. 78 16
      src/main/resources/static/js/supplier-center/shop/release.js
  39. 14 0
      src/main/resources/static/lib/css/swiper-bundle.css
  40. 37 9
      src/main/resources/templates/activity/attestation.html
  41. 6 154
      src/main/resources/templates/flea-market/form.html
  42. 163 4
      src/main/resources/templates/index.html
  43. 1 1
      src/main/resources/templates/pay/caimei-hlbpay.html
  44. 1 1
      src/main/resources/templates/pay/caimei-paycash.html
  45. 24 0
      src/main/resources/templates/product/detail.html
  46. 2 2
      src/main/resources/templates/product/instrument.html
  47. 210 0
      src/main/resources/templates/product/product-hot.html
  48. 28 5
      src/main/resources/templates/supplier-center/shop/goods.html
  49. 63 7
      src/main/resources/templates/supplier-center/shop/release.html
  50. 12 3
      src/main/resources/templates/supplier/index.html

+ 9 - 0
src/main/java/com/caimei/www/controller/unlimited/ProductController.java

@@ -26,6 +26,7 @@ import java.util.concurrent.atomic.AtomicReference;
 public class ProductController extends BaseController {
 
     private static final String PRODUCT_LIST_PATH = "product/list";
+    private static final String PRODUCT_HOT_PATH = "product/product-hot";
     private static final String PRODUCT_DETAIL_PATH = "product/detail";
     private static final String PRODUCT_SUPPORTING_PATH = "product/product-supporting";
     private static final String PROMOTIONS_LIST_PATH = "product/promotions";
@@ -71,6 +72,14 @@ public class ProductController extends BaseController {
         return PRODUCT_LIST_PATH;
     }
 
+    /**
+     * 搜索结果 页面
+     */
+    @GetMapping("/product/hot.html")
+    public String hot() {
+        return PRODUCT_HOT_PATH;
+    }
+
     /**
      * 优惠券活动商品列表
      */

+ 8 - 0
src/main/java/com/caimei/www/mapper/SupplierDao.java

@@ -20,5 +20,13 @@ public interface SupplierDao {
      * @return
      */
     SupplierDetail getSupplierById(Integer supplierId);
+    /**
+     * 公司资质照片
+     */
+    List<String> getShopCertById(Integer shopId, int shopCertTypeId);
+    /**
+     * 医疗器械经营许可
+     */
+    String medicalPracticeLicense(Integer shopId);
 
 }

+ 16 - 0
src/main/java/com/caimei/www/pojo/page/SupplierDetail.java

@@ -38,6 +38,22 @@ public class SupplierDetail implements Serializable {
     private String productDesc;
     /** 网站 */
     private String site;
+    /**
+     * 医疗器械经营许可
+     */
+    private String medicalPracticeLicense;
+    /**
+     * 公司资质照片1
+     */
+    private String medicalPracticeLicenseImg1;
+    /**
+     * 公司资质照片2
+     */
+    private String medicalPracticeLicenseImg2;
+    /**
+     * 公司资质照片3
+     */
+    private String medicalPracticeLicenseImg3;
 
     private static final long serialVersionUID = 1L;
 }

+ 15 - 0
src/main/java/com/caimei/www/service/page/impl/SupplierServiceImpl.java

@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  * Description
@@ -36,6 +37,20 @@ public class SupplierServiceImpl implements SupplierService {
         if (!StringUtils.isEmpty(supplier.getBusinessScope())) {
             String[] businessScope = supplier.getBusinessScope().split("/");
             supplier.setBusinessScopeArr(businessScope);
+            supplier.setMedicalPracticeLicense(supplierDao.medicalPracticeLicense(supplierId));
+        }
+        //公司资质照片
+        List<String> productionLicence = supplierDao.getShopCertById(supplierId, 2);
+        if (null != productionLicence && productionLicence.size() > 0) {
+            supplier.setMedicalPracticeLicenseImg1(productionLicence.get(0));
+        }
+        List<String> hygienicLicense = supplierDao.getShopCertById(supplierId, 5);
+        if (null != hygienicLicense && hygienicLicense.size() > 0) {
+            supplier.setMedicalPracticeLicenseImg2(hygienicLicense.get(0));
+        }
+        List<String> taxLicense = supplierDao.getShopCertById(supplierId, 6);
+        if (null != taxLicense && taxLicense.size() > 0) {
+            supplier.setMedicalPracticeLicenseImg3(taxLicense.get(0));
         }
         return supplier;
     }

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

@@ -18,5 +18,11 @@
         from shop s
         where shopID = #{supplierId}
     </select>
+    <select id="getShopCertById" resultType="java.lang.String">
+        SELECT image FROM shopcert WHERE shopID = #{shopId} AND shopCertTypeID = #{shopCertTypeId}
+    </select>
+    <select id="medicalPracticeLicense" resultType="java.lang.String">
+        SELECT medicalPracticeLicenseImg1 FROM shop WHERE shopID = #{shopId}
+    </select>
 
 </mapper>

+ 15 - 13
src/main/resources/static/css/activity/attestation.css

@@ -115,9 +115,9 @@ li{list-style:none}
     .section_main.nine .title{width: 100%;margin-bottom: 99px;}
     .section_main.nine .title h1{line-height: 40px;text-align: center;font-size: 40px;color: #333333;font-weight: normal;}
     .section_main.nine .title h1 span{ font-size: 24px;color: #999; }
-    .section_main.nine .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box;}
-    .section_main.nine .section_content .section_li{position: relative; width: 390px;height: 160px;float: left;-webkit-box-sizing: border-box;box-sizing: border-box;margin-right: 15px;margin-bottom: 15px;background-color: #FFFFFF;padding: 20px;-webkit-transition: all .4s;-o-transition: all .4s;transition: all .4s;border-bottom-width: 1px;border-bottom-color: #fff;border-bottom-style: solid; cursor: pointer;}
-    .section_main.nine .section_content .section_li:nth-child(3n){margin-right: 0;}
+    .section_main.nine .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box;height: 160px;}
+    .section_main.nine .section_content .section_li{position: relative; width: 390px;height: 160px;-webkit-box-sizing: border-box;box-sizing: border-box;margin-right: 15px;margin-bottom: 15px;background-color: #FFFFFF;padding: 20px;-webkit-transition: all .4s;-o-transition: all .4s;transition: all .4s;border-bottom-width: 1px;border-bottom-color: #fff;border-bottom-style: solid; cursor: pointer;}
+    /*.section_main.nine .section_content .section_li:nth-child(3n){margin-right: 0;}*/
     .section_main.nine .section_content .section_li img{float: left; width: 120px;height: 120px;display: block;border-radius: 50%;border: 1px solid #F5F5F5;}
     .section_main.nine .section_content .section_li .content{ float: left ;margin-left: 18px; width: 208px;}
     .section_main.nine .section_content .section_li .icon-marks{display: block; width: 40px;height: 40px;background: url(/img/activity/attestation/icon-marks.png) no-repeat center;background-size: 40px;}
@@ -125,21 +125,21 @@ li{list-style:none}
     .section_main.nine .section_content .section_li:hover { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px);border-bottom-color: #BC1724}
     .section_main.nine .section_content .section_li:hover .name{color: #BC1724}
     .section_main.nine .section_content .section_li:hover .icon-marks{ background-image: url("/img/activity/attestation/icon-marks-active.png")}
+    .section_main.nine .section_content.mobile{display: none !important;}
     /*section_main 10*/
     .section_main.ten{ background: #fff; padding: 79px 0; }
     .section_main.ten .title{width: 100%;margin-bottom: 99px;}
     .section_main.ten .title h1{line-height: 40px;text-align: center;font-size: 40px;color: #333333;font-weight: normal;}
     .section_main.ten .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}
     .section_main.ten .section_content .section_li{ display: -webkit-box; display: -ms-flexbox; display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; width: 288px; height: 218px; /*float: left ;margin:0 16px 16px 0;*/background-size: 288px;background-repeat: no-repeat; -webkit-transition: all 0.4s; -o-transition: all 0.4s; transition: all 0.4s;cursor: pointer}
-    .section_main.ten .section_content .section_li:nth-child(4n) { margin-right: 0}
     .section_main.ten .section_content .section_li .logo{ width: 98px;height: 98px;margin-bottom: 28px;border-radius: 50%; }
     .section_main.ten .section_content .section_li .name{ font-size: 20px; color: #fff }
     /*.section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_club_01.png");margin-right: 80px; }*/
-    .section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_device_01.png"); margin-right: 80px;}
-    /*.section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_club_02.png") }*/
-    .section_main.ten .section_content .section_li:nth-child(2){background-image: url("/img/activity/attestation/section_bg_device_02.png") }
+    .section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_device_01.png"); margin-right: 40px;}
+    .section_main.ten .section_content .section_li:nth-child(2){background-image: url("/img/activity/attestation/section_bg_device_02.png"); margin-right: 40px;}
+    .section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_device_03.png"); }
     .section_main.ten .section_content .section_li:hover { -webkit-transform: translateY(-15px); -ms-transform: translateY(-15px); transform: translateY(-15px);border-bottom-color: #BC1724}
-
+    .section_main.ten .section_content.mobile{display: none !important; }
     /*侧边栏-联系我们*/
     .section-tel{width: 52px;height: 92px;position: fixed;right: 0;top: 50%;z-index: 99;border-radius: 2px;-webkit-box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);}
     .section-tel .box{width: 52px;height: 46px;background: #FFFFFF;-webkit-box-sizing: border-box;box-sizing: border-box;padding: 9px 12px;cursor: pointer;position: relative;}
@@ -280,21 +280,23 @@ li{list-style:none}
     .section_main.nine .section_content .section_li .content{float: left;margin-left: 2.4vw;width: 24vw;}
     .section_main.nine .section_content .section_li .content .name{font-size: 2.6vw;color: #333;line-height: 1.6em;margin-top: 1.2vw}
     .section_main.nine .section_content .section_li .icon-marks{display: block; width: 4vw;height: 4vw;background: url(/img/activity/attestation/icon-marks.png) no-repeat center;background-size: 4vw;}
-
+    .section_main.nine .section_content.pc{display: none !important;}
     /*section_main 10*/
     .section_main.ten{ background: #fff; padding:10vw 8.8vw;}
     .section_main.ten .title{width: 100%;margin-botgbtom:  8vw;}
     .section_main.ten .title h1{line-height: 4.9vw;text-align: center;font-size: 4.8vw;color: #333333;font-weight: normal;}
     .section_main.ten .section_content{width: 100%;-webkit-box-sizing: border-box;box-sizing: border-box;margin-top: 8.2vw;}
-    .section_main.ten .section_content .section_li{ display: -webkit-box; display: -ms-flexbox; display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; width: 39vw; height: 29.6vw; float: left ;margin:0 4.4vw 4.4vw 0;background-size: 39vw; background-repeat: no-repeat;}
+    .section_main.ten .section_content .section_li{ display: -webkit-box; display: -ms-flexbox; display: flex;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; width: 100%; height: 29.6vw; float: left ;margin:0 4.4vw 4.4vw 0;background-size: 39vw; background-repeat: no-repeat;}
     .section_main.ten .section_content .section_li:nth-child(2n) { margin-right: 0}
     .section_main.ten .section_content .section_li .logo{ width: 12.9vw;height: 12.9vw;margin-bottom: 3.3vw;border-radius: 50%; }
     .section_main.ten .section_content .section_li .name{ font-size: 3.6vw; color: #fff }
-    .section_main.ten .section_content .section_li:nth-child(1){background-image: url("/img/activity/attestation/section_bg_device_01.png") }
-    .section_main.ten .section_content .section_li:nth-child(2){background-image: url("/img/activity/attestation/section_bg_device_02.png") }
+    .section_main.ten .section_content .section_li {background-size: cover; background-position: center;}
+    .section_main.ten .section_content .section_li_0{background-image: url("/img/activity/attestation/section_bg_device_01.png") }
+    .section_main.ten .section_content .section_li_1{background-image: url("/img/activity/attestation/section_bg_device_02.png") }
+    .section_main.ten .section_content .section_li_2{background-image: url("/img/activity/attestation/section_bg_device_03.png") }
     /*.section_main.ten .section_content .section_li:nth-child(3){background-image: url("/img/activity/attestation/section_bg_club_02.png") }*/
     /*.section_main.ten .section_content .section_li:nth-child(4){background-image: url("/img/activity/attestation/section_bg_device_02.png") }*/
-
+    .section_main.ten .section_content.pc{display: none !important; }
     /*侧边栏-联系我们*/
     .section-tel{width: 52px;height: 92px;position: fixed;right: 0;top: 50%;z-index: 99;border-radius: 2px;-webkit-box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);box-shadow: 0px 2px 12px 0px rgba(43, 43, 43, 0.1);}
     .section-tel .box{width: 52px;height: 46px;background: #FFFFFF;-webkit-box-sizing: border-box;box-sizing: border-box;padding: 9px 12px;cursor: pointer;position: relative;}

+ 2 - 2
src/main/resources/static/css/base/base.pc.css

@@ -15,9 +15,9 @@ iframe{width:320px !important;height: 280px !important}
 .impowerBox .status_icon {display: none;}
 .impowerBox .status {text-align: center;}
 /*定义滚动条样式*/
-::-webkit-scrollbar{width:10px;height:10px;background-color:#F6F6F6}
+::-webkit-scrollbar{width:4px;height:4px;background-color:#F6F6F6}
 ::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.1);border-radius:2px;background-color:#F6F6F6}
-::-webkit-scrollbar-thumb{border-radius:2px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);background-color:#93979F}
+::-webkit-scrollbar-thumb{border-radius:8px;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);background-color:rgba(0,0,0,0.2)}
 /* 自定义下拉框 */
 .jqSelect{position:relative;width:100px;height:32px;line-height:32px;border:1px solid #666;border-radius:2px;cursor:pointer}
 .jqSelect:before{content:'\276F';font-weight: normal;position: absolute;right: 10px;top: 0;transform: rotate(90deg);}

+ 23 - 2
src/main/resources/static/css/base/floor.css

@@ -4,6 +4,12 @@
  */
 @media screen and (min-width:768px) {
 .section_page{width:100%;height:auto;float:left}
+.section_page.hot{width:884px;height:432px;background: url("/img/hot/icon-hot-bg.png");background-size: cover;}
+.swiper-container-floor.hotList{padding: 0 12px;}
+.section_page.hot .section_page_title{width:100%;height:103px;box-sizing:border-box;padding:31px 16px 16px 16px;position: relative;}
+.section_page.hot .section_page_title h1{font-size:24px;line-height:31px;text-align:left;color:#FFFFFF}
+.section_page.hot .section_page_title p{font-size:14px;line-height:19px;text-align:left;color:#FFFFFF;margin-top:6px}
+.section_page.hot .section_page_btn{display: block;width: 102px;height: 36px;background: url("/img/hot/icon-hot-btn.png");background-size: cover;position: absolute;right: 20px;top: 49px;}
 .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}
@@ -11,8 +17,10 @@
 .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 .recommendBox-wrapperHot {overflow: visible !important;}
 .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;position: relative;}
+.section_page  .page_main_item.hot{width:164px;height:268px;float:left;margin-right:10px;margin-bottom:16px;background-color:#FFFFFF;transition:all 0.4s;display:block;position: relative;}
 .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)}
@@ -77,20 +85,32 @@
 .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}
-
-#recommendBox .swiper-pagination{width:100%;padding:10px 0;z-index:1;text-align:center;font-size:0}
+#recommendBox {position: relative;height: 329px;overflow: hidden;}
+#recommendBox .swiper-pagination{width:100%;padding:10px 0;z-index:1;text-align:center;font-size:0;left:0;bottom: 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.hot span{display:inline-block;width:14px;height:6px;border:5px solid transparent;background: rgba(255, 180, 150, 0.39);cursor:pointer;opacity:1;}
+#recommendBox .swiper-pagination.hot span:before{content:"";display:inline-block;width:100%;height:6px;background: rgba(255, 180, 150, 0.39);border-radius:3px}
+#recommendBox .swiper-pagination span.on{width:28px;opacity:1}
 #recommendBox .swiper-pagination span.on{width:28px;opacity:1}
+#recommendBox .swiper-pagination.hot span.swiper-pagination-bullet-active{width:28px;opacity:1}
+#recommendBox .swiper-pagination.hot span.swiper-pagination-bullet-active:before{background:#FFFFFF;}
+.swiper-pagination-bullet{background: none !important;}
+
 }
 /**
  * 移动端
  */
 @media screen and (max-width:768px) {
 .section_page{width:100%;height:auto;position: relative;}
+.section_page.hot{width:100%;height:auto;background: url("/img/hot/icon-hot-bg@h5.png");background-size: cover;}
 .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.hot .section_page_title h1{color:#FFFFFF}
+.section_page.hot .section_page_title p{color:#FFFFFF;}
+.swiper-container-floor.hotList{padding: 0 1vw;}
+.section_page.hot .section_page_btn{display: block;width:15.4vw;height: 5.9vw;background: url("/img/hot/icon-hot-btn@h5.png");background-size: cover;position: absolute;right:3.3vw;top: 6.8vw;}
 .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_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
@@ -163,6 +183,7 @@
 #recommendBox .swiper-pagination{width:100%;height:2.6vw;z-index:1;text-align:center;font-size:0;position:absolute;bottom:2.6vw;left:0}
 #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.hot .swiper-pagination-bullet:before{content:"";display:block;width:100%;height:.6vw;background:#FFFFFF;border-radius:.3vw}
 #recommendBox .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active{width:3.8vw;opacity:1}
 #recommendBox .swiper-wrapper{height:inherit}
 }

+ 16 - 2
src/main/resources/static/css/index/index_new.pc.css

@@ -20,6 +20,20 @@ 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}
+.swiper-slide {
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+}
 /*公告*/
 #new-container{height: 48px;background: url("/img/base/icon-newbg@2x.png");background-size: cover;}
 #new-container .new-list{float: left;}
@@ -32,9 +46,9 @@ li{list-style:none;}
 /* 楼层 */
 .section_container{width:100%;height:auto;float:left}
 .section_container .inner{width:1184px;margin:0 auto}
-.section_left{width:900px;float:left}
+.section_left{width:900px;float:left;padding-top:40px;}
 /*右边区域*/
-.section_right{width:284px;float:right;box-sizing:border-box;padding-top:103px}
+.section_right{width:284px;float:right;box-sizing:border-box;padding-top:40px}
 .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}

+ 6 - 2
src/main/resources/static/css/product/detail.h5.css

@@ -95,8 +95,12 @@ li{list-style:none}
 .productInfo .tabCon img{max-width:100%;height:auto!important;}
 .productInfo .tabCon table{width:100%;text-align:left}
 .productInfo .tabCon td{padding:1.5vw;line-height:5vw}
-.productInfo .tabCon td:nth-of-type(1){width:20%;color:#93979F}
-.productInfo .tabCon td:nth-of-type(2){width:80%;color:#4A4F58}
+.productInfo .tabCon td a{color: #4688fa;}
+.productInfo .tabCon td:nth-of-type(1){width:33.3%;color:#93979F}
+.productInfo .tabCon td:nth-of-type(2){width:33.3%;color:#93979F}
+.productInfo .tabCon td:nth-of-type(3){width:33.3%;color:#93979F}
+.productInfo .tabCon td a{color:#4688fa}
+.productInfo .product-qualificationTable{margin-bottom: 3vw;}
 .tabCon .item div p{line-height: 6vw;text-align: left;font-size:3.3vw}
 .tabCon .item div p.tl{line-height:8vw;text-align: left; font-weight: bold;}
 .productInfo .comment{color:#93979F;padding:5vw 0;    margin-right: 25px;position: relative}

+ 8 - 3
src/main/resources/static/css/product/detail.pc.css

@@ -158,10 +158,15 @@ li{list-style:none;}
 .productInfo .tabCon img{max-width:100%;}
 .productInfo .tabCon table{width:100%;text-align:left}
 .productInfo .tabCon td{padding:10px 12px;line-height:20px}
-.productInfo .tabCon td:nth-of-type(1){width:20%;color:#93979F}
-.productInfo .tabCon td:nth-of-type(2){width:80%;color:#4A4F58}
+.productInfo .tabCon td a{color: #4688fa;}
+.productInfo .tabCon td:nth-of-type(1){width:30%;color:#93979F}
+.productInfo .tabCon td:nth-of-type(2){width:40%;color:#93979F}
+.productInfo .tabCon td:nth-of-type(3){width:30%;color:#93979F}
+.productInfo .tabCon td a{color:#4688fa}
 .productInfo .comment{color:#93979F;padding:40px 0;margin-right: 30px; position: relative}
-
+.productInfo .product-qualificationTable{margin-bottom: 15px;}
+.productInfo .product-qualificationImg{width: 100%;height: auto;}
+.productInfo .product-qualificationImg image{width: 100%;height: auto;display: block;}
 .wrap>.rgt{float:right;width:284px}
 .wrap>.rgt .hd{height:40px;line-height:40px;padding:0 16px;font-size:16px;color:#e15616;font-weight:bold;background:#ffe6dc}
 .shopBox{margin-bottom:16px;background:#FFF}

+ 206 - 0
src/main/resources/static/css/product/product-hot.css

@@ -0,0 +1,206 @@
+@charset "utf-8";
+li{list-style:none}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    .product-banner{width: 100%;height: 660px;position: relative;}
+    .product-banner .product-banner-top{width: 100%;height: 510px;background: url("/img/hot/icon-hottop-bg.png");background-size: cover;}
+    .product-banner .product-banner-top .title{width: 100%;height: 140px;line-height: 140px;font-size: 56px;font-weight: bold;text-align: center;color: #FFFFFF;}
+    .product-banner-bot{width: 100%;height: auto;position: absolute;top: 140px;left: 0;}
+    .product-banner-bot .inner{width: 1184px;height: auto;margin: 0 auto;}
+    #productHotBanner{width:100%;height:480px;background: url("/img/hot/icon-hotpor-bg.png");position:relative;box-sizing: border-box;padding: 16px;}
+    #productHotBanner .swiper-wrapper{position:relative;height:100%;z-index:0}
+    #productHotBanner .swiper-wrapper .swiper-slide{width:100%;height: 480px;position:relative;zoom:1;vertical-align:middle;overflow:hidden;}
+    #productHotBanner .swiper-wrapper .swiper-slide-image{width: 448px;height: 448px;float: left;box-sizing: border-box;border: 1px solid #e1e1e1;}
+    #productHotBanner .swiper-wrapper .swiper-slide-image img{width: 100%;height: 100%;display: block;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info{width: 700px;height: 448px;float: right;box-sizing: border-box;padding: 72px 100px;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-name{width:100%;height: auto;margin-bottom: 110px;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-name p{line-height: 35px;font-size: 24px;color: #4A4F58;text-align: center;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-btn {width: 100%;height: 44px;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-btn .slide-btn{width: 204px;height: 44px;margin: 0 auto;display:block;background: #F94B4B;line-height: 44px;text-align: center;font-size: 16px;color: #FFFFFF;}
+    #productHotBanner .swiper-button-prev:hover,#productHotBanner .swiper-button-next:hover{background:rgba(255,230,220,.6)}
+    #productHotBanner .swiper-pagination{width:100%;height:14px;position:absolute;left:0;bottom:-35px;z-index:1;text-align:center;font-size:0}
+    #productHotBanner .swiper-pagination span{display:inline-block;border:5px solid transparent;cursor:pointer}
+    #productHotBanner .swiper-pagination span:before{content:"";display:inline-block;width:14px;height:4px;background: rgba(255, 180, 150, 0.39);border-radius:2px}
+    #productHotBanner .swiper-pagination span.on:before{width:28px;background:#E15616}
+    .search-text{float: left;margin-right: 20px;}
+    .search-text-brand{float: left;position: relative; height: 24px;padding: 0 24px 0 12px;line-height: 24px;box-sizing: border-box;border: 1px solid #DDDDDD;border-radius: 2px;text-align: center;font-size: 14px;color: #4A4F58;}
+    .search-text-brand a{color: #E15621;}
+    .search-text-brand .icon:before{background-position: -120px -657px;width: 24px;height: 24px;right: 0;position: absolute;cursor: pointer;}
+    .product-brand{width:1184px;margin:16px auto;box-sizing:border-box;min-height: 80px;padding:24px 12px 12px 12px;font-size:0;text-align:center;background:#FFF;position: relative;}
+    .product-brand .product-brand-name{width: 116px;float: left;border-right: 1px solid #F7F7F7;line-height: 44px;text-align: center;font-size: 16px;color: #4A4F58;}
+    .product-brand .product-brand-name.show{line-height: 88px;}
+    .product-brand-oper{width: 110px;height: 32px;position: absolute;right: 24px;top: 24px;}
+    .product-brand-more{width: 50px;height: 24px;line-height: 24px;font-size: 14px;color: #909090;text-align: left;transition: all 0.2s;cursor: pointer;box-sizing: border-box;float: left;position: relative;}
+    .product-brand-more .icon:before{background-position: -93px 2px;width: 20px;height: 32px;right: 0;position: absolute;}
+    .product-brand-more.show .icon:before{background-position: -123px 2px;width: 20px;height: 32px;right: 0;position: absolute;}
+    .product-brand-add{width: 56px;height: 24px;box-sizing: border-box;border: 1px solid #E2E7EF;float: right;font-size: 14px;color: #9AA5B5;line-height: 24px;text-align: center;cursor: pointer;}
+    .product-brand-list{width: 900px;float: left;box-sizing: border-box;padding:0 24px;height: 44px;overflow: scroll;overflow-x: hidden;overflow-y:auto;}
+    .product-brand-list.show{height: 150px;}
+    .product-brand-list .brand-list{width: 90px;height: 32px;padding: 0 12px;border: 1px solid #E2E7EF;float: left;box-sizing: border-box;line-height: 32px;font-size: 16px;color: #4A4F58;border-radius: 2px;margin-right: 24px;margin-bottom: 12px;}
+    .product-brand-list .brand-list.checked{border-color: #E15621;}
+    .product-brand-list .brand-list.checked a{color: #E15621;}
+    .product-brand-list .brand-list a{width: 100%;height: 100%;display: block;text-align: center;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 1;line-clamp: 1;-webkit-box-orient: vertical;word-break: break-all;}
+    .product-brand-list .brand-list a:hover{color: #4A4F58;}
+    .product-brand-list .brand-list.checked a:hover{color: #E15621;}
+    .product-brand-button{width: 100%;height: 32px;float: left;}
+    .product-brand-button .brand-button{width: 160px;height: 32px;margin: 0 auto;}
+    .product-brand-button .brand-button .btn{width: 64px;height: 32px;cursor: pointer;float: left;margin: 0 8px;border-radius: 2px; line-height: 32px;text-align: center;font-size: 14px;box-sizing: border-box;color: #FFFFFF;}
+    .product-brand-button .brand-button .btn.confirm.disabled{background-color: #E2E7EF;}
+    .product-brand-button .brand-button .btn.confirm{background-color: #E15621;}
+    .product-brand-button .brand-button .btn.cancel{background-color: #FFFFFF;border: 1px solid #E2E7EF;color: #4A4F58;}
+    .sortBox{width:1184px;margin:16px auto;box-sizing:border-box;text-align:center;background:#FFFFFF;position: relative;}
+    .sortBox li{display:inline-block;cursor:pointer;width:128px;height:64px;line-height:64px;font-size:16px;background:#FFFFFF;color:#93979F;position:relative;float: left;border-right: 1px solid #F7F7F7;}
+    .sortBox li.on,.sortBox li.up,.sortBox li.down{background:#FFE6DC;color:#E15616}
+    .sortBox li:before,.sortBox li:after{position:absolute;right:35px;content:'';width:0;height:0;border-style:solid}
+    .sortBox li:before{border-width:0 5px 5px 5px;border-color:transparent transparent #BEC2C9 transparent;top:26px}
+    .sortBox li:after{border-width:5px 5px 0 5px;border-color:#BEC2C9 transparent transparent transparent;top:34px}
+    .sortBox li:first-child:before,.sortBox li:first-child:after{display:none}
+    .sortBox li.up:before{border-bottom-color:#E15616}
+    .sortBox li.up:after{border-top-color:#E15616;opacity:.3}
+    .sortBox li.down:after{border-top-color:#E15616}
+    .sortBox li.down:before{border-bottom-color:#E15616;opacity:.3}
+    .sortBox .sortBox-checked{width: 200px;height: 64px;position: absolute;top: 0;right: 0;box-sizing: border-box;padding: 18px;}
+    .sortBox-checked .sortBox-new{float: right;height: 28px;line-height: 16px;box-sizing: border-box;padding: 6px 0;display: flex;cursor: pointer;margin-right: 10px;}
+    .sortBox-checked .coll-checked{width: 16px;height: 16px;background: url("/img/cart/icon_weigouxuan@2x.png") no-repeat;background-size: cover;display: block;margin-right: 6px;}
+    .sortBox-checked .coll-checked.checked{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
+
+    .productList{width:1184px;min-height:328px;margin:0 auto;box-sizing:border-box}
+    .productList .productItem{width:184px;height:268px;float:left;background:#fff;position:relative;margin:0 16px 16px 0;overflow:hidden;float:left}
+    .productList .productItem:nth-child(6n){margin-right:0}
+    .productList .productItem img{width:100%;height:164px}
+    .productList .productItem .name{display:block;padding:0 8px;margin-top:8px;height:40px;line-height:21px;vertical-align:middle;word-break:break-all;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;display:-webkit-inline-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
+    .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
+    .productItem .price{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 8px;height:54px;width:100%}
+    .productItem .price .icon:before{width:63px}
+    .productItem .price .icon.i5:before{background-position:-2px -832px}
+    .productItem .price .icon.i1:before{background-position:-2px -712px}
+    .productItem .price .icon.i2:before{background-position:-2px -742px}
+    .productItem .price .icon.i3:before{background-position:-2px -772px}
+    .productItem .price .icon.i4:before{background-position:-2px -802px}
+    .listTag{margin:12px 8px 0 0;padding:0 2px}
+    .productItem .image .icon{position:inherit}
+    .sortBox li.on,.sortBox li.up,.sortBox li.down{background:#FFE6DC;color:#E15616}
+    .empty{margin-top:32px;background:#fff}
+    .empty p{color:#909090;font-size:14px}
+
+    .productItem .price em{font-weight: normal}
+    .productItem .price em.bold{font-weight: bold}
+    .productItem .price .price_text_tag{width: 100%;height: 22px;box-sizing: border-box;float: left;margin-top: 3px;}
+    .productItem .price .price_text_tag .listTag{margin: 0;float: left}
+    .productItem .price .price_text_tag .couponTag{margin: 0 4px 0 0;float: left}
+    .productItem .price .main_price_unde { width: 100%;height: 31px;line-height: 31px;font-size: 14px;color: #f94b4b;text-align: left;float: left;}
+    .productItem .price .main_price_show { width: 100%;height: 30px;line-height: 30px;font-size: 14px;color: #f94b4b;text-align: left;float: left;}
+    .productItem .price .main_price_show.none { color: #999999; text-decoration: line-through;}
+    .productItem .name .tag{width: 44px;height: 18px;line-height: 18px;font-size: 12px;display: inline-block;margin-right: 5px;text-align: center;color: #FFFFFF !important;background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);border-radius: 0px 10px 0px 0px;}
+
+    .login-btn{font-size: 12px}
+    .listTitle{width:1184px;margin:0 auto 16px auto;box-sizing:border-box;padding:16px 30px;border-radius:0 0 2px 2px;background:#fc5331 url(/img/cart/promotions.png) no-repeat right;background-size:auto 100%;color:#FFF}
+    .listTitle h1{font-size:20px;line-height:42px;font-weight:normal;margin-bottom:16px}
+    .listTitle p{text-indent:1em;line-height:36px;font-size:16px}
+    .listTitle p em{color:#e15616;font-style:normal;display:inline-block;height:24px;line-height:24px;padding:0 10px;background:#FFF}
+    .productItem .name span.tag{width: 44px;height: 18px;line-height: 18px;font-size: 12px;display: inline-block;margin-right: 5px;text-align: center;color: #FFFFFF !important;background-image: linear-gradient(270deg, #f9c023 0%, #f83600 100%);border-radius: 0px 10px 0px 0px;margin-top: 2px;}
+    /*会员标签*/
+    .productItem .price .price_text_tag {-webkit-transform: scale(0.8) translateX(-18px);-ms-transform: scale(0.8) translateX(-18px);transform: scale(0.8) translateX(-18px)}
+    .productItem .price .price_text_tag .svip-tag,
+    .productItem .price .price_text_tag .listTag{-webkit-transform: translateX(4px);-ms-transform: translateX(4px);transform: translateX(4px)}
+    .productItem .price .svip-tag{width:100%;height:22px;letter-spacing:0}
+    .productItem .price .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:22px;text-align:center;line-height:22px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+    .productItem .price .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+    .productItem .price .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:24px;padding-right:2px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:12px}
+    .productItem .price .svip-tag .svip-price span{color: #333}
+}
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .product-banner{width: 100%;height: 72vw;position: relative;background: #FFFFFF;}
+    .product-banner .product-banner-top{width: 100%;height: 57.3vw;background: url("/img/hot/icon-hottop-bg@h5.png");background-size: cover;}
+    .product-banner .product-banner-top .title{width: 100%;height: 17.7vw;line-height: 17.7vw;font-size:6.5vw;font-weight: bold;text-align: center;color: #FFFFFF;}
+    .product-banner-bot{width: 100%;height: auto;position: absolute;top: 17.7vw;left: 0;}
+    .product-banner-bot .inner{width: 100%;height: auto;box-sizing: border-box;padding: 0 6.4vw;}
+    #productHotBanner{width:100%;height:50vw;background: url("/img/hot/icon-hotpor-bg@h5.png");position:relative;box-sizing: border-box;padding: 2.4vw;}
+    #productHotBanner .swiper-wrapper{position:relative;height:48vw;z-index:0}
+    #productHotBanner .swiper-wrapper .swiper-slide{width:100%;height: 41.4vw;position:relative;zoom:1;vertical-align:middle;overflow:hidden;}
+    #productHotBanner .swiper-wrapper .swiper-slide a{display: block;width: 100%;height: 100%;}
+    #productHotBanner .swiper-wrapper .swiper-slide-image{width: 41.4vw;height: 41.4vw;float: left;box-sizing: border-box;border: 1px solid #e1e1e1;}
+    #productHotBanner .swiper-wrapper .swiper-slide-image img{width: 100%;height: 100%;display: block;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info{width: 38.2vw;height: 41.4vw;float: right;box-sizing: border-box;padding: 4vw 2vw;position: relative;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-name{width:100%;height: auto;margin-bottom:11vw;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-name p{line-height: 6vw;font-size: 4.2vw;color: #4A4F58;text-align: center;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-btn {width: 100%;height: 8vw;position: absolute;bottom: 0;left: 0;}
+    #productHotBanner .swiper-wrapper .swiper-slide-info .swiper-slide-btn .slide-btn{width: 26.4vw;height: 8vw;margin: 0 auto;display:block;background: #F94B4B;line-height: 8vw;text-align: center;font-size: 16px;color: #FFFFFF;}
+    #productHotBanner .swiper-pagination{width:100%;height:2.6vw;z-index:1;text-align:center;font-size:0;position:absolute;bottom:1.5vw;left:0}
+    .swiper-pagination-bullet{width:10px;height:4px;background: rgba(225, 86, 33, 0.39);border-radius:50%;}
+    #productHotBanner .swiper-pagination .swiper-pagination-bullet:before{content:"";display:block;width:10px;height:4px;background: rgba(225, 86, 33, 0.39);border-radius:2px;}
+    #productHotBanner .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active{width:20px;height:4px;opacity:1;background: #E15621;border-radius: 2px;}
+    #productList{position: relative;}
+    .productList{margin: 3.2vw auto;width: 97vw;margin-top: 0;}
+    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;position: relative;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
+    .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
+    .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
+    .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}
+    .productItem .price .mIcon.i1:before {background-position: -84vw -69.5vw;}
+    .productItem .price .mIcon.i2:before {background-position: -84vw -76.5vw;}
+    .productItem .price .mIcon.i3:before {background-position: -84vw -83.7vw;}
+    .productItem .price .mIcon.i4:before {background-position: -84vw -90.7vw;}
+    .productItem .price .mIcon {display: inline-block;font-size: 0;height: 5vw;line-height: 5vw;vertical-align: text-bottom;}
+    .productItem img {width: 45.6vw;height: 45.6vw;}
+    .productItem .name {display: block;padding: 0 1.2vw;height: 9.3vw;line-height: 4.8vw;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;}
+    .price {padding: 2vw 1.2vw;overflow: hidden;}
+    .couponTag{padding:0 .4vw;border:.27vw solid #f94b4b;background:#fff1eb;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;color: #f94b4b;border-radius: 0.2vw;margin-right: .4vw;}
+    .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;border-radius: 0.2vw;}
+    .price_grade{width: 100%;float: left;margin-top: 2vw;}
+    .productItem .price .main_price_unde {width: 100%;height: 6.5vw;line-height: 6.5vw;font-size: 3.4vw;color: #4a4f58;text-align: left;float: left;}
+    .productItem .price .price_text_tag {width: 100%;box-sizing: border-box;}
+    .productItem .price .main_price_show{color: #f94b4b}
+    .productItem .name span.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: .25vw;}
+
+    .original-price{text-decoration:line-through}
+    .listTitle{width:100%;min-height:3.2vw;box-sizing:border-box;padding:3.3vw;background:#fc5331 url(/img/cart/promotions.png) no-repeat right;background-size:auto 100%;color:#FFF}
+    .listTitle h1{font-size:4vw;line-height:8vw;font-weight:normal}
+    .listTitle p{text-indent:1em;line-height:7vw;font-size:3.2vw}
+    .listTitle p em{color:#e15616;font-style:normal;display:inline-block;height:4.8vw;line-height:4.8vw;padding:0 1.5vw;background:#FFF}
+
+    /*会员标签*/
+    .productItem .price .price_text_tag {-webkit-transform: scale(0.8) translateX(-4.2vw);-ms-transform: scale(0.8) translateX(-4.2vw);transform: scale(0.8) translateX(-4.2vw)}
+    .productItem .price .price_text_tag .svip-tag,
+    .productItem .price .price_text_tag .listTag{-webkit-transform: translateX(1.2vw);-ms-transform: translateX(1.2vw);transform: translateX(1.2vw)}
+    .productItem .price .svip-tag{float: left; height:4.74vw;letter-spacing:0;overflow: hidden}
+    .productItem .price .svip-tag .svip-icon{position:relative;z-index:9;float: left; width:9.8vw;height:4.74vw;text-align:center;line-height:4.74vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+    .productItem .price .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+    .productItem .price .svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:5.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.74vw;height: 4.74vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
+    .productItem .price .svip-tag .svip-price span{color: #333}
+    .productItem .price .svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
+    /*筛选项*/
+    .product-brand-content{width: 100%;height: 18.6vw;box-sizing: border-box;padding: 3.3vw 2.8vw;position: relative;}
+    .product-brand{width: 100%;height: 100%;background: #FFFFFF;z-index: 9999;box-sizing: border-box;padding: 2vw 0;border-radius: 1vw;}
+    .product-brand-name{padding: 0 3vw;text-align: center;line-height: 8vw;font-size: 3.8vw;color: #333;float: left;font-weight: bold;}
+    .product-brand-more{width: 9vw;height: 100%;float: right;text-align: center;box-sizing: border-box;}
+    .product-brand-more .icon:before{background-position: -51.5vw 0px;width: 5.4vw;height: 6.7vw;right: 5vw;position: absolute;}
+    .product-brand-more.show .icon:before{background-position: -43.5vw 0px;width: 5.4vw;height: 6.7vw;right: 5vw;position: absolute;}
+    .product-brand-list{float: left;box-sizing: border-box;height:100%;}
+    .product-brand-list .brand-list{width: 20.5vw;height: 8vw;padding: 0 2.4vw;border: 1px solid #E2E7EF;float: left;box-sizing: border-box;line-height: 8vw;;font-size: 3vw;color: #4A4F58;margin-right: 3.2vw;}
+    .product-brand-list .brand-list:nth-child(4n){margin-right: 0;}
+    .product-brand-list .brand-list.checked{border-color: #E15621;}
+    .product-brand-list .brand-list.checked a{color: #E15621;}
+    .product-brand-list .brand-list a{width: 100%;height: 100%;display: block;text-align: center;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 1;line-clamp: 1;-webkit-box-orient: vertical;word-break: break-all;}
+    .product-brand-list .brand-list a:hover{color: #4A4F58;}
+    .product-brand-list .brand-list.checked a:hover{color: #E15621;}
+    .product-brand-fiexd{width: 100%;height: 60vw;position: absolute;top: 14vw;left: 0;padding: 0 2.8vw;box-sizing: border-box;z-index: 999;}
+    .product-brand-fiexdcontent{width: 100%;height: 100%;background: #FFFFFF;box-shadow: 0 10px 14px 0 rgba(86, 119, 252, 0.2);padding: 3vw 0;box-sizing: border-box;}
+    .product-brand-scroll{width: 100%;height: 40vw;overflow: scroll;overflow-x: hidden;overflow-y:auto;box-sizing: border-box;padding: 0 2.4vw;}
+    .product-brand-scroll .brand-list{width: 20.5vw;height: 8vw;padding: 0 2.4vw;border: 1px solid #E2E7EF;float: left;box-sizing: border-box;line-height: 8vw;;font-size: 3vw;color: #4A4F58;margin-right: 2.4vw;margin-bottom: 2.4vw;}
+    .product-brand-scroll .brand-list:nth-child(4n){margin-right: 0;}
+    .product-brand-scroll .brand-list.checked{border-color: #E15621;}
+    .product-brand-scroll .brand-list.checked a{color: #E15621;}
+    .product-brand-scroll .brand-list a{width: 100%;height: 100%;display: block;text-align: center;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 1;line-clamp: 1;-webkit-box-orient: vertical;word-break: break-all;}
+    .product-brand-scroll .brand-list a:hover{color: #4A4F58;}
+    .product-brand-scroll .brand-list.checked a:hover{color: #E15621;}
+    .product-screen-btn{width: 100%;height: 10vw;float: left;margin-top: 4vw;}
+    .product-screen-btn .sub-button{width: 50vw;height: 10vw;margin: 0 auto;line-height: 10vw;background-color: #E15621;text-align: center;font-size: 3.4ve;color: #FFFFFF;}
+
+
+}

+ 9 - 9
src/main/resources/static/css/supplier-center/shop/goods.css

@@ -9,7 +9,7 @@ li{list-style: none}
      input::placeholder{color: #9aa5b5;font-size: 12px;}
      textarea::placeholder{color: #9aa5b5;}
      #newBtn div{height: 36px;border-radius: 2px;display: inline-block;text-align: center;cursor: pointer}
-      #newBtn{float: right;margin: 0}
+      #newBtn{float: left;margin: 0}
       .query-btn{background-color: #e15616;color: #fff;width: 88px;border: 1px solid #e15616}
       .goods-main{width: 100%; height: auto; float: left; margin:10px 0;background: #fff;}
       .goods-main-empty{width: 100%;height: 60px;line-height: 60px;text-align: center;float: left;margin-top: 20px;}
@@ -17,14 +17,14 @@ li{list-style: none}
       .goods-main-empty p a{color: #e15616;text-decoration: underline;margin: 0 3px;}
       .goods-title{ height: 56px;line-height: 56px;border-bottom: solid 1px #e2e7ef;padding: 0 20px}
       .goods-main .goods-table ul li{float:left;width: 8%;text-align: center;color: #22272e;position: inherit}
-      .goods-main .goods-table ul li:nth-child(2){ width: 25%;}
+      .goods-main .goods-table ul li:nth-child(2){ width: 20%;}
       .goods-main .goods-table ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(4){width: 20%}
-      .goods-main .goods-table ul li:last-child{width: 23%;position: relative}
+      .goods-main .goods-table ul li:last-child{width: 22%;position: relative}
       .tbody ul li{height: 96px;font-size: 12px;}
       .tbody ul{padding: 0 20px;position: relative;height: 96px}
-      .tbodyle ul li:nth-child(2){width: 25%;}
-      .tbody ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(3){ width: 16%}
-      .tbody ul li:last-child{width: 20%}
+      .tbodyle ul li:nth-child(2){width: 20%;}
+      .tbody ul li:nth-child(3),.goods-main .goods-table ul li:nth-child(3){ width: 14%}
+      .tbody ul li:last-child{width: 22%}
       .goods-main .checkbox {overflow: hidden; cursor: pointer;}
       .tbody .checkbox .box{ display: inline-block; width: 20px;height: 90px;margin-top: 2px;float: left;}
       .goods-main  .tbody .checkbox span{ display: inline-block;float: left;margin-left: 6px;}
@@ -33,8 +33,8 @@ li{list-style: none}
       .goods-main  .tbody .good-info{display: inline-block}
       .goods-main  .tbody .good-info img{width: 80px;height: 80px;margin-top: 8px}
       .tbody ul li .good-classFly,.tbody ul li .good-price,.tbody ul li .status{position: relative;top: 50%;left: 50%;transform: translate(-50%, -50%);width: fit-content;}
-      .goods-main  .tbody .good-name{margin-left: 8px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;width: 112px}
-      .goods-main  .tbody .good-handle{text-align: left;padding: 0 7px;line-height: 35px;position: absolute;width: 180px;top: 0;left: 50px;right: 0;bottom: 0;margin: auto;height: fit-content}
+      .goods-main  .tbody .good-name{margin-left: 8px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;width: 90px;}
+      .goods-main  .tbody .good-handle{text-align: left;padding: 0 7px;line-height: 35px;position: absolute;width: 180px;top: 0;left: 30px;right: 0;bottom: 0;margin: auto;height: fit-content}
       .goods-main  .tbody .btn{padding: 0 11px;margin-right: 8px;height: 24px;background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;display: inline-block;line-height: 24px;color: #e15616;}
       .goods-container .good-footer{width: 95%;height: 56px;float: left;padding: 20px}
       .goods-container .good-footer .footer-left{float: left;}
@@ -86,7 +86,7 @@ li{list-style: none}
    .good-price{line-height: 6.4vw;margin-top: 2.6vw}
    .good-status{overflow: hidden;line-height: 6.4vw;margin: 2.7vw 0}
    .good-status .good-left{float: left}
-   .good-status .good-right{float: right}
+   .good-status .good-right{float: right;margin-left: 5vw;}
    .good-status span{color: #9aa5b5;font-size: 3.2vw}
    .good-status  p{color: #22272e;font-size: 3.4vw}
    .good-handle a{width: 20vw;height: 9.5vw;line-height: 9.5vw;text-align: center;border-radius: 6.4vw;font-size: 3vw;

+ 6 - 3
src/main/resources/static/css/supplier-center/shop/release.css

@@ -8,7 +8,7 @@ input[type="number"]{
 div{box-sizing: border-box;}
 @media screen and (min-width:768px) {
 .container{width: 100%;height: auto;box-sizing: border-box;background-color: #FFFFFF;padding: 0 16px;}
-.release-stepbox{width: 100%;box-sizing: border-box;    line-height: 60px; padding-left: 80px}
+.release-stepbox{width: 100%;box-sizing: border-box;    line-height: 60px; }
 .release-stepbox .stepSpan{float: left;padding: 0 15px;margin-right: 80px;position: relative;}
 .release-stepbox .stepSpan:last-child{margin-right: 0;}
 .release-stepbox .stepSpan p{font-size: 16px;line-height: 24px;color: #9aa5b5;text-align: center;display: inline-block}
@@ -18,6 +18,9 @@ div{box-sizing: border-box;}
 .release-container{width: 100%;height: auto;border-top: 1px solid #e2e7ef;padding:20px 0;opacity: 0;}
 .release-container.active{opacity: 1;}
 .release-main-container{width: 100%;padding: 0 220px;box-sizing: border-box;}
+.release-main-container.new{width: 100%;padding: 0 24px;box-sizing: border-box;}
+.release-main-container.new .release-image{width: 100%;height: auto;}
+.release-main-container.new .release-image img{width: 100%;height: auto;}
 .release-from{width: 100%;height:auto;margin-bottom: 15px;line-height: 32px;font-size: 14px;color: #333;}
 .release-from.text p .em{color: #e15616;}
 .release-from.none{margin-bottom: 0;}
@@ -144,11 +147,11 @@ input::placeholder{color: #9aa5b5}
 
 @media screen and (max-width:768px) {
 .container .release-stepbox{height: 17.6vw;}
-.container .release-stepbox>div{float: left;    width: 25%;text-align: center;top: 9.3vw;position: relative;}
+.container .release-stepbox>div{float: left;    width: 20%;text-align: center;top: 9.3vw;position: relative;}
 .release-stepbox .stepSpan p{color: #9aa5b5}
 .release-stepbox .stepSpan.active p {color: #E15616;}
 .release-stepbox .stepSpan.active p span {background: #E15616;}
-.release-stepbox .stepSpan p span{display: inline-block;width: 5.3vw;height: 5.3vw;font-size: 3.2vw;text-align: center;line-height: 5.3vw;background: #9aa5b5;color: #FFFFFF;border-radius: 10.6vw;position: absolute;top: -6.4vw;right: 10vw}
+.release-stepbox .stepSpan p span{display: inline-block;width: 5.3vw;height: 5.3vw;font-size: 3.2vw;text-align: center;line-height: 5.3vw;background: #9aa5b5;color: #FFFFFF;border-radius: 10.6vw;position: absolute;top: -6.4vw;right: 7vw}
 .release-container{background: #fff;padding: 3.3vw;}
 .release-from .release-label{height:8.3vw;color: #627386;}
 .release-from .release-label span {color: #FF0000;}

BIN
src/main/resources/static/img/activity/attestation/9.png


BIN
src/main/resources/static/img/activity/attestation/section_bg_device_03.png


BIN
src/main/resources/static/img/flea-market/banner.png


BIN
src/main/resources/static/img/flea-market/banner@2x.png


BIN
src/main/resources/static/img/hot/icon-hot-bg.png


BIN
src/main/resources/static/img/hot/icon-hot-bg@h5.png


BIN
src/main/resources/static/img/hot/icon-hot-btn.png


BIN
src/main/resources/static/img/hot/icon-hot-btn@h5.png


BIN
src/main/resources/static/img/hot/icon-hotpor-bg.png


BIN
src/main/resources/static/img/hot/icon-hotpor-bg@h5.png


BIN
src/main/resources/static/img/hot/icon-hottop-bg.png


BIN
src/main/resources/static/img/hot/icon-hottop-bg@h5.png


BIN
src/main/resources/static/img/supplier/icon-hotimage.png


+ 67 - 6
src/main/resources/static/js/activity/attestation.js

@@ -1,11 +1,11 @@
 new Vue({
     data: {
         popupVisiable: false,
-        twoData:[
-            { icon:'/img/activity/attestation/section_icon_1.png', text:'自主授权'  },
-            { icon:'/img/activity/attestation/section_icon_2.png', text:'自主认证'  },
-            { icon:'/img/activity/attestation/section_icon_3.png', text:'自主管理'  },
-            { icon:'/img/activity/attestation/section_icon_4.png', text:'更快更专业'  }
+        twoData: [
+            {icon: '/img/activity/attestation/section_icon_1.png', text: '自主授权'},
+            {icon: '/img/activity/attestation/section_icon_2.png', text: '自主认证'},
+            {icon: '/img/activity/attestation/section_icon_3.png', text: '自主管理'},
+            {icon: '/img/activity/attestation/section_icon_4.png', text: '更快更专业'}
         ],
         //认证通合作伙伴
         suppileData: [
@@ -28,6 +28,13 @@ new Vue({
                 secondRoute: '',
                 redirect: ''
             },
+            {
+                logo: '/img/activity/attestation/9.png',
+                name: 'Ross',
+                entryRoute: '/12/ross',
+                secondRoute: '',
+                redirect: ''
+            },
         ],
         // 认证通快捷入口
         firstEntryList: [
@@ -44,11 +51,56 @@ new Vue({
                 secondRoute: '',
                 redirect: ''
             },
+            {
+                logo: '/img/activity/attestation/9.png',
+                name: 'ROS\'S机构认证',
+                entryRoute: '/12/ross',
+                secondRoute: '',
+                redirect: ''
+            },
         ]
     },
+    mounted() {
+        this.initSwiper1()
+        this.initSwiper2()
+    },
     methods: {
+        initSwiper1() {
+            const swiper = new Swiper("#mySwiper1", {
+                slidesPerView: 2,
+                spaceBetween: 15,
+                loop: true,
+                autoplay: {
+                    delay: 2000,
+                },
+            });
+            swiper.el.onmouseover = function () {
+                swiper.autoplay.stop();
+            }
+            swiper.el.onmouseout = function () {
+                swiper.autoplay.start();
+            }
+        },
+
+        initSwiper2() {
+            const swiper = new Swiper("#mySwiper2", {
+                slidesPerView: 3,
+                spaceBetween: 15,
+                loop: true,
+                autoplay: {
+                    delay: 2000,
+                },
+            });
+            swiper.el.onmouseover = function () {
+                swiper.autoplay.stop();
+            }
+            swiper.el.onmouseout = function () {
+                swiper.autoplay.start();
+            }
+        },
+
         handleClick: function (data) {
-            if(data.redirect){
+            if (data.redirect) {
                 window.open(data.redirect, '_blank')
                 return
             }
@@ -62,3 +114,12 @@ new Vue({
         }
     }
 }).$mount('#attestation');
+
+// $(function(){
+//     var swiper = new Swiper("#mySwiper1", {
+//         slidesPerView: 3,
+//         spaceBetween: 15,
+//         freeMode: true,
+//         autoPlay: true,
+//     });
+// })

+ 36 - 0
src/main/resources/static/js/common/serviceapi/utils.service.js

@@ -38,6 +38,42 @@ var PublicApi = {
                 callback(res)
             });
         },
+        GetHomeRecommend:function(params,callback){ //新品橱窗重点推荐
+            Http.AjaxService({
+                url:'/commodity/home/recommend',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        GetHomeNewFloorList:function(params,callback){ //新品橱窗商品列表
+            Http.AjaxService({
+                url:'/commodity/home/NewFloorList',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        GetHomeNBrandName:function(params,callback){ //新品橱窗品牌列表
+            Http.AjaxService({
+                url:'/commodity/home/BrandName',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
         GetHomeInit:function(params,callback){ //首页数据
             Http.AjaxService({
                 url:'/commodity/home/init',

+ 17 - 227
src/main/resources/static/js/flea-market/form.js

@@ -18,14 +18,6 @@ var fleaMarketForm = new Vue({
            {name:'医美',value:1},
            {name:'非医美',value:2},
         ],
-        productFileTypeActions:[
-            { name:'仪器原始合同',value:1,isChecked:false},
-            { name:'仪器注册证',value:2,isChecked:false},
-            { name:'仪器发票',value:3,isChecked:false},
-            { name:'仪器报关单',value:4,isChecked:false},
-            { name:'无任何文件',value:5,isChecked:false}
-        ],
-        checkedFileTypeList:[],
         currentId:0,
         handleCurrent:1,
         BrandList:[],
@@ -48,6 +40,7 @@ var fleaMarketForm = new Vue({
             companyName:'',//公司名称
             // maturityYears:'',//产品到期
             price:'',//交易价
+            announType:2,//发布类型 1.二手预成交商品 2.二手估价商品
             detailTalkFlag:1,//是否启用详聊
             // normalPrice:'',//市场价
             // originalPrice:'',//采购价
@@ -61,7 +54,7 @@ var fleaMarketForm = new Vue({
             secondProductType:'',//
             townId:'',//县区地址
             address:'',//详细地址
-            image:'https://img0.baidu.com/it/u=1213827208,2559395113&fm=26&fmt=auto',//图片
+            image:'',//图片
             productDetails:'',//商品详细信息
             source:1,
             dockingPeopleMobile:'',
@@ -97,12 +90,9 @@ var fleaMarketForm = new Vue({
         vShow_BrandID:false,
         vShow_Name:false,
         vShow_companyName:false,
-        vShow_cardNumber:false,
-        vShow_Price:false,
         vShow_shopColor:false,
         vShow_contactName:false,
         vShow_contactMobile:false,
-        vShow_fileType:false,
         vShow_checkCode:false,
         vShow_caimeiMobile:false,
         vShow_Address:false,
@@ -196,135 +186,21 @@ var fleaMarketForm = new Vue({
                 event.target.value = '';
             });
         },
-        uploadLicenseImageFn: function(event){//上传营业执照照片
-            var _this = this;
-            var inputDOM = _this.$refs.LicenseImage;
-            var file = inputDOM.files[0];
-            var size = file.size;
-            if(size > 5242880){//限制了文件的大小5MB
-                CAIMEI.dialog('图片不能超过5M');
-                event.target.value = '';
-                return;
-            }
-            _this.formData.append('file', file);
-            SecondApi.uploadimg(_this.formData,function(response){
-                _this.secondParams.licenseImage = response.data;
-                event.target.value = '';
-            });
-        },
-        uploadAuthenticationImagesFn: function(event){//上传身份正面照片
-            var _this = this;
-            var inputDOM = _this.$refs.AuthenticationImage;
-            var file = inputDOM.files[0];
-            var size = file.size;
-            if(size > 5242880){//限制了文件的大小5MB
-                CAIMEI.dialog('图片不能超过5M');
-                event.target.value = '';
-                return;
-            }
-            _this.formData.append('file', file);
-            SecondApi.uploadimg(_this.formData,function(response){
-                _this.secondParams.authenticationImage = response.data;
-                event.target.value = '';
-            });
-        },
-        uploadAuthenticationBackImageFn: function(event){//上传身份反面照片
-            var _this = this;
-            var inputDOM = _this.$refs.AuthenticationBackImage;
-            var file = inputDOM.files[0];
-            var size = file.size;
-            if(size > 5242880){//限制了文件的大小5MB
-                CAIMEI.dialog('图片不能超过5M');
-                event.target.value = '';
-                return;
-            }
-            _this.formData.append('file', file);
-            SecondApi.uploadimg(_this.formData,function(response){
-                _this.secondParams.authenticationBackImage = response.data;
-                event.target.value = '';
-            });
-        },
-        uploadCommitmentImagesFn: function(event){//上传承诺函图片
-            var _this = this;
-            var inputDOM = _this.$refs.CommitmentImage;
-            var file = inputDOM.files[0];
-            var size = file.size;
-            if(size > 5242880){//限制了文件的大小5MB
-                CAIMEI.dialog('图片不能超过5M');
-                event.target.value = '';
-                return;
-            }
-            _this.formData.append('file', file);
-            SecondApi.uploadimg(_this.formData,function(response){
-                _this.secondParams.commitmentImage = response.data;
-                event.target.value = '';
-            });
-        },
-        uploadCommitmentFileFn : function(event){//上传承诺函文件
-            var _this = this;
-            var inputDOM = _this.$refs.CommitmentImagefile;
-            var file = inputDOM.files[0];
-            var formData = new FormData();
-            var size = file.size;
-            var newfilename = file.name;
-            //截取
-            var fixFile = newfilename.substr(newfilename.lastIndexOf('.'));
-            //统一转成小写
-            var lowFixFile = fixFile.toLowerCase();
-            if ( lowFixFile != '.pdf' ){ //限制了文件类型
-                CAIMEI.dialog('文件格式不正确!');
-                event.target.value = '';
-                return;
-            }
-            if(size > 20971520){//限制了文件的大小20MB
-                CAIMEI.dialog('文件大小不能超过20M');
-                event.target.value = '';
-                return;
-            }
-            formData.append('file', file);
-            SecondApi.uploadFile(formData,function(response){
-                _this.secondParams.ossName = response.data.ossName;
-                _this.secondParams.fileName = response.data.fileName;
-                event.target.value = '';
-            });
-        },
         removeGoodsImagesFn: function(index){//删除商品图片
             var _this = this;
             _this.GoodsImagesList.splice(index,1);
             _this.secondParams.image =_this.GoodsImagesList.toString()+',';
         },
-        removeAuthenticationImagesFn:function(){//删除身份证正面照片
-            var _this = this;
-            _this.secondParams.authenticationImage = '';
-        },
-        removeAuthenticationBackImageFn:function () {//删除身份证反面照片
-            var _this = this;
-            _this.secondParams.authenticationBackImage = '';
-        },
-        removeLicenseImageFn:function () {//删除营业执照图片
-            var _this = this;
-            _this.secondParams.licenseImage = '';
-        },
-        removeCommitmentImagesFn:function(){//删除授权函文件图片
-            var _this = this;
-            _this.secondParams.commitmentImage = '';
-        },
-        choiceProductFileType(type,index){
-            // 选择商品文件类型
-            type.isChecked = !type.isChecked
-            if (type.isChecked) {
-                if(!this.contains(this.checkedFileTypeList,type.value)){
-                    this.checkedFileTypeList.push(type.value)
-                }
-            } else {
-                this.checkedFileTypeList.splice(this.checkedFileTypeList.indexOf(type.value),1)
-            }
-            this.secondParams.fileType = this.checkedFileTypeList.join(',')
-            console.log('fileType', this.secondParams.fileType)
-        },
         contains:function(arr, val) {// 校验
             return arr.some(item => item === val)
         },
+        handleMobileCodeInput(){//
+            this.vShow_checkCode = false;
+        },
+        handleMobileAddresInput(){//
+            this.vShow_TownId = false;
+            this.vShow_Address = false;
+        },
         handleMobileInput:function () {// 控制联系人手机号显示获取验证码按钮
             var re = /^1\d{10}$/;
             if(re.test(this.secondParams.contactMobile)){
@@ -367,29 +243,6 @@ var fleaMarketForm = new Vue({
                 }
             })
         },
-        deleteCommitmentFile:function(){//删除承诺函文件
-            var _this = this;
-            SecondApi.deleteOssFile({ ossName : _this.secondParams.ossName },function (response) {
-                if (response.code==0){
-                    _this.secondParams.fileName = '';
-                    _this.secondParams.ossName = '';
-                }else{
-                    console.log('删除文件异常提示===>',response.msg)
-                }
-            })
-        },
-        showViewerImageFn: function( ){//预览身份验证图片
-            var _this = this;
-            var DomEven = '#ViewerAuthenticationImage';
-            var ViewerDom = document.querySelector(DomEven);
-            _this.viewer = new Viewer(ViewerDom, {url:'data-image'});
-        },
-        showViewerImageFn1: function(){//预览承诺函图片
-            var _this = this;
-            var DomEven = '#ViewerCommitmentImage';
-            var ViewerDom = document.querySelector(DomEven);
-            _this.viewer = new Viewer(ViewerDom, {url:'data-image'});
-        },
         showViewerImageFn2: function(index,imageIndex ){//预览图片
             var _this = this;
             var DomEven = '#ViewerGoodsImages'+index;
@@ -433,8 +286,8 @@ var fleaMarketForm = new Vue({
             }
             if(_this.secondParams.checkCode == ''){
                 _this.vShow_checkCode = true;
-                _this.fromMessage = 'secondHandrelease';
-                _this.scrollIntoView('vShow_Price');
+                _this.fromMessage = '请输入短信验证码';
+                _this.scrollIntoView('secondHandrelease');
                 setTimeout(function(){
                     _this.vShow_checkCode = false;
                 },3000);
@@ -472,7 +325,7 @@ var fleaMarketForm = new Vue({
             if(_this.secondParams.name == ''){
                 _this.vShow_Name = true;
                 _this.fromMessage = '请输入商品名称';
-                _this.scrollIntoView('vShowsecondHandType');
+                _this.scrollIntoView('secondHandrelease');
                 setTimeout(function(){
                     _this.vShow_Name = false;
                 },3000);
@@ -482,62 +335,26 @@ var fleaMarketForm = new Vue({
                 if(_this.secondParams.companyName == ''){
                     _this.vShow_companyName = true;
                     _this.fromMessage = '请输入公司名称';
-                    _this.scrollIntoView('vShowsecondHandType');
+                    _this.scrollIntoView('vShow_Name');
                     setTimeout(function(){
                         _this.vShow_companyName = false;
                     },3000);
                     return
                 }
             }
-             if(_this.secondParams.price == ''){
-                  _this.vShow_Price = true;
-                  _this.fromMessage = '请输入交易价';
-                  _this.scrollIntoView('vShow_BrandID');
-                  setTimeout(function(){
-                      _this.vShow_Price = false;
-                  },3000);
-                    return
-             }
              if(_this.secondParams.productQuality == ''){
                   _this.vShow_shopColor = true;
                   _this.fromMessage = '请输入商品成色';
-                  _this.scrollIntoView('vShow_FixedYears');
+                  _this.scrollIntoView('vShow_Name');
                     setTimeout(function(){
                         _this.vShow_shopColor = false;
                     },3000);
                     return
              }
-            if(_this.secondParams.fileType == ''){
-                _this.vShow_fileType = true;
-                _this.fromMessage = '选择商品文件的类型';
-                _this.scrollIntoView('vShow_FixedYears');
-                setTimeout(function(){
-                    _this.vShow_fileType = false;
-                },3000);
-                return
-            }
-            if(_this.secondParams.cardNumber == ''){
-                _this.vShow_cardNumber = true;
-                _this.fromMessage = '请输入收款银行卡卡号';
-                _this.scrollIntoView('vShow_Price');
-                setTimeout(function(){
-                    _this.vShow_cardNumber = false;
-                },3000);
-                return
-            }
-              if(_this.secondParams.dockingPeopleMobile!='' && !re.test(_this.secondParams.dockingPeopleMobile)){
-                  _this.vShow_caimeiMobile = true;
-                  _this.fromMessage = '联系方式格式不正确';
-                  _this.scrollIntoView('vShow_checkCode');
-                  setTimeout(function(){
-                      _this.vShow_caimeiMobile = false;
-                  },3000);
-                  return
-              }
               if(_this.secondParams.townId == ''|| _this.secondParams.townId == undefined){
                   _this.vShow_TownId = true;
                   _this.fromMessage = '请完善联系地址';
-                  _this.scrollIntoView('vShow_caimeiMobile');
+                  _this.scrollIntoView('vShow_Name');
                   setTimeout(function(){
                       _this.vShow_TownId = false;
                   },3000);
@@ -546,7 +363,7 @@ var fleaMarketForm = new Vue({
              if(_this.secondParams.address == ''){
                   _this.vShow_Address = true;
                   _this.fromMessage = '请填写详细地址';
-                  _this.scrollIntoView('vShow_caimeiMobile');
+                  _this.scrollIntoView('vShow_Name');
                   setTimeout(function(){
                         _this.vShow_Address = false;
                     },3000);
@@ -569,33 +386,6 @@ var fleaMarketForm = new Vue({
                 },3000);
                 return
              }
-            if(_this.secondParams.publishIdentity === 1){
-                if(_this.secondParams.authenticationImage == '' && _this.secondParams.authenticationBackImage == ''){
-                    _this.PopupShow = true;
-                    _this.tipsContentText = '上传身份验证照片,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
-                    _this.cancelButtonText = '继续发布';
-                    _this.confirmButtonText = '去上传';
-                    _this.isButtonsType = 1;
-                    return;
-                }
-            }else{
-                if(_this.secondParams.licenseImage == ''){
-                    _this.PopupShow = true;
-                    _this.tipsContentText = '上传营业执照照片,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
-                    _this.cancelButtonText = '继续发布';
-                    _this.confirmButtonText = '去上传';
-                    _this.isButtonsType = 1;
-                    return;
-                }
-            }
-            if(_this.secondParams.commitmentImage == '' || _this.secondParams.ossName == ''){
-                _this.PopupShow = true;
-                _this.tipsContentText = '上传二手出让承诺函,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
-                _this.cancelButtonText = '继续发布';
-                _this.confirmButtonText = '去上传';
-                _this.isButtonsType = 1;
-                return;
-            }
             console.log(_this.secondParams);
             _this.SecondHandProduct(_this.secondParams)
         },
@@ -603,7 +393,7 @@ var fleaMarketForm = new Vue({
             var _this = this;
             SecondApi.SecondHandProduct(params,function (res) {
                 if (res.code==0){
-                    CAIMEI.Alert('发布成功!商品信息会在1-2个工作日内进行审核,审核通过后将立即上线到采美二手市场', '确定', true,function () {
+                    CAIMEI.Alert('发布成功!商品信息会在1-2个工作日内进行审核,采美官方人员也会联系您进行商品估价,审核通过后将立即上线到采美二手市场', '确定', true,function () {
                         window.location.href = '/flea-market/list.html';
                     });
                 }else{

+ 20 - 2
src/main/resources/static/js/index.js

@@ -11,6 +11,7 @@ var homeData = new Vue({
         newsList:[],
         popupFlag:false,
         couponEntry:2,// 活动优惠券弹窗显示控制
+        hotListPageFloor:[],// 新皮橱窗
         homePageFloor:[]//楼层
     },
     filters: {
@@ -134,6 +135,7 @@ var homeData = new Vue({
                 if(response.code == 0){
                     var data = response.data;
                     _self.homePageFloor = data.homePageFloor;
+                    _self.hotListPageFloor =  data.pageFloorList;
                     setTimeout(function(){
                         // 图片懒加载
                         $("img[data-original]").lazyload();
@@ -182,14 +184,30 @@ var homeData = new Vue({
                         span += '<span></span>';
                     }
                     cell.html(span);
-                    $('#recommendBox').slide({
+                    $('.mySwiperSlide').slide({
                         mainCell:".recommendBox-wrapper",
-                        titCell:".swiper-pagination-floor span",
+                        titCell:".swiper-pagination span",
                         effect: "leftLoop",
                         autoPlay: false,
                         scroll:5,
                         vis:5
                     });
+                    var swiper = new Swiper(".mySwiper", {
+                        slidesPerView: 5,
+                        spaceBetween: 13,
+                        slidesPerGroup: 5,
+                        loop: true,
+                        autoplay: {
+                            delay: 4000,
+                            stopOnLastSlide: false,
+                            disableOnInteraction: true,
+                        },
+                        loopFillGroupWithBlank: false,
+                        pagination: {
+                            el: ".swiper-pagination",
+                            clickable:true
+                        }
+                    });
                 } else {
                     var swiper = new Swiper('#recommendBox', {
                         slidesPerView: 2,

+ 3 - 0
src/main/resources/static/js/pay/caimei-hlbpay.js

@@ -6,6 +6,7 @@ var payContainer = new Vue({
     mixins: [hlbPayMixin],
     data: {
         isSubMitStatus:false,
+        B2BpayFlag:1,//企业网银支付开关
         payInfo:{
             payBankNum: '', //支付类型
             shopOrderId: '',  //订单ID
@@ -100,6 +101,8 @@ var payContainer = new Vue({
                 if(response.code == 0){
                     // console.log(response);
                     var data = response.data; //金额初始化
+                    _self.B2BpayFlag = data.B2BpayFlag;
+                    console.log('B2BpayFlag',_self.B2BpayFlag);
                     _self.payInfo.payAmount = (data.shopOrder.realPay - data.shopOrder.receiptAmount).toFixed(2);
                     _self.discernReceiptList = data.discernReceipt;// 支付记录
                     _self.payInfo.obligation = data.shopOrder.obligation;

+ 3 - 0
src/main/resources/static/js/pay/caimei-paycash.js

@@ -6,6 +6,7 @@ var payContainer = new Vue({
     mixins: [mhPayMixin],
     data: {
         isSubMitStatus:false,
+        B2BpayFlag:1,//企业网银支付开关
         payInfo:{
             payBankNum: 'ICBC_B2B', //支付类型
             payOrderId: '',  //订单ID
@@ -99,6 +100,8 @@ var payContainer = new Vue({
                 if(response.code == 0){
                     // console.log(response);
                     var data = response.data; //金额初始化
+                    _self.B2BpayFlag = data.B2BpayFlag;
+                    console.log('B2BpayFlag',_self.B2BpayFlag);
                     _self.payInfo.payUnpaidaMount = (data.order.payableAmount - data.order.receiptAmount).toFixed(2);
                     _self.payInfo.payAmount = (data.order.payableAmount-data.order.receiptAmount).toFixed(2);
                     _self.discernReceiptList = data.discernReceipt;

+ 7 - 1
src/main/resources/static/js/product/detail.js

@@ -37,6 +37,7 @@ var productDetail = new Vue({
         isNoneDisabled: false,
         isServiceInfo: false,
         isTrainingMethod: false,
+        isQualificationImg: false,
         productTypeName: "",
         beautyActFlag: '',
         trainingMethodText: '',
@@ -192,6 +193,11 @@ var productDetail = new Vue({
                     if (product.productDetail.orderInfo != '' && product.productDetail.serviceInfo != '') {
                         _self.isServiceInfo = true;
                     }
+                    if(product.qualificationImg){//商品资质
+                        _self.isQualificationImg = true
+                    }else{
+                        _self.isQualificationImg = false
+                    }
                     if (product.commodityType == 2 && product.trainingMethod) {
                         _self.isTrainingMethod = true;
                         _self.trainingMethodText = product.trainingMethod == 1 ? '线上培训' : '线下培训';
@@ -226,7 +232,7 @@ var productDetail = new Vue({
                         _self.tabsIndex = 4;
                     }
                 } else {
-                    CAIMEI.Alert(response.msg, '确定', false);
+                    console.log('<===Error===>',response.msg)
                 }
             })
         },

+ 2 - 2
src/main/resources/static/js/product/instruement.js

@@ -60,7 +60,7 @@
                         span += '<span></span>';
                     }
                     cell.html(span);
-                    $('#recommendBox').slide({
+                    $('.mySwiperSlide').slide({
                         mainCell:".recommendBox-wrapper",
                         titCell:".swiper-pagination-floor span",
                         effect: "leftLoop",
@@ -69,7 +69,7 @@
                         vis:5
                     });
                 } else {
-                    var swiper = new Swiper('#recommendBox', {
+                    var swiper = new Swiper('.mySwiperSlide', {
                         slidesPerView: 2,
                         slidesPerColumn: 2,
                         spaceBetween:0,

+ 303 - 0
src/main/resources/static/js/product/product-hot.js

@@ -0,0 +1,303 @@
+var productList = new Vue({
+    el: "#productList",
+    data: {
+        // searchFlag: false,
+        isRequest:false,
+        listLoading: true,
+        requestFlag: true,
+        noMore: false,
+        topGoodList: [],
+        listQuery: {
+            userId:0,
+            brandID:'',
+            pageNum:1,
+            pageSize:12,
+            source:1
+        },
+        classify: [],
+        listData: [], //priceflag 0公开价格 1不公开价格 2仅对会员机构公开,//userIdentity: 2-会员机构, 4-普通机构
+        listRecord: 0,
+        pageInput: '1',
+        bigType: "",
+        smallType: "",
+        tinyType: "",
+        userId: 0,
+        shopID:0,
+        userIdentity: '',
+        userToken: '',
+        addhtml:'<span class="tag">美博会</span>',
+        hrefBrandId:null,
+        brandLists: [],
+        defaultBrandLists:[],
+        checkedBrandList:[],
+        checkedBrandLength:0,
+        choiceBrandIndex:100,
+        isProductScreen:false,
+        isActiviChecked:false,
+        isNewsChecked:false,
+        isShowAllBrands:false,
+        isShowAllBrandsButton:false,
+        isAllcheckedBrand:false,
+        isListEmpty:false,
+        isChoiceBrandText:false,
+        choiceBrandText:''
+    },
+    filters: {
+        NumFormat:function(value) {
+            return Number(value).toFixed(2);
+        }
+    },
+    computed: {
+
+    },
+    methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(pros){
+            //非会员
+            if(!GLOBAL_VIP_FLAG === 1) return false;
+            // 商品所有机构可见
+            if(pros.priceFlag === 0  && pros.svipProductFlag === 1 ) return true;
+            // 商品价格仅资质机构可见
+            if(pros.priceFlag === 2  && pros.svipProductFlag === 1 && GLOBAL_USER_IDENTITY === 2) return true;
+            // 商品价格仅医美机构可见
+            if(pros.priceFlag === 3  && pros.svipProductFlag === 1 && GLOBAL_USER_IDENTITY === 2 &&  GLOBAL_CLUB_TYPE == 1) return true;
+            // 其它
+            return false;
+        },
+        PromotionsFormat:function(promo){//促销活动类型数据处理
+            if(promo!=null){
+                if(promo.type == 1 && promo.mode == 1){
+                    return true
+                }else{
+                    return false
+                }
+            }
+            return false
+        },
+        GetHomeRecommend:function () {
+            var _self = this;
+            PublicApi.GetHomeRecommend({ },function(response){
+                if(response.code == 0){
+                    _self.topGoodList = response.data;
+                    _self.isRequest = true;
+                    // 图片懒加载
+                    setTimeout(function(){
+                        if (isPC) {
+                            $('#productHotBanner').slide({
+                                mainCell:".swiper-wrapper"
+                                ,titCell:".swiper-pagination span"
+                                ,effect: "leftLoop"
+                                ,interTime: 5000
+                                ,autoPlay: true
+                                ,autoPage: false
+                                ,trigger: "mouseover"
+                            });
+                        } else {
+                            var swiper = new Swiper('#productHotBanner', {
+                                loop: true,
+                                autoplay: {
+                                    delay: 2000,
+                                    disableOnInteraction: false
+                                },
+                                pagination: {
+                                    el: '.swiper-pagination'
+                                }
+                            });
+                        }
+                    },500);
+                    // 获取列表数据
+                    _self.GetHomeNewFloorList();
+                }else{
+                    console.log('获取新品橱窗数据错误')
+                }
+            });
+        },
+        GetHomeNewFloorList: function () {
+            var _self = this;
+            PublicApi.GetHomeNewFloorList(_self.listQuery,function (response) {
+                if(response.code === 0){
+                    var data = response.data
+                    _self.listData = _self.listData.concat(data.results);
+                    _self.listRecord = data.totalRecord;
+                    if( _self.listData.length>0){
+                        _self.isListEmpty = false;
+                    }else{
+                        _self.isListEmpty = true;
+                    }
+                    setTimeout(function () {
+                        _self.listLoading = false;
+                        _self.requestFlag = true;
+                    },1000)
+                }else {
+                    _self.listLoading = false;
+                    _self.isListEmpty = true;
+                    console.log('获取新品橱窗列表数据错误')
+                }
+            });
+        },
+        getCommoditySearchQUeryBrand:function() { // 查询筛选项品牌
+            var _self = this;
+            PublicApi.GetHomeNBrandName({},function (response) {
+                if (response.code === 0 && response.data ) {
+                    var data = response.data;
+                    _self.defaultBrandLists = data.map((el, index) => {
+                        el.isChecked = false;
+                        return el;
+                    })
+                    _self.brandLists = _self.defaultBrandLists.slice(0,6);
+                }else {
+                    console.log('查询品牌列表异常')
+                }
+            });
+        },
+        choiceBrandSearchClass:function (brand,index) {
+            var _self = this;
+            if(_self.isShowAllBrandsButton){
+                if(brand.isChecked){
+                    return 'checked';
+                }else{
+                    return '';
+                }
+            }else{
+                if(_self.choiceBrandIndex === index){
+                    return 'checked';
+                }else{
+                    return '';
+                }
+            }
+        },
+        choiceBrandSearchIndex:function (brand, index) {//单选
+            var _self = this;
+            _self.choiceBrandIndex = index;
+            _self.isAllcheckedBrand = false;
+            _self.listQuery.brandID = brand.id;
+            _self.listQuery.pageNum = 1;
+            _self.listData = [];
+            _self.GetHomeNewFloorList();
+        },
+        choiceBrandSearch: function (brand,index) {// PC选择品牌 多选的情况下
+            var _self = this;
+            if(_self.isShowAllBrandsButton){
+                brand.isChecked = !brand.isChecked;
+                if (brand.isChecked) {
+                    _self.checkedBrandList.push(brand.id);
+                } else {
+                    for (var i = 0; i < _self.checkedBrandList.length; i++){
+                        // 删除掉未勾选中的元素
+                        if(_self.checkedBrandList[i] === brand.id) {
+                            _self.checkedBrandList.splice(i, 1);
+                        }
+                    }
+                }
+                _self.isAllcheckedBrand = false;
+                _self.checkedBrandLength = _self.checkedBrandList.length;
+                _self.listQuery.brandID = this.checkedBrandList.join(',');
+            }else{
+                _self.choiceBrandIndex = index;
+                _self.listQuery.brandID = brand.id;
+                _self.listQuery.pageNum = 1;
+                _self.listData = [];
+                _self.GetHomeNewFloorList();
+            }
+        },
+        choiceBrand:function(brand,index){// 选择品牌
+            var _self = this;
+            brand.isChecked = !brand.isChecked;
+            if (brand.isChecked) {
+                _self.checkedBrandList.push(brand.id);
+            } else {
+                for (var i = 0; i < _self.checkedBrandList.length; i++){
+                    // 删除掉未勾选中的元素
+                    if(_self.checkedBrandList[i] === brand.id) {
+                        _self.checkedBrandList.splice(i, 1);
+                    }
+                }
+                _self.listQuery.brandID = this.checkedBrandList.join(',');
+            }
+            _self.isAllcheckedBrand = false;
+            _self.checkedBrandLength = _self.checkedBrandList.length;
+            _self.listQuery.brandID = this.checkedBrandList.join(',');
+        },
+        choiceBrandAll:function(){
+            // 点击选择全部品牌
+            this.isAllcheckedBrand = true;
+            this.listQuery.brandID = '';
+            this.brandLists.forEach(function(el){
+                el.isChecked = false;
+            });
+            this.listQuery.pageNum = 1;
+            this.listData = [];
+            this.GetHomeNewFloorList();
+        },
+        showMoreItem:function(){// 点击更多品牌
+            this.isShowAllBrands = !this.isShowAllBrands;
+            if( this.isShowAllBrands){
+                this.brandLists = this.defaultBrandLists;
+            }else{
+                this.brandLists = this.defaultBrandLists.slice(0,6)
+            }
+        },
+        showMoreItemCheckedAll:function () {//点击多选按钮
+            this.isShowAllBrands = true;
+            this.isShowAllBrandsButton = true
+            this.brandLists = this.defaultBrandLists;
+        },
+        handleCancel:function () {//取消多选
+            this.isShowAllBrandsButton = false
+        },
+        showIsProductScreen:function(){//
+            this.isProductScreen = true;
+        },
+        handleConfirmScreen:function(){
+            this.listQuery.pageNum = 1;
+            this.listData = [];
+            if(!isPC){
+                this.isShowAllBrands = false;
+                this.isShowAllBrandsButton = false;
+            }
+            this.GetHomeNewFloorList();
+        }
+    },
+    created: function () {
+        var _self = this
+        // this.searchFlag = (this.params.keyword !== "");
+        if(globalUserData){
+            this.userId = 	this.listQuery.userId = globalUserData.userId;
+            this.userIdentity = globalUserData.identity;
+            this.userToken = globalUserData.token;
+        }
+        var userInfo = localStorage.getItem('userInfo');
+        if(userInfo){
+            this.userId = JSON.parse(userInfo).userId;
+            this.shopID = JSON.parse(userInfo).shopId;
+        }
+        this.GetHomeRecommend();
+        // 获取对应品牌列表
+        this.getCommoditySearchQUeryBrand();
+    },
+    mounted: function () {
+        var _self = this;
+        //上垃加载更多
+        $(window).on('scroll', function(){
+            var scrollTop = $(this).scrollTop();
+            var scrollHeight = $(document).height();
+            var windowHeight = window.innerHeight + $("footer").height();
+            if (scrollTop + windowHeight >= scrollHeight) {
+                //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
+                var totalPage = Math.ceil(_self.listRecord / _self.listQuery.pageSize)?Math.ceil(_self.listRecord / _self.listQuery.pageSize):1;
+                var next = _self.listQuery.pageNum+1;
+                if(next <= totalPage){
+                    if (_self.requestFlag){
+                        _self.listQuery.pageNum = next;
+                        // 获取列表数据
+                        _self.GetHomeNewFloorList();
+                    }
+                    _self.requestFlag = false;
+                }
+            }
+        });
+        if(!isPC){
+            $('footer').addClass("noneImportant");
+        }
+    }
+});

+ 35 - 0
src/main/resources/static/js/supplier-center/shop/goods.js

@@ -17,6 +17,7 @@ var myGoods = new Vue({
             pageSize:10,
             productCode:'',//货号
             name:'',//商品名称
+            showFlag:'',// 新品展示状态
             validFlag:'',//状态
             featuredFlag:'',//是否主推
             commodityType:0,//商品属性
@@ -35,6 +36,20 @@ var myGoods = new Vue({
         noMore:false,
         check:false,
     },
+    filters: {
+        newvalidFlagFilters: function(value) {
+            //新品展示状态
+            const map = {
+                0: '待审核',
+                1: '已展示',
+                2: '展示过期',
+                3: '未展示',
+                4: '审核未通过',
+                5: '已下线'
+            }
+            return map[value]
+        }
+    },
     computed: {
         pageTotal: function () {
             var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
@@ -123,6 +138,10 @@ var myGoods = new Vue({
             var _this = this;
             _this.listQuery.validFlag =event.target.value;
         },
+        SelectChangeNewvalidFlagFn: function(){//选择状态
+            var _this = this;
+            _this.listQuery.showFlag =event.target.value;
+        },
         SelectChangeInsideFn: function(){//选择主推
             var _this = this;
             _this.listQuery.featuredFlag =event.target.value;
@@ -358,6 +377,22 @@ var myGoods = new Vue({
             });
             return stateColor;
         },
+        showFlagColorFn: function(state){
+            var stateColor = '',
+                stateColorObject={
+                    1: '#1890f9',
+                    2: '#FF2A2A',
+                    3: '#f9a94b',
+                    4: '#FF2A2A',
+                    5: '#FF2A2A'
+                };
+            Object.keys(stateColorObject).forEach(function(key){
+                if(key == state){
+                    stateColor = stateColorObject[key]
+                }
+            });
+            return stateColor;
+        },
         StatusTextFn: function(state){
             var stateText = '',
                 stateTextObject={

+ 78 - 16
src/main/resources/static/js/supplier-center/shop/release.js

@@ -57,7 +57,11 @@ var releaseContainer = new Vue({
             commodityType:1,
             trainingMethod:0,// 线上培训方式
             trainingType:0,// 售价包含培训费用
-            trainingFee:''
+            trainingFee:'',
+            newProductType:0,// 新品商品状态  1.参与 2.未参与
+            qualificationNo:'',//资质证书编号
+            productName:'',//资质产品名称
+            qualificationTime:'',//证书有效日期
         },
         params:{
             param:[],//相关参数
@@ -129,6 +133,7 @@ var releaseContainer = new Vue({
         vShow_MinBuyNumber:false,
         vShow_Stock:false,
         vShow_isProvince:false,
+        vShow_isNewProductType:false,
         vShow_taxPoint:false,
         vShow_GoodsImages:false,
         vShow_detailInfoEditor:true,
@@ -136,6 +141,9 @@ var releaseContainer = new Vue({
         vShow_attribute:false,
         vShow_trainingMethod:false,
         vShow_trainingType:false,
+        vShow_QualificationNo:false,
+        vShow_ProductName:false,
+        vShow_QualificationTime:false,
     },
     computed: {
 
@@ -169,6 +177,10 @@ var releaseContainer = new Vue({
                     _this.releaseParams.step = data.step;
                     _this.releaseParams.byFlag = data.byFlag;
                     _this.releaseParams.allAreaFlag = data.allAreaFlag;
+                    _this.releaseParams.productName = data.productName;
+                    _this.releaseParams.qualificationNo = data.qualificationNo;
+                    _this.releaseParams.qualificationTime = data.qualificationTime;
+                    _this.releaseParams.newProductType = data.newProductType;
                     _this.releaseParams.detailInfo = data.productDetail.detailInfo;
                     _this.releaseParams.serviceInfo = data.productDetail.serviceInfo;
                     _this.releaseParams.orderInfo = data.productDetail.orderInfo;
@@ -589,6 +601,9 @@ var releaseContainer = new Vue({
                 _this.isProvince=false;
             }
         },
+        radioChangeNewvalidFlag: function(event){//选择新品展示
+            this.releaseParams.newProductType= event.target.value;
+        },
         addProvinceFn: function(item){//选择指定区域
             item.isChecked = ! item.isChecked;
         },
@@ -786,7 +801,7 @@ var releaseContainer = new Vue({
                     _this.scrollIntoView();
                     setTimeout(function(){
                         _this.vShow_GoodsType = false;
-                    },2000);
+                    },3000);
                     return;
                 }
                 if(_this.releaseParams.qualificationImg == ''){
@@ -795,7 +810,34 @@ var releaseContainer = new Vue({
                     _this.scrollIntoView();
                     setTimeout(function(){
                         _this.vShow_QualificationImg = false;
-                    },2000);
+                    },3000);
+                    return;
+                }
+                if(_this.releaseParams.qualificationNo == ''){
+                    _this.vShow_QualificationNo = true;
+                    _this.fromMessage = '请输入证书编号';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_QualificationNo = false;
+                    },3000);
+                    return;
+                }
+                if(_this.releaseParams.productName == ''){
+                    _this.vShow_ProductName = true;
+                    _this.fromMessage = '请输入产品名称';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_ProductName = false;
+                    },3000);
+                    return;
+                }
+                if(_this.releaseParams.qualificationTime == ''){
+                    _this.vShow_QualificationTime = true;
+                    _this.fromMessage = '请选择证书有效期';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_QualificationTime = false;
+                    },3000);
                     return;
                 }
             }
@@ -806,7 +848,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_Tags = false;
-                },2000);
+                },3000);
                 return;
             }else{
                 _this.tagsList.forEach(function(el){
@@ -819,7 +861,7 @@ var releaseContainer = new Vue({
                 _this.fromMessage = '请输入包装规格';
                 setTimeout(function(){
                     _this.vShow_Unit = false;
-                },2000);
+                },3000);
                 _this.scrollIntoView();
                 return;
             }
@@ -846,7 +888,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_NormalPrice = false;
-                },2000);
+                },3000);
                 return
             }
             if(_this.releaseParams.normalPrice == 0){
@@ -855,7 +897,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_NormalPrice = false;
-                },2000);
+                },3000);
                 return
             }
             if(_this.releaseParams.price == ''){
@@ -864,7 +906,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_price = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.price == 0){
@@ -873,7 +915,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_price = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.includedTax == 3){
@@ -882,7 +924,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_includedTax = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.minBuyNumber === ''){
@@ -891,7 +933,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_MinBuyNumber = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.stock === ''){
@@ -900,7 +942,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_Stock = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.minBuyNumber > _this.releaseParams.stock){
@@ -909,7 +951,7 @@ var releaseContainer = new Vue({
                 _this.scrollIntoView();
                 setTimeout(function(){
                     _this.vShow_MinBuyNumber = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.releaseParams.areaFlag == '0'){
@@ -923,7 +965,7 @@ var releaseContainer = new Vue({
                     _this.fromMessage = '请选择指定区域';
                     setTimeout(function(){
                         _this.vShow_isProvince = false;
-                    },2000);
+                    },3000);
                     return;
                 }
             }
@@ -962,6 +1004,11 @@ var releaseContainer = new Vue({
                 _this.initSeverCKeditor();
             }
         },
+        NextStep3: function() {//点击进入5步
+            var _this = this;
+            _this.activeNum++;
+            _this.scrollIntoView();
+        },
         initCKeditor: function(){//富文本
             var _this = this;
             _this.vShow_detailInfoEditor = false;
@@ -1011,6 +1058,15 @@ var releaseContainer = new Vue({
         },
         addReleaseGoodSubmitFn: function(){//提交发布商品
             var _this = this;
+            if(_this.releaseParams.newProductType === 0){
+                _this.vShow_isNewProductType = true;
+                _this.fromMessage = '请选择是否参与新品展示';
+                _this.scrollIntoView();
+                setTimeout(function(){
+                    _this.vShow_isNewProductType = false;
+                },3000);
+                return;
+            }
             _this.releaseParams.orderInfo = orderInfoEditor.getData();
             _this.releaseParams.serviceInfo = severInfoEditor.getData();
             if(_this.releaseType == 'edit'){
@@ -1063,7 +1119,7 @@ var releaseContainer = new Vue({
                 _this.fromMessage = '请输入商品显示名';
                 setTimeout(function(){
                     _this.vShow_Name = false;
-                },2000);
+                },3000);
             }else{
                 _this.vShow_Name = false;
             }
@@ -1076,7 +1132,7 @@ var releaseContainer = new Vue({
                 _this.fromMessage = '请输入内部商品名';
                 setTimeout(function(){
                     _this.vShow_AliasName = false;
-                },2000);
+                },3000);
             }else{
                 _this.vShow_AliasName = false;
             }
@@ -1096,6 +1152,12 @@ var releaseContainer = new Vue({
         blur_aliasUnit: function(e){
             this.vShow_Unit = false;
         },
+        blur_qualificationNo: function(e){
+            this.vShow_QualificationNo = false;
+        },
+        blur_productName: function(e){
+            this.vShow_ProductName = false;
+        },
         input_normalPrice: function(e){
             this.vShow_NormalPrice = false;
         },

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 14 - 0
src/main/resources/static/lib/css/swiper-bundle.css


+ 37 - 9
src/main/resources/templates/activity/attestation.html

@@ -5,7 +5,9 @@
     <title>采美365网-认证通-一款专业的正品认证SaaS软件系统</title>
     <template th:replace="components/head-link"></template>
     <link th:href="@{/css/activity/attestation.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link type="text/css" rel="stylesheet" href="/lib/swiper.min.css">
     <template th:replace="components/analysis"></template>
+    <script charset="utf-8" type="text/javascript" src="/lib/swiper.min.js"></script>
 </head>
 <body>
 <input type="hidden" th:value="${zplmDomain}" id="zplmDomain">
@@ -13,8 +15,8 @@
 <template th:replace="components/header"></template>
 
 <!-- 商品列表 -->
-<div id="attestation" >
-<!-- banner   -->
+<div id="attestation">
+    <!-- banner   -->
     <div class="section_banner">
         <h1>认证通</h1>
         <p>一款专业的正品认证SaaS软件系统</p>
@@ -25,9 +27,20 @@
                 <div class="title">
                     <h1>认证通快捷入口</h1>
                 </div>
-                <div class="section_content clear">
+                <div class="swiper-container section_content mobile" id="mySwiper1">
+                    <div class="swiper-wrapper">
+                        <div class="section_li swiper-slide"
+                             :class="'section_li_' + index"
+                             v-for="(data , index) in firstEntryList"
+                             @click="handleClick(data)">
+                            <img class="logo" :src="data.logo">
+                            <div class="name" v-text="data.name"></div>
+                        </div>
+                    </div>
+                </div>
+                <div class="section_content clear pc">
                     <div class="section_li" v-for="(data , index) in firstEntryList" @click="handleClick(data)">
-                        <img class="logo" :src="data.logo" >
+                        <img class="logo" :src="data.logo">
                         <div class="name" v-text="data.name"></div>
                     </div>
                 </div>
@@ -38,18 +51,30 @@
                 <div class="title">
                     <h1>他们都在用认证通<span>(排名不分先后顺序)</span></h1>
                 </div>
-                <div class="section_content clear">
+                <div class="section_content clear mobile">
                     <div class="section_li" v-for="(data , index) in suppileData" @click="handleClick(data)">
-                        <img class="logo" :src="data.logo" >
+                        <img class="logo" :src="data.logo">
                         <div class="content">
                             <span class="icon-marks"></span>
                             <div class="name" v-text="data.name"></div>
                         </div>
                     </div>
                 </div>
+                <div class="swiper-container section_content pc" id="mySwiper2">
+                    <div class="swiper-wrapper">
+                        <div class="section_li swiper-slide" v-for="(data , index) in suppileData"
+                             @click="handleClick(data)">
+                            <img class="logo" :src="data.logo">
+                            <div class="content">
+                                <span class="icon-marks"></span>
+                                <div class="name" v-text="data.name"></div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
             </div>
         </div>
-<!--        1-->
+        <!--        1-->
         <div class="section_main one">
             <div class="inner">
                 <div class="title">
@@ -285,8 +310,11 @@
 <!-- 引入底部 -->
 <template th:replace="article/components/article-footer"></template>
 <template th:replace="components/foot-link"></template>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/shopping.service.js(v=${version})}"></script>
+
+<script charset="utf-8" type="text/javascript"
+        th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript"
+        th:src="@{/js/common/serviceapi/shopping.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/activity/attestation.js(v=${version})}"></script>
 </body>
 </html>

+ 6 - 154
src/main/resources/templates/flea-market/form.html

@@ -16,9 +16,11 @@
     <div class="bannerimg"><img src="/img/flea-market/banner@2x.png" v-if="isPC"><img
             src="/img/flea-market/banner3.png " v-else></div>
     <div class="my-maintenance" id="secondHandrelease">
-        <div class="mt-top"><span class="mt-title">发布信息</span></div>
+        <div class="mt-top"><span class="mt-title">发布二手估价商品</span></div>
         <div class="newsTitle">
-            <p>欢迎您来到采美365网二手商品市场,您可以在这里发布二手设备、产品信息,展示期为3个月;为了完整展示您的商品,请您认真填写以下商品基本信息,谢谢合作。</p>
+            <p>
+                欢迎您来到采美365网二手商品市场,您可以在这里发布二手仪器和产品,采美官方 人员将会对商品进行审核和专业的估价,估价完成后才能上架展示并销售,展示期为 3个月。为了完整展示您的商品,请您认真填写以下商品基本信息,谢谢合作。
+            </p>
         </div>
         <div class="mt-bottom">
             <form id="mt-form" method="post" enctype="multipart/form-data" class="login-form common-form">
@@ -51,7 +53,7 @@
                 </div>
                 <div class="unlogin-item input-item shrink-spacing" id="vShow_checkCode">
                     <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>验证码:</div>
-                    <input class="code" type="text"  maxlength="6" v-model="secondParams.checkCode" placeholder="请输入验证码">
+                    <input class="code" type="text"  maxlength="6" v-model="secondParams.checkCode"   @blur="handleMobileCodeInput" placeholder="请输入验证码">
                     <a class="getCode" href="javascript:void(0);" @click="getNewMobileCodeFn" :class="[isMobileDisabled  ? 'disabled' : '']">{{ mobileCodeText }}</a>
                     <span class="release-tips errTips icon mIcon" v-show="vShow_checkCode">{{fromMessage}}</span>
                 </div>
@@ -107,20 +109,6 @@
                            placeholder="请输入公司名称,不超过30个汉字">
                     <div class="release-tips errTips icon mIcon" v-show="vShow_companyName">{{fromMessage}}</div>
                 </div>
-                <div class="unlogin-item input-item shrink-spacing" id="vShow_Price">
-                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>交易价:
-                    </div>
-                    <input type="text" style="width: 288px;" maxlength="20" id="shopprice"
-                           oninput="value=value.replace(/[^\d]/g, '')"
-                           v-model="secondParams.price" placeholder="请输入交易价">
-                    <label class="xiangliao"
-                           style="color: #E15616;;margin-left: 15px;position: relative;font-size: 14px">
-                        <input type="checkbox" name="Detailed_chat" v-model="secondParams.detailTalkFlags"
-                               @click="Detailed($event)" id="Detailed"><label for="Detailed"
-                                                                              class="transactionbox"></label>价格详聊</label>
-                    <span class="showflag" v-show="vShow_detailTalkFlag">(勾选代表同意不显示交易价)</span>
-                    <span class="release-tips errTips icon mIcon" v-show="vShow_Price">{{fromMessage}}</span>
-                </div>
                 <div class="unlogin-item input-item shrink-spacing" id="vShow_shopColor">
                     <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品成色:
                     </div>
@@ -128,104 +116,6 @@
                            placeholder="请输入商品成色,如“9成新”">
                     <span class="release-tips errTips icon mIcon" v-show="vShow_shopColor">{{fromMessage}}</span>
                 </div>
-                <div class="unlogin-item input-item shrink-spacing" id="vShow_fileType">
-                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品包含的文件:</div>
-                    <div class="secondradio" style="margin-bottom: 0;">
-                        <div class="typelist" v-for="(type ,index) in productFileTypeActions" :key='index' value="type.value"
-                             @click="choiceProductFileType(type, index)" :class="type.isChecked ? 'checked' : ''">
-                            <span class="radio"></span>
-                            <span class="rtext"> {{type.name}}</span>
-                        </div>
-                    </div>
-                    <span class="release-tips errTips icon mIcon" v-show="vShow_fileType">{{fromMessage}}</span>
-                </div>
-                <div class="release-main-container" v-if="secondParams.publishIdentity == 1">
-                    <div class="release-from">
-                        <div class="release-label">身份验证照片:<span style="color:#ffb496">个人请上传身份证正反面照片(照片大小不超过5M)</span>
-                        </div>
-                        <div class="release-input upload image" id="uploadAuthenticationImage">
-                            <div class="upload-file" v-if="secondParams.authenticationImage == ''">
-                                <i class="icon mIcon add"></i>
-                                <p class="add-text">身份证正面</p>
-                                <input ref="AuthenticationImage" type="file" name="file" value="" class="input-file"
-                                       accept="image/png,image/jpeg,image/gif,image/jpg"
-                                       @change="uploadAuthenticationImagesFn">
-                            </div>
-                            <div class="upload-file" v-else>
-                                <img :data-original='secondParams.authenticationImage'
-                                     :src="secondParams.authenticationImage"
-                                     :data-image="secondParams.authenticationImage"
-                                     class="upload-img"
-                                     alt="身份验证照片"
-                                     id="ViewerAuthenticationImage"
-                                     @click="showViewerImageFn"
-                                >
-                                <i class="icon mIcon del" @click="removeAuthenticationImagesFn"></i>
-                            </div>
-                        </div>
-                        <div class="release-input upload image" id="uploadAuthenticationBackImage">
-                            <div class="upload-file" v-if="secondParams.authenticationBackImage == ''">
-                                <i class="icon mIcon add"></i>
-                                <p class="add-text">身份证反面</p>
-                                <input ref="AuthenticationBackImage" type="file" name="file" value="" class="input-file"
-                                       accept="image/png,image/jpeg,image/gif,image/jpg"
-                                       @change="uploadAuthenticationBackImageFn">
-                            </div>
-                            <div class="upload-file" v-else>
-                                <img :data-original='secondParams.authenticationBackImage'
-                                     :src="secondParams.authenticationBackImage"
-                                     :data-image="secondParams.authenticationBackImage"
-                                     class="upload-img"
-                                     alt="身份验证照片"
-                                     id="ViewerAuthenticationBackImage"
-                                     @click="showViewerImageFn"
-                                >
-                                <i class="icon mIcon del" @click="removeAuthenticationBackImageFn"></i>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="release-main-container" v-if="secondParams.publishIdentity == 2">
-                    <div class="release-from">
-                        <div class="release-label">营业执照照片:<span style="color:#ffb496">请上传营业执照照片(照片大小不超过5M)</span>
-                        </div>
-                        <div class="release-input upload image" id="uploadLicenseImage">
-                            <div class="upload-file" v-if="secondParams.licenseImage == ''">
-                                <i class="icon mIcon add"></i>
-                                <p class="add-text">营业执照</p>
-                                <input ref="LicenseImage" type="file" name="file" value="" class="input-file"
-                                       accept="image/png,image/jpeg,image/gif,image/jpg"
-                                       @change="uploadLicenseImageFn">
-                            </div>
-                            <div class="upload-file" v-else>
-                                <img :data-original='secondParams.licenseImage'
-                                     :src="secondParams.licenseImage"
-                                     :data-image="secondParams.licenseImage"
-                                     class="upload-img"
-                                     alt="身份验证照片"
-                                     id="ViewerLicenseImage"
-                                     @click="showViewerImageFn"
-                                >
-                                <i class="icon mIcon del" @click="removeLicenseImageFn"></i>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="unlogin-item input-item shrink-spacing">
-                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>收款账号:<span class="red-color">(用于接收最终结算金额)</span></div>
-                    <input type="text" v-model="secondParams.cardNumber" id="cardNumber" maxlength="30" placeholder="请输入收款银行卡卡号">
-                    <div class="release-tips errTips icon mIcon" v-show="vShow_cardNumber">{{fromMessage}}</div>
-                </div>
-                <div class="unlogin-item input-item shrink-spacing" id="vShow_caimeiMobile">
-                    <div class="unlogin-label spacing" style="letter-spacing: 1px;">采美对接人:</div>
-                    <input type="text" maxlength="15" v-model="secondParams.dockingPeopleName" placeholder="请输入采美对接人姓名,没有可不填">
-                </div>
-                <div class="unlogin-item input-item shrink-spacing">
-                    <div class="unlogin-label spacing">采美对接人联系方式:</div>
-                    <input type="text" v-model="secondParams.dockingPeopleMobile"
-                           oninput="value=value.replace(/[^\d]/g,'')" maxlength="11" placeholder="请输入采美对接人手机号,没有可不填">
-                    <span class="release-tips errTips icon mIcon" v-show="vShow_caimeiMobile">{{fromMessage}}</span>
-                </div>
                 <div class="unlogin-item input-item shrink-spacing">
                     <div class="unlogin-label spacing">商品类型:</div>
                     <div class="secondradio">
@@ -257,6 +147,7 @@
                     <span class="release-tips errTips icon mIcon" v-show="vShow_TownId">{{fromMessage}}</span>
                     <textarea type="text" id="addressDetails" class="border-grey address-details"
                               v-model="secondParams.address" maxlength="50"
+                              @blur="handleMobileAddresInput"
                               placeholder="请填写详细地址,如街道/小区/门牌等"/></textarea>
                     <span class="release-tips errTips icon mIcon" v-show="vShow_Address">{{fromMessage}}</span>
                 </div>
@@ -297,45 +188,6 @@
                         <span id="word-limit">不超过200字</span>
                     </div>
                 </div>
-                <div class="unlogin-item input-item shrink-spacing">
-                    <div class="unlogin-label spacing">二手出让承诺函签署文件:<span style="color:#ffb496">(仅支持pdf,大小不能超过20M)</span>
-                    </div>
-                    <div class="upload-file-view">
-                        <input class="upload-file-name" type="text" v-model="secondParams.fileName" disabled="disabled">
-                        <div class="input-file-btn" v-if="secondParams.ossName == ''">
-                            上传文件
-                            <input class="input-file-btn" ref="CommitmentImagefile" type="file" name="file" value=""
-                                   accept="*.pdf/*.doc*/.docx" @change="uploadCommitmentFileFn">
-                        </div>
-                        <i class="icon mIcon del file" v-else @click="deleteCommitmentFile"></i>
-                    </div>
-                </div>
-                <div class="release-main-container">
-                    <div class="release-from">
-                        <div class="release-label">二手出让承诺函签署图片:<span style="color:#ffb496">(若不方便上传承诺函签署文件,可对已签署的承诺函进行拍照或者截图,再上传图片,照片大小不超过5M)</span>
-                        </div>
-                        <div class="release-input upload image" id="uploadCommitmentImage">
-                            <div class="upload-file" v-if="secondParams.commitmentImage == ''">
-                                <i class="icon mIcon add"></i>
-                                <p class="add-text">承诺函图片</p>
-                                <input ref="CommitmentImage" type="file" name="file" value="" class="input-file"
-                                       accept="image/png,image/jpeg,image/gif,image/jpg"
-                                       @change="uploadCommitmentImagesFn">
-                            </div>
-                            <div class="upload-file" v-else>
-                                <img :data-original='secondParams.commitmentImage'
-                                     :src="secondParams.commitmentImage"
-                                     :data-image="secondParams.commitmentImage"
-                                     class="upload-img"
-                                     alt="身份验证照片"
-                                     id="ViewerCommitmentImage"
-                                     @click="showViewerImageFn1"
-                                >
-                                <i class="icon mIcon del" @click="removeCommitmentImagesFn"></i>
-                            </div>
-                        </div>
-                    </div>
-                </div>
                 <div class="release-button">
                     <div class="buttton-main">
                         <div class="text">

+ 163 - 4
src/main/resources/templates/index.html

@@ -11,6 +11,7 @@
     <link th:href="@{/css/base/floor.css(v=${version})}" rel="stylesheet" type="text/css">
     <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">
+    <link th:href="@{/lib/css/swiper-bundle.css(v=${version})}" media="screen and (min-width:768px)" rel="stylesheet" type="text/css">
     <template th:replace="components/analysis"></template>
 </head>
 <body>
@@ -52,7 +53,7 @@
     <div class="section_container">
         <div class="inner">
             <div id="sidebar" class="section_right">
-                <div class="box swiper-wrapper" >
+                <div class="box" >
                     <div class="section_right_item" th:if="${sideJson.get('liveList')}!=null and ${sideJson.get('liveList').size}>0">
                         <div class="right_item_title">
                             <p>精彩直播</p>
@@ -132,17 +133,109 @@
             </div>
             <div class="section_left ">
                 <template v-if="userId > 0">
+                    <!--固定楼层-->
+                    <div class="section_page section_page_user hot" v-for="(floor,index) in hotListPageFloor">
+                        <div class="section_page_title" >
+                            <h1 data-id="0">{{ floor.title }}</h1>
+                            <p>{{ floor.detail }}</p>
+                            <a class="section_page_btn" href="/product/hot.html" target="_blank"></a>
+                        </div>
+                        <div class="swiper-container-floor hotList mySwiper" id="recommendBox">
+                            <div class="swiper-wrapper section_page_main type_08 recommendBox-wrapper recommendBox-wrapperHot clear mfw section_8 max">
+                                <!-- 商品/图片 列表 -->
+                                <a :href="'/product-'+pros.product.productId+'.html'" class="swiper-slide page_main_item hot ad_04" target="_blank" v-for="pros in floor.floorImageList4">
+                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.product.image" :alt="pros.name">
+                                    <div class="page_main_type" v-if="pros && pros.product.productType && pros.product.productType === 2">医疗器械</div>
+                                    <div class="page_main_text">
+                                        <span class="tag" v-if="pros.product.beautyActFlag == 1">美博会</span>
+                                        <span v-text="pros.product.name"></span>
+                                    </div>
+                                    <div class="page_main_price">
+                                        <!-- 商品价格 -->
+                                        <div class="main_price_text">
+                                            <!-- 正常商品 -->
+                                            <template v-if="pros.product.productCategory == 1">
+                                                <div class="price_text_tag">
+                                                    <p class="couponTag" v-if="pros.product.couponsLogo">优惠券</p>
+                                                    <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
+                                                    <template v-if="pros.product.svipProductFlag === 1">
+                                                        <div class="svip-tag">
+                                                            <div class="svip-icon">SVIP</div>
+                                                            <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
+                                                            <template v-if="showVipPriceTag(pros.product)">
+                                                                <div class="svip-price">
+                                                                    <span v-html="pros.product.svipPriceTag"></span>
+                                                                </div>
+                                                            </template>
+                                                        </div>
+                                                    </template>
+                                                    <template v-else>
+                                                        <p class="listTag" v-if="pros.product.actStatus ==1 && pros.product.promotions">
+                                                            <span v-text="pros.promotions.name"></span>
+                                                            <template v-if="PromotionsFormat(pros.product.promotions)">
+                                                                <!--单品优惠:优惠价-->
+                                                                <span class="price_unit">:¥</span><span class="price_num">{{ pros.product.price | NumFormat }}</span>
+                                                            </template>
+                                                        </p>
+                                                    </template>
+                                                </div>
+                                                <div class="main_price_login">
+                                                    <!--priceFlag 0公开价格 1不公开价格 2仅对会员机构公开-->
+                                                    <template v-if="pros.product.priceFlag == 1">
+                                                        <em class="price_grade"><span>¥</span>价格未公开</em>
+                                                    </template>
+                                                    <!--机构价仅会员可见 && 用户是普通机构-->
+                                                    <template v-else-if="pros.product.priceFlag==2 && GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG!=1">
+                                                        <em class="price_grade_club"><span>¥</span>会员可见</em>
+                                                    </template>
+                                                    <!--机构价仅医美机构可见-->
+                                                    <template v-else-if="pros.product.priceFlag==3 && (GLOBAL_CLUB_TYPE !=1)">
+                                                        <em class="price_grade_club red"><span>¥</span>仅医美机构可见</em>
+                                                    </template>
+                                                    <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
+                                                    <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (pros.product.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && pros.shopID==GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                                        <div class="main_price_show" :class="{none: showVipPriceTag(pros.product) || PromotionsFormat(pros.product.promotions)}">
+                                                            ¥<span class="price_num" v-if="showVipPriceTag(pros.product)">{{ pros.product.originalPrice | NumFormat }}</span>
+                                                            <span class="price_num" v-else>{{ pros.product.price | NumFormat }}</span>
+                                                        </div>
+                                                    </template>
+                                                    <template v-else>
+                                                        <!--供应商除自己的商品外,也显示价格等级-->
+                                                        <em class="price_grade_shop">
+                                                            <span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
+                                                        </em>
+                                                    </template>
+                                                </div>
+                                            </template>
+                                            <!-- 二手商品 -->
+                                            <template v-else>
+                                                <div class="main_price_login">
+                                                    <div class="price_text_tag"></div>
+                                                    <div v-if="pros.product.detailTalkFlag==2" class="main_price_show">¥价格祥聊</div>
+                                                    <div v-else class="main_price_show">
+                                                        ¥<span class="price_num">{{ pros.product.price | NumFormat }}</span>
+                                                    </div>
+                                                </div>
+                                            </template>
+                                        </div>
+                                    </div>
+                                </a>
+                            </div>
+                            <div class="swiper-pagination swiper-pagination-floor hot mfc "  :data-id="floor.floorImageList4.length"></div>
+                        </div>
+                    </div>
+                    <!--楼层-->
                     <div class="section_page section_page_user" v-for="(floor,index) in homePageFloor">
                         <template v-if="floor.floorContent">
                             <div class="section_page_title" >
                                 <h1 :data-id="index+1">{{ floor.title }}</h1>
                                 <p>{{ floor.detail }}</p>
                             </div>
-                            <div :class="floor.floorContent.templateType == 8 ? 'hotList swiper-container-floor' : ''"
+                            <div :class="floor.floorContent.templateType == 8 ? 'swiper-container-floor mySwiperSlide' : ''"
                                  :id="floor.floorContent.templateType == 8 ? 'recommendBox' : ''"
                             >
                                 <div :class="floor.floorContent.templateType == 8 ?
-                                    'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+floor.floorContent.templateType :
+                                    'swiper-wrapper section_page_main type_08 recommendBox-wrapper clear mfw section_'+floor.floorContent.templateType :
                                     'section_page_main clear mfw section_'+floor.floorContent.templateType"
                                 >
                                     <!-- 广告图 -->
@@ -287,6 +380,72 @@
                     </div>
                 </template>
                 <template v-else>
+                    <!--静态化固定楼层-->
+                    <div class="section_page section_page_user hot" th:each="floor,stat : ${floorJson.get('pageFloorList')}">
+                        <div class="section_page_title">
+                            <h1 th:text="${floor.get('title')}" data-id="0"></h1>
+                            <p th:text="${floor.get('detail')}"></p>
+                            <a class="section_page_btn" href="/product/hot.html" target="_blank"></a>
+                        </div>
+                        <div class="hotList swiper-container-floor mySwiper" id="recommendBox">
+                            <div class="section_page_main type_08 swiper-wrapper recommendBox-wrapper recommendBox-wrapperHot clear mfw section_8">
+                                <!-- 商品/图片 列表 -->
+                                <th:block th:each="pros : ${floor.get('floorImageList4')}"  th:object="${pros}">
+                                    <a th:href="*{link}" class="swiper-slide page_main_item hot ad_04" target="_blank">
+                                        <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                            <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                        </th:block>
+                                        <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                            <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
+                                        </th:block>
+                                        <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('product').get('name')}"></span>
+                                        </div>
+                                        <div class="page_main_price">
+                                            <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">
+                                                            <p class="couponTag" th:if="*{couponsLogo}">优惠券</p>
+                                                            <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
+                                                            <th:block th:if="${svipProductFlag}!=null">
+                                                                <div class="svip-tag" th:if="*{svipProductFlag}==1">
+                                                                    <div class="svip-icon">SVIP</div>
+                                                                </div>
+                                                            </th:block>
+                                                            <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_unit" style="display:none;">:¥</span><span class="price_num"></span>
+                                                                </th:block>
+                                                            </p>
+                                                        </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>
+                                                    </th:block>
+                                                    <!-- 二手商品 -->
+                                                    <th:block th:if="*{productCategory}!=1">
+                                                        <div class="main_price_none sec">
+                                                            <em class="price_grade"><span>¥</span>登录可见</em>
+                                                        </div>
+                                                    </th:block>
+                                                </div>
+                                            </th:block>
+                                        </div>
+                                    </a>
+                                </th:block>
+                            </div>
+                            <div class="swiper-pagination swiper-pagination-floor hot mfc" th:attr="data-id=${floor.get('floorImageList4').size}"></div>
+                        </div>
+                    </div>
+                    <!--静态化普通楼层-->
                     <div class="section_page" th:each="floor,stat : ${floorJson.get('homePageFloor')}">
                         <th:block th:if="${floor.get('floorContent')}!=null">
                             <div class="section_page_title">
@@ -294,7 +453,7 @@
                                 <p th:text="${floor.get('detail')}"></p>
                             </div>
                             <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? 'swiper-container-floor mySwiperSlide' : ''" 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">

+ 1 - 1
src/main/resources/templates/pay/caimei-hlbpay.html

@@ -111,7 +111,7 @@
                                         <img src="/img/pay/iconbank-wx@2x.png" alt="微信支付">
                                     </a>
                                 </template>
-                                <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(2,'ICBC_B2B')" :class="{ active: mobileTabIndex === 2 }">
+                                <a v-if="B2BpayFlag === 1" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(2,'ICBC_B2B')" :class="{ active: mobileTabIndex === 2 }">
                                     <img src="/img/pay/iconbank-B2Bbank@2x.png" alt="企业网银">
                                 </a>
                                 <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(3,'ICBC_B2C')" :class="{ active: mobileTabIndex === 3 }">

+ 1 - 1
src/main/resources/templates/pay/caimei-paycash.html

@@ -110,7 +110,7 @@
                                 <a v-if="isPC" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(1,'WEIXIN')" :class="{ active: mobileTabIndex === 1 }">
                                     <img src="/img/pay/iconbank-wx@2x.png" alt="微信支付">
                                 </a>
-                                <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(2,'ICBC')" :class="{ active: mobileTabIndex === 2 }">
+                                <a v-if="B2BpayFlag === 1" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(2,'ICBC')" :class="{ active: mobileTabIndex === 2 }">
                                     <img src="/img/pay/iconbank-B2Bbank@2x.png" alt="企业网银">
                                 </a>
                                 <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(3,'ICBC')" :class="{ active: mobileTabIndex === 3 }">

+ 24 - 0
src/main/resources/templates/product/detail.html

@@ -1,3 +1,4 @@
+
 <!DOCTYPE html>
 <html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="https://www.thymeleaf.org ">
@@ -457,6 +458,7 @@
                 <span :class="tabsIndex == 2 ? 'on' : ''" v-if="isServiceInfo && !isNoneDisabled" @click="detailsClicktab(2)">服务项目</span>
                 <span :class="tabsIndex == 3 ? 'on' : ''" v-if="isTrainingMethod" @click="detailsClicktab(3)">培训方案</span>
                 <span v-if="archiveId !== 0" :class="tabsIndex == 4 ? 'on' : ''" @click="detailsClicktab(4)">相关资料</span>
+                <span :class="tabsIndex == 5 ? 'on' : ''" v-if="isQualificationImg" @click="detailsClicktab(5)">商品资质</span>
                 <!--<span>评价</span>-->
             </div>
             <div class="tabCon">
@@ -583,6 +585,27 @@
                         </div>
                     </div>
                 </div>
+                <div class="item" v-if="tabsIndex == 5">
+                    <div class="product-qualificationTable" v-if="product.qualificationNo">
+                        <table border="1">
+                            <tr>
+                                <td>证书编号</td>
+                                <td>产品名称</td>
+                                <td>详情</td>
+                            </tr>
+                            <tr>
+                                <td>{{ product.qualificationNo }}</td>
+                                <td>{{ product.productName }}</td>
+                                <td>
+                                    <a target="_blank" :href="product.qualificationLink">查看</a>
+                                </td>
+                            </tr>
+                        </table>
+                    </div>
+                    <div class="product-qualificationImg">
+                        <img :src="product.qualificationImg" alt="">
+                    </div>
+                </div>
                 <!--                <div class="item">-->
                 <!--                <div style="text-align: left;margin: 10px 0">-->
                 <!--                        <span>商品评分:</span>-->
@@ -595,6 +618,7 @@
                 <!--                    </div>-->
                 <!--                    <p class="comment">该商品暂无评价!</p>-->
                 <!--                </div>-->
+
             </div>
         </div>
         <div v-if="isPC" class="rgt">

+ 2 - 2
src/main/resources/templates/product/instrument.html

@@ -60,7 +60,7 @@
                             <h1 :data-id="index+1">{{ floor.title }}</h1>
                             <p>{{ floor.detail }}</p>
                         </div>
-                        <div :class="floor.floorContent.templateType == 8 ? 'hotList swiper-container-floor' : ''"
+                        <div :class="floor.floorContent.templateType == 8 ? 'swiper-container-floor mySwiperSlide' : ''"
                              :id="floor.floorContent.templateType == 8 ? 'recommendBox' : ''"
                         >
                             <div :class="floor.floorContent.templateType == 8 ?
@@ -219,7 +219,7 @@
                             <p th:text="${floor.get('detail')}"></p>
                         </div>
                         <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? 'swiper-container-floor mySwiperSlide' : ''" 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">

+ 210 - 0
src/main/resources/templates/product/product-hot.html

@@ -0,0 +1,210 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+  <title>采美365网-商品列表</title>
+  <template th:replace="components/head-link"></template>
+  <link th:href="@{/css/product/product-hot.css(v=${version})}" rel="stylesheet" type="text/css">
+  <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+
+<!-- 商品列表 -->
+<div id="productList" v-cloak>
+    <!--品牌选择-->
+  <template v-if="isRequest">
+    <div class="product-banner">
+      <div class="product-banner-top">
+        <p class="title">采美新品橱窗</p>
+      </div>
+      <div class="product-banner-bot">
+        <div class="inner">
+          <div id="productHotBanner" class="swiper-container">
+            <ul class="swiper-wrapper">
+              <li class="swiper-slide mfc" v-for="pros in topGoodList">
+                <a :href="'/product-'+pros.productId+'.html'" target="_blank">
+                  <div class="swiper-slide-image">
+                    <img :src="pros.mainImage" alt="">
+                  </div>
+                  <div class="swiper-slide-info">
+                    <div class="swiper-slide-name">
+                      <P v-text="pros.name"></P>
+                    </div>
+                    <div class="swiper-slide-btn">
+                      <div class="slide-btn" >立即购买</div>
+                    </div>
+                  </div>
+                </a>
+              </li>
+            </ul>
+            <div class="swiper-pagination mfc"><span v-if="isPC" v-for="i in topGoodList.length"></span></div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <template v-if="isPC">
+      <div class="product-brand clear">
+        <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">
+          <p class="title">品牌</p>
+        </div>
+        <template v-if="!isShowAllBrands" :class="isShowAllBrands ? 'show' : ''">
+          <div class="product-brand-list" >
+            <div class="brand-list" v-if="!isShowAllBrandsButton" @click="choiceBrandAll" :class="isAllcheckedBrand ? 'checked' : ''"><a href="javascript:void(0)">全部</a></div>
+            <div class="brand-list" @click="choiceBrandSearchIndex(brand, index)" v-for="(brand,index) in brandLists"
+                 :key="index" :class="choiceBrandIndex === index ? 'checked' : ''">
+              <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+            </div>
+          </div>
+        </template>
+        <template v-else>
+          <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
+            <div class="brand-list" v-if="!isShowAllBrandsButton" @click="choiceBrandAll" :class="isAllcheckedBrand ? 'checked' : ''"><a href="javascript:void(0)">全部</a></div>
+            <div class="brand-list" @click="choiceBrandSearch(brand, index)" v-for="(brand,index) in brandLists"
+                 :key="index" :class="choiceBrandSearchClass(brand,index)">
+              <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+            </div>
+          </div>
+        </template>
+        <div class="product-brand-oper" v-if="!isShowAllBrandsButton">
+          <div class="product-brand-more" v-if="defaultBrandLists.length>7" :class="isShowAllBrands ? 'show' : ''"
+               @click="showMoreItem">{{
+            isShowAllBrands ? '收起' : '更多' }} <i class="icon mIcon"></i></div>
+          <div class="product-brand-add" v-if="defaultBrandLists.length>2" @click="showMoreItemCheckedAll">+多选</div>
+        </div>
+        <div class="product-brand-button" v-if="isShowAllBrandsButton">
+          <div class="brand-button">
+            <div class="btn confirm" :class="checkedBrandList.length>0 ? '' : 'disabled'" @click="handleConfirmScreen">确定</div>
+            <div class="btn cancel" @click="handleCancel">取消</div>
+          </div>
+        </div>
+      </div>
+    </template>
+    <template v-else>
+      <div class="product-brand-content">
+        <div class="product-brand clear">
+          <div class="product-brand-name">品牌</div>
+          <div class="product-brand-list" v-if="!isShowAllBrands">
+            <div class="brand-list" @click="choiceBrandAll" :class="isAllcheckedBrand ? 'checked' : ''"><a href="javascript:void(0)">全部</a></div>
+            <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"  v-if="index < 2" @click="showMoreItem">
+              <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+            </div>
+          </div>
+          <div class="product-brand-more" :class="isShowAllBrands ? 'show' : ''" @click="showMoreItem">
+            <i class="icon mIcon"></i>
+          </div>
+        </div>
+        <div class="product-brand-fiexd" v-if="isShowAllBrands">
+          <div class="product-brand-fiexdcontent">
+            <div class="product-brand-scroll">
+              <!--                <div class="brand-list" @click="choiceBrandAll" :class="isAllcheckedBrand ? 'checked' : ''"><a href="javascript:void(0)">全部</a></div>-->
+              <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"
+                   @click="choiceBrand(brand, index)" :class="brand.isChecked ? 'checked' : ''">
+                <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+              </div>
+            </div>
+            <div class="product-screen-btn" @click="handleConfirmScreen">
+              <div class="sub-button">确定</div>
+            </div>
+          </div>
+
+        </div>
+      </div>
+    </template>
+  </template>
+  <div>
+    <div v-if="listLoading" class="loading">
+      <img src="/img/base/loading.gif">
+    </div>
+    <template v-else>
+      <!--数据为空-->
+      <div v-if="isListEmpty" class="empty">
+        <img src="/img/common/empty.png">
+        <div class="msg">
+          <p>暂未找到你搜索的商品,去<a href="/">商城</a>,逛逛吧~</p>
+        </div>
+      </div>
+      <template v-else>
+        <!--商品列表-->
+        <ul class="productList clear mfw">
+          <li class="productItem " v-for="p in listData">
+            <div class="page_main_type" v-if="p.productType === 2">医疗器械</div>
+            <a class="image" :href="'/product-'+p.productId+'.html'">
+              <img :src="p.image" :alt="p.name">
+              <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
+              <p class="name" v-html="p.name" v-else></p>
+              <div class="price">
+                <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
+                <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
+                  <div class="price_text_tag clear">
+                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
+                    <template v-if="p.svipProductFlag === 1">
+                      <div class="svip-tag">
+                        <div class="svip-icon">SVIP</div>
+                        <template v-if="showVipPriceTag(p)">
+                          <div class="svip-price">
+                            <span v-html="p.svipPriceTag"></span>
+                          </div>
+                        </template>
+                      </div>
+                    </template>
+                    <template v-else>
+                      <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}
+                        <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
+                      </p>
+                    </template>
+                  </div>
+                  <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                  <div class="main_price_unde" v-if="p.priceFlag==1">¥价格未公开</div>
+                  <!--机构价仅会员可见 && 用户是普通机构-->
+                  <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG!=1">
+                    ¥会员可见
+                  </div>
+                  <!--机构价仅会员可见 && 用户是普通机构-->
+                  <div class="main_price_unde" v-else-if="p.priceFlag==3 && (GLOBAL_CLUB_TYPE !=1)">
+                    ¥仅医美机构可见
+                  </div>
+                  <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
+                  <template
+                          v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                    <div class="main_price_show"
+                         :class="{none: PromotionsFormat(p.promotions) || (p.svipProductFlag === 1 && showVipPriceTag(p))}">
+                      ¥{{ (PromotionsFormat(p.promotions) || showVipPriceTag(p) ? p.originalPrice :
+                      p.price ) | NumFormat }}
+                    </div>
+                  </template>
+                  <!--供应商除自己的商品外,也显示价格等级-->
+                  <div class="price_grade" v-else><span class="bold">¥</span><i
+                          :class="'icon mIcon i'+p.priceGrade"></i></div>
+                </template>
+                <template v-else>
+                  <div class="price_text_tag">
+                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
+                    <template v-if="p.svipProductFlag === 1">
+                      <div class="svip-tag">
+                        <div class="svip-icon">SVIP</div>
+                      </div>
+                    </template>
+                    <template v-else>
+                      <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
+                    </template>
+                  </div>
+                  <div class="price_grade"><span class="bold">¥</span><i
+                          :class="'icon mIcon i'+p.priceGrade"></i></div>
+                </template>
+              </div>
+            </a>
+          </li>
+        </ul>
+      </template>
+    </template>
+  </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/product/product-hot.js(v=${version})}"></script>
+</body>
+</html>

+ 28 - 5
src/main/resources/templates/supplier-center/shop/goods.html

@@ -80,6 +80,18 @@
                                 <option v-for="x in classificationThreeList" :value="x.tinyTypeID">{{x.name}}</option>
                             </select>
                         </div>
+                        <div class="form-row">
+                            新品展示:
+                            <select name="" class="state small" @change="SelectChangeNewvalidFlagFn($event)">
+                                <option value="">全部</option>
+                                <option value="0">待审</option>
+                                <option value="1">已展示</option>
+                                <option value="2">展示过期</option>
+                                <option value="3">未展示</option>
+                                <option value="4">审核未通过</option>
+                                <option value="5">已下线</option>
+                            </select>
+                        </div>
                         <div id="newBtn">
                             <div class="query-btn" @click="SearchQueryListFn">搜索</div>
                         </div>
@@ -93,6 +105,7 @@
                             <li>分类</li>
                             <li>市场价/售价</li>
                             <li>状态</li>
+                            <li>新品展示</li>
                             <li>操作</li>
                         </ul>
                         <div class="tbody">
@@ -151,6 +164,11 @@
                                     <p class="status" :style="{color: StatusColorFn(product.validFlag)}">
                                         {{StatusTextFn(product.validFlag)}}</p>
                                 </li>
+                                <li>
+                                    <div class="good-classFly" :style="{color: showFlagColorFn(product.showFlag)}">
+                                        <p>{{ product.showFlag | newvalidFlagFilters }}</p>
+                                    </div>
+                                </li>
                                 <li>
                                     <div class="good-handle">
                                         <a class="btn " href="javascript: void(0);" v-if="[0,1,2,3,8,9].indexOf(product.validFlag)!=-1" @click="editGoodFn(product)">编辑</a>
@@ -217,6 +235,11 @@
                                         <span>分类:</span>
                                         <p class="good-classFly">{{product.typeName}}</p>
                                     </div>
+                                    <div class="good-right">
+                                        <span>新品展示:</span>
+                                        <p class="status" :style="{color: showFlagColorFn(product.showFlag)}">
+                                            {{ product.showFlag | newvalidFlagFilters }}</p>
+                                    </div>
                                     <div class="good-right">
                                         <span>状态:</span>
                                         <p class="status" :style="{color: StatusColorFn(product.validFlag)}">
@@ -224,11 +247,11 @@
                                     </div>
                                 </div>
                                 <div class="good-handle">
-                                        <a class="btn down" href="javascript: void(0);" v-if="['2'].indexOf(product.validFlag)!=-1" @click="ItemDownshelf(product)">下架</a>
-                                        <a class="btn success" href="javascript: void(0);" v-if="product.isAddFeatured" @click="AddPushHotFn(product)">添加主页推荐</a>
-                                        <a class="btn danger" href="javascript: void(0);" v-if="product.isDelFeatured" @click="DeletePushHotFn(product)">删除主页推荐</a>
-                                        <a class="btn primary" href="javascript: void(0);" v-if="['2'].indexOf(product.validFlag)!=-1" @click="pageLinkDetils(product)">查看</a>
-                                    </div>
+                                    <a class="btn down" href="javascript: void(0);" v-if="['2'].indexOf(product.validFlag)!=-1" @click="ItemDownshelf(product)">下架</a>
+                                    <a class="btn success" href="javascript: void(0);" v-if="product.isAddFeatured" @click="AddPushHotFn(product)">添加主页推荐</a>
+                                    <a class="btn danger" href="javascript: void(0);" v-if="product.isDelFeatured" @click="DeletePushHotFn(product)">删除主页推荐</a>
+                                    <a class="btn primary" href="javascript: void(0);" v-if="['2'].indexOf(product.validFlag)!=-1" @click="pageLinkDetils(product)">查看</a>
+                                </div>
                             </div>
                           </div>
                         </div>

+ 63 - 7
src/main/resources/templates/supplier-center/shop/release.html

@@ -34,20 +34,25 @@
                             <p><span>1</span></p>
                             <p>基本信息</p>
                         </div>
-                        <div class="stepSpan" :class="activeNum == 1 || activeNum == 2 || activeNum == 3 ? 'active':''">
+                        <div class="stepSpan" :class="activeNum == 1 || activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
                             <p><span>2</span></p>
                             <p>销售信息</p>
                         </div>
-                        <div class="stepSpan" :class="activeNum == 2 || activeNum == 3 ? 'active':''">
+                        <div class="stepSpan" :class="activeNum == 2 || activeNum == 3 || activeNum == 4 ? 'active':''">
                             <p><span>3</span></p>
                             <p>上传图片</p>
                         </div>
-                        <div class="stepSpan" :class="activeNum == 3 ? 'active':''">
+                        <div class="stepSpan" :class="activeNum == 3 || activeNum == 4 ? 'active':''">
                             <p><span>4</span></p>
                             <p>服务项目</p>
                         </div>
+                        <div class="stepSpan" :class="activeNum == 4 ? 'active':''">
+                            <p><span>5</span></p>
+                            <p>新品展示</p>
+                        </div>
                     </div>
                     <div class="release-container clear"  v-show="isRequest" :class="isRequest ? 'active' : ''" >
+                        <!--商品初始信息-->
                         <div class="release-main-container clear" v-show="activeNum == 0">
                             <div class="release-from none clear" >
                                 <div class="release-label"><span class="star">*</span>商品显示名:</div>
@@ -198,6 +203,21 @@
                                 </div>
                                 <div class="release-tips" v-show="vShow_QualificationImg">{{fromMessage}}</div>
                             </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>证书编号:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.qualificationNo" maxlength="50" type="text" placeholder="请完整输入证书上的编号" @blur="blur_qualificationNo"></div>
+                                <div class="release-tips" v-show="vShow_QualificationNo">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2">
+                                <div class="release-label"><span class="star">*</span>产品名称:</div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.productName" maxlength="50" type="text" placeholder="请输入证书上的产品名称" @blur="blur_productName"></div>
+                                <div class="release-tips" v-show="vShow_ProductName">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear" v-if="releaseParams.productType == 2" id="EffectiveDate">
+                                <div class="release-label"><span class="star">*</span>证书有效期:</div>
+                                <div class="release-input"><input class="input" type="date"  style="width: 220px;" v-model="releaseParams.qualificationTime" maxlength="40" required="required"></div>
+                                <div class="release-tips" v-show="vShow_QualificationTime">{{fromMessage}}</div>
+                            </div>
                             <div class="release-from none clear">
                                 <div class="release-label"><span class="star">*</span>商品标签:</div>
                                 <div class="release-input">
@@ -254,12 +274,12 @@
                                 </div>
                             </div>
                         </div>
+                        <!--商品价格信息-->
                         <div class="release-main-container" v-show="activeNum == 1">
                             <div class="release-from clear">
                                 <div class="release-label"><span class="star">*</span>市场价:</div>
                                 <div class="release-input" id="normalPrice">
                                     <input class="input price" v-model="releaseParams.normalPrice" maxlength="40" type="number" placeholder="请输入商品市场价" @input="input_normalPrice">
-                                    <span class="unit">{{releaseParams.unit}}</span>
                                     <span class="yang">¥</span>
                                 </div>
                                 <div class="release-tips" v-show="vShow_NormalPrice">{{fromMessage}}</div>
@@ -268,7 +288,6 @@
                                 <div class="release-label"><span class="star">*</span>售价:</div>
                                 <div class="release-input">
                                     <input class="input price" v-model="releaseParams.price" maxlength="40" type="number" placeholder="请输入商品售价" @input="input_price">
-                                    <span class="unit">{{releaseParams.unit}}</span>
                                     <span class="yang">¥</span>
                                 </div>
                                 <div class="release-tips" v-show="vShow_price">{{fromMessage}}</div>
@@ -328,7 +347,6 @@
                                 <div class="release-label rightTxt">结算价:</div>
                                 <div class="release-input">
                                     <input class="input price" v-model="releaseParams.costPrice" maxlength="40" type="number" placeholder="请输入商品结算价">
-                                    <span class="unit">{{releaseParams.unit}}</span>
                                     <span class="yang">¥</span>
                                 </div>
                             </div>
@@ -402,6 +420,7 @@
                                 </div>
                             </div>
                         </div>
+                        <!--商品信息-->
                         <div class="release-main-container" v-show="activeNum == 2">
                             <div class="release-from clear">
                                 <div class="release-label"><span class="star">*</span>商品图片:</div>
@@ -460,6 +479,43 @@
                                     <textarea  class="textarea" id="severInfoEditor" v-html="releaseParams.serviceInfo" placeholder="建议从服务案例,美业年限,团队人数和资历认证各方面进行描述"></textarea >
                                 </div>
                             </div>
+                            <div class="release-from clear">
+                                <div class="from-button last secondbtn">
+                                    <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
+                                    <a href="javascript: void(0);" class="btn next" @click="NextStep3">下一步</a>
+                                </div>
+                            </div>
+                        </div>
+                        <!--新品展示编辑-->
+                        <div class="release-main-container new" v-show="activeNum == 4">
+                            <div class="release-from text imgText">
+                                <P style="line-height: 24px;">采美商城已上线新品重点展示功能,新发布的商品有机会直接展示在网站首页,增加商品曝光量,展示时长为3个月。 您可为这个即将发布的商品选择是否参与新品展示。</P>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-label"><span class="star">*</span>新品展示:</div>
+                                <div class="release-input">
+                                    <div class="release-props">
+                                        <label class="release-radio">
+                                            <input type="radio" name="byFlag" v-model="releaseParams.newProductType" value="1"  @click="radioChangeNewvalidFlag">
+                                            <i class="icon mIcon">参与</i>
+                                        </label>
+                                        <label class="release-radio">
+                                            <input type="radio" name="byFlag" v-model="releaseParams.newProductType" value="2" checked @click="radioChangeNewvalidFlag">
+                                            <i class="icon mIcon">不参与</i>
+                                        </label>
+                                    </div>
+                                </div>
+                                <div class="release-tips" v-show="vShow_isNewProductType">{{fromMessage}}</div>
+                            </div>
+                            <div class="release-from clear">
+                                <div class="release-image">
+                                    <img src="/img/supplier/icon-hotimage.png" alt="新品展示">
+                                </div>
+                            </div>
+                            <div class="release-from text imgText">
+                                <P style="line-height: 24px;color: red;">请注意:</P>
+                                <P style="line-height: 24px;">最终能否展示在商城首页,需要经过采美审核人员进行审核(2-3个工作日),审核通过后才会展示。</P>
+                            </div>
                             <div class="release-from clear">
                                 <div class="from-button last secondbtn">
                                     <a href="javascript: void(0);" class="btn prev" @click="PrevStep">上一步</a>
@@ -467,7 +523,7 @@
                                     <a href="javascript: void(0);" class="btn next"  @click="addReleasePeview">预览商品</a>
                                 </div>
                             </div>
-                        </div>
+                       </div>
                         <div class="preview-container">
                             <div class="preview-content">
                                 <img src="" class="preview-bigimg" alt="" style="border: 2px dashed #DBDBDB">

+ 12 - 3
src/main/resources/templates/supplier/index.html

@@ -158,10 +158,19 @@
                 <div class="part" >
                     <div class="title">公司资质</div>
                     <div class="photo">
-                        <a th:href="${supplier.taxCertificate}" target="_blank" th:if="not${#strings.isEmpty(supplier.taxCertificate)}">
-                            <img th:src="${supplier.taxCertificate}">
+                        <a th:href="${supplier.medicalPracticeLicense}" target="_blank" th:if="not${#strings.isEmpty(supplier.medicalPracticeLicense)}">
+                            <img th:src="${supplier.medicalPracticeLicense}">
                         </a>
-                         <div class="cont" th:if="${#strings.isEmpty(supplier.taxCertificate)}">暂无</div>
+                        <a th:href="${supplier.medicalPracticeLicenseImg1}" target="_blank" th:if="not${#strings.isEmpty(supplier.medicalPracticeLicenseImg1)}">
+                            <img th:src="${supplier.medicalPracticeLicenseImg1}">
+                        </a>
+                        <a th:href="${supplier.medicalPracticeLicenseImg2}" target="_blank" th:if="not${#strings.isEmpty(supplier.medicalPracticeLicenseImg2)}">
+                            <img th:src="${supplier.medicalPracticeLicenseImg2}">
+                        </a>
+                        <a th:href="${supplier.medicalPracticeLicenseImg3}" target="_blank" th:if="not${#strings.isEmpty(supplier.medicalPracticeLicenseImg3)}">
+                            <img th:src="${supplier.medicalPracticeLicenseImg3}">
+                        </a>
+                         <div class="cont" th:if="${#strings.isEmpty(supplier.medicalPracticeLicenseImg1)}">暂无</div>
                     </div>
                 </div>
                 <div class="part" >

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä