Forráskód Böngészése

Merge branch 'developer' into developerC

chao 4 éve
szülő
commit
eeb5309990
55 módosított fájl, 1016 hozzáadás és 448 törlés
  1. 13 0
      src/main/java/com/caimei/www/pojo/page/ProductDetail.java
  2. 18 3
      src/main/java/com/caimei/www/service/page/impl/DocumentAuthServiceImpl.java
  3. 3 0
      src/main/resources/mapper/ProductMapper.xml
  4. 7 3
      src/main/resources/static/css/base/base.h5.css
  5. 5 1
      src/main/resources/static/css/base/base.pc.css
  6. 2 2
      src/main/resources/static/css/base/floor.css
  7. 1 0
      src/main/resources/static/css/product/detail.pc.css
  8. 8 1
      src/main/resources/static/css/product/qualityauthorize.css
  9. 2 2
      src/main/resources/static/css/supplier-center/setting/information.css
  10. 7 0
      src/main/resources/static/css/supplier-center/shop/release.css
  11. BIN
      src/main/resources/static/img/account/icon-beans-12@2x.png
  12. BIN
      src/main/resources/static/img/base/logo@2x.png
  13. 1 1
      src/main/resources/static/js/account/register-club.js
  14. 0 2
      src/main/resources/static/js/base.js
  15. 1 4
      src/main/resources/static/js/flea-market/form.js
  16. 8 6
      src/main/resources/static/js/flea-market/list.js
  17. 69 68
      src/main/resources/static/js/flea-market/secondDetail.js
  18. 39 8
      src/main/resources/static/js/index.js
  19. 1 1
      src/main/resources/static/js/pay/caimei-pay.js
  20. 1 15
      src/main/resources/static/js/pay/caimei-success.js
  21. 4 3
      src/main/resources/static/js/pay/caimei-weisapay.js
  22. 13 5
      src/main/resources/static/js/product/detail.js
  23. 43 9
      src/main/resources/static/js/product/instruement.js
  24. 6 1
      src/main/resources/static/js/product/qualityauthorize.js
  25. 91 18
      src/main/resources/static/js/shopping/confirm.js
  26. 64 9
      src/main/resources/static/js/supplier-center/shop/release.js
  27. 2 1
      src/main/resources/static/js/user-center/account/beans.js
  28. 1 1
      src/main/resources/static/js/user-center/order/detail.js
  29. 1 1
      src/main/resources/static/js/user-center/order/list.js
  30. 1 1
      src/main/resources/static/js/user-center/setting/upgrade.js
  31. 3 3
      src/main/resources/templates/account/register-club.html
  32. 3 3
      src/main/resources/templates/account/register-supplier.html
  33. 3 3
      src/main/resources/templates/account/supplier-information.html
  34. 2 2
      src/main/resources/templates/account/upgrade.html
  35. 33 33
      src/main/resources/templates/activity/activityTopic.html
  36. 3 2
      src/main/resources/templates/article/components/article-header.html
  37. 4 3
      src/main/resources/templates/components/header.html
  38. 20 10
      src/main/resources/templates/flea-market/detail.html
  39. 17 6
      src/main/resources/templates/flea-market/list.html
  40. 216 89
      src/main/resources/templates/index.html
  41. 8 4
      src/main/resources/templates/product/detail.html
  42. 2 2
      src/main/resources/templates/product/instruelist.html
  43. 215 89
      src/main/resources/templates/product/instrument.html
  44. 9 0
      src/main/resources/templates/product/qualityauthorize.html
  45. 1 1
      src/main/resources/templates/shopping/cart.html
  46. 2 1
      src/main/resources/templates/shopping/confirm.html
  47. 1 1
      src/main/resources/templates/supplier-center/operation/list.html
  48. 2 2
      src/main/resources/templates/supplier-center/setting/information.html
  49. 25 1
      src/main/resources/templates/supplier-center/shop/release.html
  50. 4 4
      src/main/resources/templates/supplier/index.html
  51. 22 14
      src/main/resources/templates/user-center/dashboard.html
  52. 1 1
      src/main/resources/templates/user-center/operation/list.html
  53. 4 4
      src/main/resources/templates/user-center/order/detail.html
  54. 2 2
      src/main/resources/templates/user-center/setting/information.html
  55. 2 2
      src/main/resources/templates/user-center/setting/upgrade.html

+ 13 - 0
src/main/java/com/caimei/www/pojo/page/ProductDetail.java

@@ -4,6 +4,7 @@ import com.caimei.www.pojo.order.LadderPrice;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -50,4 +51,16 @@ public class ProductDetail extends ProductList {
 	private Integer ladderFlag;
 	/** 阶梯价 */
 	List<LadderPrice> ladderPrices;
+	/**
+	 * 仪器培训方式:1线上培训,2线下培训
+	 */
+	private Integer trainingMethod;
+	/**
+	 * 售价是否包含:1售价未包含,2售价已包含
+	 */
+	private Integer trainingType;
+	/**
+	 * 培训费用(售价未包含)
+	 */
+	private BigDecimal trainingFee;
 }

+ 18 - 3
src/main/java/com/caimei/www/service/page/impl/DocumentAuthServiceImpl.java

@@ -1,5 +1,6 @@
 package com.caimei.www.service.page.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.model.GetObjectRequest;
@@ -14,7 +15,6 @@ import com.caimei.www.service.page.DocumentAuthService;
 import com.caimei.www.service.redis.RedisService;
 import com.caimei.www.utils.ImageUtil;
 import com.caimei.www.utils.RandomCodeGenerator;
-import com.caimei.www.utils.SMSUtils;
 import com.caimei.www.utils.VerifyCodeUtils;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -24,7 +24,10 @@ import org.springframework.http.*;
 import org.springframework.http.server.reactive.ServerHttpRequest;
 import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.stereotype.Service;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
 import org.springframework.util.StringUtils;
+import org.springframework.web.client.RestTemplate;
 import reactor.core.publisher.Mono;
 
 import javax.annotation.Resource;
@@ -73,6 +76,9 @@ public class DocumentAuthServiceImpl implements DocumentAuthService {
     @Value("${spring.profiles.active}")
     private String active;
 
+    @Value("${caimei.coreServer}")
+    private String coreServer;
+
     @Override
     public Boolean getAuthorizationCookie(String authorizationMobile) {
         if (!StringUtils.isEmpty(authorizationMobile)) {
@@ -116,8 +122,17 @@ public class DocumentAuthServiceImpl implements DocumentAuthService {
         String content = "采美资料库访问授权验证码:" + mobileCode + ",30分钟内有效";
         if (!StringUtils.isEmpty(code) && code.equalsIgnoreCase(imgCode)) {
             log.info("采美资料库访问授权验证码>>>>>" + mobileCode);
-            boolean sms = SMSUtils.sendSms(mobile, content);
-            if (sms) {
+            //boolean sms = SMSUtils.sendSms(mobile, content);
+            RestTemplate restTemplate = new RestTemplate();
+            String uri = coreServer + "/tools/sms/send";
+            // 发起Post请求
+            MultiValueMap<String, String> paramMap = new LinkedMultiValueMap<>();
+            paramMap.add("mobile", mobile);
+            paramMap.add("content", content);
+            String result = restTemplate.postForObject(uri, paramMap, String.class);
+            log.info(result);
+            JSONObject json = (JSONObject) JSONObject.parse(result);
+            if (null != json && json.getInteger("code") == 0) {
                 return Mono.just(JsonModel.success());
             }
         } else {

+ 3 - 0
src/main/resources/mapper/ProductMapper.xml

@@ -19,6 +19,9 @@
 			p.step as step,
 			p.recommendType as recommendType,
 			p.visibility as visibility,
+			p.trainingMethod,
+			p.trainingType,
+			p.trainingFee,
 
 			d.detailInfo as detailInfo,
 			d.orderInfo as orderInfo,

+ 7 - 3
src/main/resources/static/css/base/base.h5.css

@@ -60,7 +60,7 @@
 .baseHeadCenter .search .jqSelect select{width:27vw;height:9.6vw;line-height:9.6vw;border:none;font-size:3.7vw;color:#4A4F58;padding:0 6vw 0 3vw}
 .baseHeadCenter .search .jqSelect:before{right:4vw;line-height:9.6vw}
 .baseHeadCenter .search .jqSelect:after{content:'';position:absolute;right:0;top:3.4vw;width:.5vw;height:2.8vw;background:#BEC2C9}
-.baseHeadCenter .search .keyword{position:absolute;right:0;top:0;border:none;outline:none;width:66.4vw;height:9.6vw;line-height:9.6vw;font-size:3.7vw;color:#4A4F58;text-indent:2.6vw}
+.baseHeadCenter .search .keyword{position:absolute;right:0;top:0;border:none;outline:none;width:66.4vw;height:8.6vw;line-height:8.6vw;font-size:3.7vw;color:#4A4F58;text-indent:2.6vw}
 .baseHeadCenter .search .searchBtn{position:absolute;right:1.2vw;top:0}
 .baseHeadCenter .search .searchBtn:before{content:'';display:block;width:9.6vw;height:9.6vw;background-position:-24vw 1.5vw}
 .baseHeadCenter.account{height:13.4vw;border-bottom:solid 1px #ebecef}
@@ -227,9 +227,13 @@
 }
 /*采美豆弹窗样式*/
 .cmbeans-alert-box{width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;flex-direction: column;position: fixed;left: 0;top: 0;background: rgba(51,51,51,0.5);z-index: 99999;}
+.cmbeans-alert-image{width: 87.2vw;height: 68.6vw;position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin: auto;box-sizing: border-box;}
+.cmbeans-alert-image img{width: 87.2vw;height: 68.6vw;display: block;}
+.cmbeans-alert-image .mIcon{width:8vw;height:8vw;display: block;position: absolute;top: 45px;right: -3px;cursor: pointer;}
+.cmbeans-alert-image .mIcon:before{width:8vw;height:8vw;background-position:-34.1vw -77.9vw;}
 .cmbeans-alert-content{width: 71vw;height: 92vw;position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin: auto;box-sizing: border-box;padding-top: 54.6vw;background-size: cover;}
-.cmbeans-alert-content .icon{width:30px;height:30px;display: block;position: absolute;top: 45px;right: -35px;cursor: pointer;}
-.cmbeans-alert-content .icon:before{width:33px;height:33px;background-position:-34.1vw -77.6vw;}
+.cmbeans-alert-content .mIcon{width:8vw;height:8vw;display: block;position: absolute;top: 45px;right: -35px;cursor: pointer;}
+.cmbeans-alert-content .mIcon:before{width:8vw;height:8vw;background-position:-34.1vw -77.9vw;}
 .cmbeans-alert-content-text{height: 14vw;line-height: 14vw;text-align: center;width: 100%;font-size: 4vw;color: #333333;}
 .cmbeans-alert-content-bean{width: 100%;height: 7.6vw;line-height: 7.6vw;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
 .cmbeans-alert-content-bean .cmbeans-alert-icon{width: 9.2vw;height: 7.6vw;display: block;float: left;}

+ 5 - 1
src/main/resources/static/css/base/base.pc.css

@@ -349,7 +349,11 @@ iframe{width:320px !important;height: 280px !important}
 .empty a{color:#E15616;}
 
 /*采美豆弹窗样式*/
-.cmbeans-alert-box{width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;flex-direction: column;position: fixed;left: 0;top: 0;background: rgba(51,51,51,0.5);z-index: 99999;}
+.cmbeans-alert-box{width: 100%;height: 100%;display: flex;align-items: center;justify-content: center;flex-direction: column;position: fixed;left: 0;top: 0;background: rgba(51,51,51,0.7);z-index: 99999;}
+.cmbeans-alert-image{width: 404px;height: 342px;position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin: auto;box-sizing: border-box;}
+.cmbeans-alert-image img{width: 404px;height: 342px;display: block;}
+.cmbeans-alert-image .icon{width:30px;height:30px;display: block;position: absolute;top: 45px;right: -35px;cursor: pointer;}
+.cmbeans-alert-image .icon:before{width:33px;height:33px;background-position:-197px -550px}
 .cmbeans-alert-content{width: 310px;height: 399px;position: absolute;top: 0;left: 0;bottom: 0;right: 0;margin: auto;box-sizing: border-box;padding-top: 238px;background-size: cover;}
 .cmbeans-alert-content .icon{width:30px;height:30px;display: block;position: absolute;top: 45px;right: -35px;cursor: pointer;}
 .cmbeans-alert-content .icon:before{width:33px;height:33px;background-position:-197px -550px}

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

@@ -33,7 +33,7 @@
 .section_page .page_main_price .main_price_unde{width:100%;height:31px;line-height:31px;font-size:14px;color:#4a4f58;text-align:left;float:left}
 .section_page .page_main_price .main_price_show{width:100%;height:30px;line-height:30px;font-size:14px;color:#f94b4b;text-align:left;float:left}
 .section_page .page_main_price .main_price_show.none{color:#999999;text-decoration:line-through}
-.section_page .page_main_price .main_price_login,.section_page .page_main_price .main_price_show.none{display:none}
+.section_page .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
 .section_page .page_main_price .price_text_tag{width:100%;height:22px;box-sizing:border-box;float:left;margin-top:0px}
 .section_page .page_main_price .price_text_tag .listTag{margin:0;float:left}
 .section_page .page_main_price .main_price_none{width:100%;height:24px;box-sizing:border-box;float:left;margin-top:2px}
@@ -82,7 +82,7 @@
 .section_page .page_main_price{width:100%;box-sizing:border-box;padding:0 3.2vw}
 .section_page .page_main_price .price_text_tag{width:100%;box-sizing:border-box;float:left}
 .section_page .page_main_price .main_price_show{color:#f94b4b}
-.section_page .page_main_price .main_price_login,.section_page .page_main_price .main_price_show.none{display:none}
+.section_page .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
 .section_page .page_main_price .main_price_unde{width:100%;height:6.5vw;line-height:6.5vw;font-size:3.4vw;color:#4a4f58;text-align:left;float:left}
 .section_page .page_main_price .price_text_tag .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw}
 .section_page .section_page_main.section_6{height:auto}

+ 1 - 0
src/main/resources/static/css/product/detail.pc.css

@@ -137,6 +137,7 @@ input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appear
 .comment-right{float:right;color:#93979f}
 .tabCon .item div p{line-height: 26px;text-align: left;}
 .tabCon .item div p.tl{line-height: 40px;text-align: left; font-weight: bold;}
+.tabCon .item div p.tl .sm{line-height: 40px;text-align: left; font-weight: normal;}
 .noprice{color: #e15616;}
 .noprice .icon::before{width: 25px;height: 25px;background-position: -91px -545px;position: relative;top: 6px}
 .WeChat{float: right;font-size: 12px;cursor: pointer}

+ 8 - 1
src/main/resources/static/css/product/qualityauthorize.css

@@ -70,6 +70,10 @@ ul{margin:0;padding:0;list-style-type:none}
 .not-found {height: calc(100vh - 80px); display: flex;justify-content: center;align-items: center;flex-direction: column;}
 .not-found img{}
 .not-found p{font-size: 20px;color: #a8a8a8;padding: 60px;text-align: center;}
+.qrCodeImage{ width: 160px; position: fixed;right: 0 ; bottom: 80px;padding: 15px;border-radius: 4px; background: #fff;}
+.qrCodeImage img{ width: 100%; display: block;}
+.qrCodeImage .foot-text{text-align: center;font-size: 14px;line-height: 1.4}
+.qrCodeImage .closeHandle{ display: block;font-size: 26px;position: absolute;left: 0;top: -10px; color: #666;cursor: pointer}
 }
 
 @media screen and (max-width:768px){body{background:#fff}
@@ -117,7 +121,10 @@ ul{margin:0;padding:0;list-style-type:none}
 .not-found{width:100vw;padding-top: 40vw;text-align: center}
 .not-found img{width: 30vw}
 .not-found p{font-size: 4vw;margin-top: 6vw;color: #a8a8a8}
-
+.qrCodeImage{position: fixed;padding: 2vw; bottom: 30vw;right: 1vw; width: 30vw; background: #fff;box-shadow: -2px 2px 4px rgba(0,0,0,.05);border-radius: 4px; }
+.qrCodeImage img{ width: 100%;  display: block;}
+.qrCodeImage .foot-text{text-align: center;font-size: 3vw;line-height: 1.4}
+.qrCodeImage .closeHandle{ display: block;font-size: 6vw;position: absolute;left: 0;top: -2vw; color: #666;cursor: pointer}
 
 }.myZoomIn{-webkit-animation:zoomIn 1s ease;animation:zoomIn 1s ease}
 .myZoomOut{-webkit-animation:zoomOut 1s ease;animation:zoomOut 1s ease}

+ 2 - 2
src/main/resources/static/css/supplier-center/setting/information.css

@@ -11,8 +11,8 @@
    .container{background: #fff;box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.07); padding-top: 19px}
    .container .forget-form{width: 500px; margin: 0 auto;padding: 20px 0}
    .formLine select[name="cityID"]{margin: 0 14px}
-   .formLine p:nth-child(1){padding-left: 12px;color: #627386;}
-   .formLine.rightTxt p{padding-left: 17px;}
+   .formLine p:nth-child(1){padding-left: 0;color: #627386;}
+   .formLine.rightTxt p{padding-left: 0;}
    .formLine p em{margin: 0}
    input[type="text"]::placeholder,textarea::placeholder{color: #9aa5b5;}
    .formLine .diyBox.second{width: 111px}

+ 7 - 0
src/main/resources/static/css/supplier-center/shop/release.css

@@ -24,6 +24,9 @@ div{box-sizing: border-box;}
 .release-from .release-label{width: 100%;float: left;text-align: left;height: 32px;color: #627386;}
 .release-from .release-label span{color: #FF0000;}
 .release-from .release-input{width: 100%;height: auto;float: left;position: relative;}
+.release-from .release-input.expen{margin-top:10px;}
+.release-from .release-input.expen .input{padding-left:30px;}
+.release-from .release-input.expen .span{width:30px;height:36px;display:block;position:absolute;top:0;left:0;text-align:center;line-height:36px;font-size:14px;color:#22272e;}
 .release-from .release-input .input{width: 100%;height: 36px;padding: 0 10px;border-radius: 2px;border: 1px solid #b8bfca;float: left;font-size: 13px;box-sizing: border-box;}
 .release-from .release-input .input.price{padding-left: 30px;}
 .release-from .release-input .yang{width: 30px;height: 36px;position: absolute;left: 0;top: 0;line-height: 36px;text-align: center;}
@@ -184,6 +187,10 @@ textarea::placeholder{color: #9aa5b5}  .popup-button{padding: 10px;}
 .release-from .release-input .yang{width: 8vw;position: absolute;left: 0;top: 0;line-height:13vw;text-align: center}
 .release-from .release-input .input.price{padding-left: 7vw}
 .release-from .release-input{position: relative}
+.release-from .release-input.expen{margin-top:5.5vw;}
+.release-from .release-input.expen .input{padding-left:6vw;}
+.release-from .release-input.expen .span{width:6vw;height:11.8vw;display:block;position:absolute;top:0;left:0;text-align:center;line-height:11.8vw;font-size:3.4vw;color:#22272e;}
+
 /*销售信息*/
 input[type="radio"]{opacity:0;}
 .release-from .release-input .release-props{width: 100%;height: 36px;}

BIN
src/main/resources/static/img/account/icon-beans-12@2x.png


BIN
src/main/resources/static/img/base/logo@2x.png


+ 1 - 1
src/main/resources/static/js/account/register-club.js

@@ -216,7 +216,7 @@ var registerPage = new Vue({
                 _self.loginLoading = true;
                 UserApi.ClubUpgrade(_self.clubUpgradeUser,function (response) {
                     if(response.code === 0){
-                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得20采美豆的奖励','确定',true,function () {
+                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得500采美豆的奖励','确定',true,function () {
                             _self.clubLoginIndex();
                             _self.loginLoading = false;
                         });

+ 0 - 2
src/main/resources/static/js/base.js

@@ -197,7 +197,6 @@ var globalHead = new Vue({
                 }
             })
         }
-        console.log('hello')
         // 判断导航菜单高亮-对比url
         setTimeout(function(){
             var path = window.location.pathname;
@@ -388,7 +387,6 @@ $(function(){
         document.body.removeChild(oInput);
         CAIMEI.dialog('复制成功');
     });
-
 });
 /*function uuid() {
     var s = [];

+ 1 - 4
src/main/resources/static/js/flea-market/form.js

@@ -9,10 +9,7 @@ var fleaMarketForm = new Vue({
         ],
         currentId:0,
         radioList:[
-            {name:'轻光电',value:'1',isChecked:false},
-            {name:'重光电',value:'2',isChecked:false},
-            {name:'耗材配件',value:'3',isChecked:false},
-
+            {name:'美容仪器',value:'1',isChecked:false}
         ],
         beauty:[
            {name:'医美',value:'1'},

+ 8 - 6
src/main/resources/static/js/flea-market/list.js

@@ -9,7 +9,7 @@ var fleaMarketList = new Vue({
          requestFlag:false,
          showflag:false,
          mainflag:false,
-         userID:JSON.parse(localStorage.getItem('userInfo')),
+         userId:0,
          tabTitleName:'二手仪器',
          tabTitle: [
                     {value:'1',name:'二手仪器'},
@@ -18,9 +18,7 @@ var fleaMarketList = new Vue({
                    ],
           tabList : [
                     {value:'0',name:'全部'},
-                    {value:'1',name:'轻光电'},
-                    {value:'2',name:'重光电'},
-                    {value:'3',name:'耗材配件'},
+                    {value:'1',name:'美容仪器'}
                ],
           listQuery:{
                     pageNum:1,
@@ -101,7 +99,7 @@ var fleaMarketList = new Vue({
            gettabList:function (more) {
                 var _this = this;
                 _this.returnedTarget();
-                var params = Object.assign({secondHandType: _this.currentId,instrumentType:_this.currentID2}, _this.listQuery);
+                var params = Object.assign({userId:_this.userId,secondHandType: _this.currentId,instrumentType:_this.currentID2}, _this.listQuery);
                 SecondApi.SeconHandProductList(params,function (res) {
                      if (res.code == 0) {
                            var data = res.data;
@@ -159,7 +157,11 @@ var fleaMarketList = new Vue({
      },
      mounted:function () {
           var _this = this;
-          _this.gettabList();
+          var userInfo = JSON.parse(localStorage.getItem('userInfo'));
+          if(userInfo){
+              _this.userId = userInfo.userId;
+          }
+         _this.gettabList();
          setTimeout(function(){  // 图片懒加载
              $("img[data-original]").lazyload();
          },500);

+ 69 - 68
src/main/resources/static/js/flea-market/secondDetail.js

@@ -5,7 +5,6 @@ var fleaMarket = new Vue({
     el:"#fleaMarket",
     data: {
         tabIndex:0,
-        userId:'',
         shopId:'',
         productId: $("#productId").val(),
         isShow:false,
@@ -33,79 +32,81 @@ var fleaMarket = new Vue({
     methods: {
         InfoData: function(){
           var  _this = this;
-          SecondApi.ProductDetail({productId:_this.productId},function (res) {
-           if(res.code==0){
-                _this.isRequest =true;
-                    setTimeout(function(){
+          SecondApi.ProductDetail({productId:_this.productId,userId: _this.userID},function (res) {
+               if(res.code==0){
+                    _this.isRequest =true;
+                   _this.detail = res.data;
+                   _this.previewThumb =  res.data.imageList;
+                   _this.previewBigimage =res.data.imageList[0];
+                   setTimeout(function(){  // 图片懒加载
+                       $("img[data-original]").lazyload();
+                   },500);
+                   if(_this.userID!=null){
+                       if(res.data.secondHandType ==2){ //临期产品显示
+                           _this.HandType =true;
+                       }else {
+                           _this.HandType =false;
+                       }
+                   }
+                   if(res.data.showContactFlag!=2){
+                       _this.ShowImage=true;
+                   }else {
+                       _this.ShowImage=false;
+                   }
+                   if(res.data.sold == 1){//sold是否出售 0未出售,1已出售
+                       _this.soldImage = true;
+                   }else {
+                       _this.soldImage = false;
+                   }
+                   if(res.data.brandName !=''&& res.data.brandName!=null){
+                       _this.bnameShow = true;
+                       if(res.data.brandID ==161){
+                           _this.vShow_brand = true;
+                       }else {
+                           _this.vShow_brand = false;
+                       }
+                   }else {
+                       _this.bnameShow = false;
+                   }
+                   if (res.data.detailTalkFlag ==1){ //是否详聊  1不开启,2开启
+                       _this.FlagTwo==true;
+                   }else {
+                       _this.FlagTwo==false;
+                   }
+                   if(res.data.brandInfo==null||res.data.brandInfo==""){
+                       _this.Showlogo = false;
+                   }else {
+                       _this.Showlogo = true;
+                   }
+                   setTimeout(function(){
                         if (isPC) {
                             var magnifier = new ImageMagnifier(
-                                '#imgShown #CM____pic_thumb li'
-                                ,'#imgShown .bigImage'
-                                ,'#imgShown .preview-box'
-                                ,'#imgShown .mask'
-                                ,'#imgShown .bigitem'
-                                ,"on"
+                                '#imgShown #CM____pic_thumb li',
+                                '#imgShown .bigImage',
+                                '#imgShown .preview-box',
+                                '#imgShown .mask',
+                                '#imgShown .bigitem',
+                                "on"
                             ).init();
                         } else {
                             var swiper = new Swiper('#swiperImage', {
-                                loop : true,
-                                autoplay: {
-                                    delay: 2000,
-                                    disableOnInteraction: false
-                                },
-                                pagination: {
-                                    el: '.swiper-pagination',
-                                    type: 'fraction'
-                                }
-                            });
+                                    loop : true,
+                                    autoplay: {
+                                        delay: 2000,
+                                        disableOnInteraction: false
+                                    },
+                                    pagination: {
+                                        el: '.swiper-pagination',
+                                        type: 'fraction'
+                                    }
+                                });
                         }
-                    },500);
-           }else {
-                _this.isRequest =false;
-           }
-                _this.detail = res.data;
-                _this.previewThumb =  res.data.imageList;
-                _this.previewBigimage =res.data.imageList[0];
-                setTimeout(function(){  // 图片懒加载
-                      $("img[data-original]").lazyload();
-                },500);
-              if(_this.userID!=null){
-                if(res.data.secondHandType ==2){ //临期产品显示
-                   _this.HandType =true;
-                }else {
-                  _this.HandType =false;
-                }
-              }
-              if(res.data.showContactFlag!=2){
-                    _this.ShowImage=true;
-              }else {
-                    _this.ShowImage=false;
-              }
-              if(res.data.sold == 1){//sold是否出售 0未出售,1已出售
-                    _this.soldImage = true;
-                  }else {
-                    _this.soldImage = false;
-                  }
-             if(res.data.brandName !=''&& res.data.brandName!=null){
-                    _this.bnameShow = true;
-                if(res.data.brandID ==161){
-                    _this.vShow_brand = true;
-                }else {
-                    _this.vShow_brand = false;
-                }
-             }else {
-              _this.bnameShow = false;
-             }
-             if (res.data.detailTalkFlag ==1){ //是否详聊  1不开启,2开启
-                _this.FlagTwo==true;
-              }else {
-                _this.FlagTwo==false;
-             }
-             if(res.data.brandInfo==null||res.data.brandInfo==""){
-                _this.Showlogo = false;
-             }else {
-               _this.Showlogo = true;
-             }
+                     },500);
+               }else {
+                    _this.isRequest =false;
+                   window.location.href = "/404.html?error=未查询到该商品";
+               }
+
          })
         },
         changeActive:function(){

+ 39 - 8
src/main/resources/static/js/index.js

@@ -8,7 +8,8 @@ var homeData = new Vue({
         liveList:[],//右侧直播模块
         cmImageList:[],//右侧活动模块
         infoList:[],//右侧文章模块
-        popupFlag:false
+        popupFlag:false,
+        homePageFloor:[]//楼层
     },
     filters: {
         NumFormat: function(value) {//处理金额
@@ -84,6 +85,35 @@ var homeData = new Vue({
                 }
             });
         },
+        GetHomeData: function(){//获取首页楼层
+            var _self = this;
+            PublicApi.GetHomeData({ source: 1,userId: _self.userId },function(response){
+                if(response.code == 0){
+                    var data = response.data;
+                    _self.homePageFloor = data.homePageFloor;
+                    setTimeout(function(){
+                        // 图片懒加载
+                        $("img[data-original]").lazyload();
+                        _self.setAsideNav();
+                        _self.swiperFloor();
+                        // 设置页面查看更多
+                        _self.setReadeMore();
+                    },500);
+                }else{
+                    CAIMEI.Alert(response.msg, '确定');
+                }
+            });
+        },
+        PromotionsFormat:function(promo){//促销活动类型数据处理
+            if(promo!=null){
+                if(promo.type == 1 && promo.mode == 1){
+                    return true
+                }else{
+                    return false
+                }
+            }
+            return false
+        },
         setAsideNav: function(){
             var _self = this;
             if (isPC) {
@@ -253,15 +283,16 @@ var homeData = new Vue({
         var _this = this;
         // 页面主图轮播
         this.swiperBanner();
-        // 设置页面查看更多
-        this.setReadeMore();
-        // 推荐专区商品轮播
-        this.swiperFloor();
-        // 设置右侧导航
-        this.setAsideNav();
         // 获取设置商品价格
         if (GLOBAL_USER_ID) {
-            this.setPriceShown();
+            this.GetHomeData();
+        }else{
+            // 设置页面查看更多
+            this.setReadeMore();
+            // 设置右侧导航
+            this.setAsideNav();
+            // 推荐专区商品轮播
+            this.swiperFloor();
         }
         // Dom加载后
         this.$nextTick(function(){

+ 1 - 1
src/main/resources/static/js/pay/caimei-pay.js

@@ -186,7 +186,7 @@ var payContainer = new Vue({
                     if(data.order.status == '7'){
                         _self.payment = _self.toFixedFn(_self.payTotalFee - _self.payableAmount);
                     }else{
-                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.receiptAmount - _self.payableAmount);
+                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.receiptAmount - _self.payableAmount - _self.balancePayFee);
                     }
                     _self.paySuccessCounter = data.order.paySuccessCounter;
                     _self.isRequest = true;

+ 1 - 15
src/main/resources/static/js/pay/caimei-success.js

@@ -17,21 +17,7 @@ var payContainer = new Vue({
     },
     filters: {
         NumFormat:function(value) {
-            if(!value) return '0.00';
-            var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
-            var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
-            var floatPart = ".00"; //预定义小数部分
-            var value2Array = value.toString().split(".");
-            if(value2Array.length == 2) {  //=2表示数据有小数位
-                floatPart = value2Array[1].toString(); //拿到小数部分
-                if(floatPart.length == 1) { //补0,实际上用不着
-                    return intPartFormat + "." + floatPart + '0';
-                } else {
-                    return intPartFormat + "." + floatPart;
-                }
-            } else {
-                return intPartFormat + floatPart;
-            }
+            return Number(value).toFixed(2);
         }
     },
     methods: {

+ 4 - 3
src/main/resources/static/js/pay/caimei-weisapay.js

@@ -2,8 +2,9 @@
  *Created by ZHJY on 2020/7/14.
  */
 // var _WS_SERVICE = 'http://192.168.2.67:8010'; //维沙网银支付本地联调
-// var _WS_SERVICE = 'https://mall2b-b.caimei365.com';//维沙网银支付测试联调
-var _WS_SERVICE = 'https://mall2b.caimei365.com';//维沙网银支付正式联调
+// var _WS_SERVICE = 'http://192.168.2.68:8010'; //维沙网银支付本地联调
+var _WS_SERVICE = 'https://mall2b-b.caimei365.com';//维沙网银支付测试联调
+// var _WS_SERVICE = 'https://mall2b.caimei365.com';//维沙网银支付正式联调
 var payContainer = new Vue({
     el:"#payContainer",
     data: {
@@ -183,7 +184,7 @@ var payContainer = new Vue({
                     if(data.order.status === '7'){
                         _self.payment = _self.toFixedFn(_self.payTotalFee - _self.payableAmount);
                     }else{
-                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.receiptAmount - _self.payableAmount);
+                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.receiptAmount - _self.payableAmount - _self.balancePayFee);
                     }
                     _self.paySuccessCounter = data.order.paySuccessCounter;
                     _self.isRequest = true;

+ 13 - 5
src/main/resources/static/js/product/detail.js

@@ -32,8 +32,11 @@ var productDetail = new Vue({
         disabledText:'',
         isNoneDisabled:false,
         isServiceInfo:false,
+        isTrainingMethod:false,
         productTypeName:"",
         beautyActFlag:'',
+        trainingMethodText:'',
+        trainingType:''
     },
     computed: {},
     methods: {
@@ -81,21 +84,26 @@ var productDetail = new Vue({
                     if(product.productDetail.orderInfo!='' && product.productDetail.serviceInfo!=''){
                         _self.isServiceInfo = true;
                     }
-                    if(product.validFlag =='3' || product.validFlag =='9' || product.validFlag =='0' ||  product.validFlag =='10' || product.stock == 0 ){
+                    if(product.commodityType == 2 && product.trainingMethod){
+                        _self.isTrainingMethod = true;
+                        _self.trainingMethodText = product.trainingMethod == 1 ? '线上培训' : '线下培训';
+                        _self.trainingType = product.trainingType == 1 ? '¥'+product.trainingFee : '售价已包含';
+                    }
+                    if(product.validFlag == 3 || product.validFlag == 9 || product.validFlag == 0 ||  product.validFlag == 10 || product.stock == 0 ){
                         _self.isNoneDisabled = true;
                     }else{
                         _self.isNoneDisabled = false;
                     }
-                    if(product.validFlag =='3'){
+                    if(product.validFlag ==3){
                         _self.disabledText = '下架'
                     }
-                    if(product.validFlag =='10'){
+                    if(product.validFlag ==10){
                         _self.disabledText = '停售'
                     }
-                    if(product.validFlag =='9' || product.validFlag =='0'){
+                    if(product.validFlag ==9 || product.validFlag ==0){
                         _self.disabledText = '失效'
                     }
-                    if(product.stock == 0 && product.validFlag !='3'){
+                    if(product.stock == 0 && product.validFlag !=3){
                         _self.disabledText = '售罄'
                     }
                     _self.getRecommends();

+ 43 - 9
src/main/resources/static/js/product/instruement.js

@@ -10,12 +10,17 @@
          typeSort:'',
          showflag:false,
          params:{
-            pageId:'',
-            userId:'',
+            pageId:0,
+            userId:0,
             source:1
          },
          isPC:window.isPC
-    },
+     },
+     filters: {
+         NumFormat:function(value) {
+             return Number(value).toFixed(2);
+         }
+     },
      methods:{
         closeup:function(){
             this.showflag = false;
@@ -71,6 +76,34 @@
                 },0)
             },500);
         },
+        GetHomeData: function(){//获取楼层
+             var _self = this;
+            ProductApi.GethomeData(_self.params,function(response){
+                 if(response.code == 0){
+                     var data = response.data;
+                     _self.floorList = data.floorList;
+                     setTimeout(function(){
+                         // 图片懒加载
+                         $("img[data-original]").lazyload();
+                         _self.swiperFloor();
+                         // 设置页面查看更多
+                         _self.setReadeMore();
+                     },500);
+                 }else{
+                     CAIMEI.Alert(response.msg, '确定');
+                 }
+             });
+         },
+         PromotionsFormat:function(promo){//促销活动类型数据处理
+             if(promo!=null){
+                 if(promo.type == 1 && promo.mode == 1){
+                     return true
+                 }else{
+                     return false
+                 }
+             }
+             return false
+         },
         // 设置页面查看更多按钮显示
         setReadeMore: function(){
             $(".section_page_more").each(function(){
@@ -164,18 +197,19 @@
         var _self = this;
          var userInfo = localStorage.getItem('userInfo');
          if(userInfo){
-             this.params.userId = JSON.parse(userInfo).userId;
+             _self.userId = _self.params.userId = JSON.parse(userInfo).userId;
          }
          //this.params.pageId = getUrlParam('id');
          var paramsArr = window.location.pathname.split(".")[0].split("-");
          this.params.pageId =  paramsArr.length>=1 ? paramsArr[1] : '';
-        // 设置页面查看更多
-        this.setReadeMore();
-        // 推荐专区商品轮播
-        this.swiperFloor();
         // 获取设置商品价格
         if (GLOBAL_USER_ID) {
-            this.setPriceShown();
+            this.GetHomeData();
+        }else {
+            // 设置页面查看更多
+            this.setReadeMore();
+            // 推荐专区商品轮播
+            this.swiperFloor();
         }
         // Dom加载后
         this.$nextTick(function(){

+ 6 - 1
src/main/resources/static/js/product/qualityauthorize.js

@@ -20,7 +20,8 @@ var qualityAuthorize = new Vue({
         cmContent:'',
         isCmComtent:false,
         message:'',
-        isLoading:false
+        isLoading:false,
+        showQrcodeImage:true
     },
     filters:{
         snCode:function (code) {
@@ -79,6 +80,10 @@ var qualityAuthorize = new Vue({
         //授权证书影藏
         hideSqBookModal:function(){
            this.isShowSqBookModal = false;
+        },
+        //关闭微信二维码
+        handleColseQrCodeImage: function(){
+            this.showQrcodeImage = false
         }
     },
     // created:function() {

+ 91 - 18
src/main/resources/static/js/shopping/confirm.js

@@ -76,6 +76,7 @@ var shoppingConfirm = new Vue({
         userBeans:0,
         freightBeansMoney:0,
         freightMoney:0,
+        deductionBeans:0,
         hanldUserBeans:0,
         submitLoading: false,
     },
@@ -140,7 +141,7 @@ var shoppingConfirm = new Vue({
                     _self.payInfo.orderShouldPayFee = _self.totalPrice + _self.payInfo.freight;
                     switch (_self.payInfo.freePostFlag) {
                         case 1:
-                            if( _self.userBeans >= r.data.freight*100 ){
+                            if( _self.userBeans > 0 ){
                                 _self.freightBeansMoney = r.data.freight;
                                 _self.freightMoney = r.data.freight;
                                 _self.isBeansShow = true;
@@ -149,11 +150,16 @@ var shoppingConfirm = new Vue({
                                 _self.balance.isFreight = false;
                                 _self.isBeansShow = false;
                             }
+                            if(r.data.userBeans >= _self.freightBeansMoney*100){
+                                _self.deductionBeans = _self.freightBeansMoney*100
+                            }else{
+                                _self.deductionBeans = _self.userBeans
+                            }
                             _self.changeDeductibleFreight();
                             break;
                         case -1:
-                            if( _self.userBeans >= 3000 ){
-                                _self.freightMoney = 30;
+                            if( _self.userBeans > 0 ){
+                                _self.freightMoney = '到付';
                                 _self.freightBeansMoney = 30;
                                 _self.isBeansShow = true;
                             }else{
@@ -161,6 +167,11 @@ var shoppingConfirm = new Vue({
                                 _self.balance.isFreight = false;
                                 _self.isBeansShow = false;
                             }
+                            if(r.data.userBeans >= _self.freightBeansMoney*100){
+                                _self.deductionBeans = _self.freightBeansMoney*100
+                            }else{
+                                _self.deductionBeans = _self.userBeans
+                            }
                             _self.changeDeductibleFreight();
                             break;
                     }
@@ -393,7 +404,7 @@ var shoppingConfirm = new Vue({
             $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
             if(!isPC){looseBody();}
         },
-        useUserMoney: function(){
+        useUserMoney: function(){//勾选余额抵扣
             var _self = this;
             if(this.balance.userMoney>0){
                 this.$nextTick(function() {
@@ -404,15 +415,25 @@ var shoppingConfirm = new Vue({
                             _self.payInfo.orderShouldPayFee = 0;
                             if(_self.balance.isFreight){// 勾选了采美豆丢运费
                                 _self.balance.deductMoney = _self.totalPrice; // 抵扣使用金额 = 订单总金额
-                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.totalPrice*10)/10; // 抵扣后剩余余额 = 余额总额 - (订单总金额+邮费金额)
+                                _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.totalPrice); // 抵扣后剩余余额 = 余额总额 - (订单总金额+邮费金额)
+                                console.log('余额全部抵扣勾选了采美豆运费',_self.balance.surplusMoney)
                             }else{
                                 _self.balance.deductMoney = total; // 抵扣使用金额 = 订单总金额 + 邮费金额
-                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                console.log('余额全部抵扣未勾选了采美豆运费',_self.balance.surplusMoney)
                             }
                         }else{ // 部分抵扣
-                            _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney; // 最终订单总价 = 订单总金额 - 余额总额
-                            _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
-                            _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
+                            if(_self.balance.isFreight){// 勾选了采美豆丢运费
+                                _self.payInfo.orderShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney); // 最终订单总价 = 订单总金额 - 余额总额
+                                _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
+                                _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
+                                console.log('部分抵扣勾选了采美豆运费',_self.payInfo.orderShouldPayFee)
+                            }else{
+                                _self.payInfo.orderShouldPayFee = _self.repiceNumSub(total,_self.balance.userMoney); // 最终订单总价 = 订单总金额 - 余额总额
+                                _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
+                                _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
+                                console.log('部分抵扣没有勾选了采美豆运费',_self.payInfo.orderShouldPayFee)
+                            }
                         }
                     }else{// 取消抵扣
                         _self.payInfo.balancePayFlag = 0;
@@ -424,6 +445,7 @@ var shoppingConfirm = new Vue({
                         }else{
                             _self.payInfo.orderShouldPayFee = total; // 最终订单总价 = 订单总金额 + 邮费金额
                         }
+                        console.log('取消余额抵扣',_self.payInfo.orderShouldPayFee)
                     }
                 });
             }
@@ -431,41 +453,92 @@ var shoppingConfirm = new Vue({
         changeDeductibleFreight: function(){//选择采美豆抵扣邮费
             var _self = this;
             var total = _self.totalPrice + _self.payInfo.freight;
-            if(_self.balance.isFreight){
-                _self.hanldUserBeans = _self.freightBeansMoney*100;
-                if(_self.payInfo.freePostFlag == 1){
-                    if( _self.userBeans >= _self.payInfo.freight*100 ){
+            if(_self.balance.isFreight){//判断是否勾选运费
+                if(_self.payInfo.freePostFlag == 1){//有邮费
+                    _self.hanldUserBeans = _self.freightBeansMoney*100;
+                    if( _self.userBeans > 0 ){// 判断采美豆大于0
                         if(_self.balance.flag) {// 勾选了余额抵扣
+                            console.log('订单总额11111',total)
                             if(_self.balance.userMoney>=total){ // 全部抵扣
                                 _self.payInfo.orderShouldPayFee = 0;
                                 _self.balance.deductMoney = _self.totalPrice;  // 抵扣使用金额 = 订单总金额
-                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10;  // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney);  // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                console.log('有勾选余额抵扣全抵',_self.payInfo.orderShouldPayFee)
                             }else{ // 部分抵扣
-                                _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney;
+                                _self.payInfo.orderShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney);
                                 _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
-                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                                console.log('有勾选余额抵扣部分抵',_self.payInfo.orderShouldPayFee)
                             }
                         }else{
+                            console.log('订单总额2222222',total)
                             _self.payInfo.orderShouldPayFee = (_self.totalPrice*100 + _self.payInfo.freight*100 - _self.freightBeansMoney*100)/100;
+                            console.log('无余额抵扣',_self.payInfo.orderShouldPayFee)
                         }
                     }
+                }else if(_self.payInfo.freePostFlag == -1){// 到付
+                    _self.hanldUserBeans = _self.freightBeansMoney*100;
+                    if(_self.balance.flag) {// 勾选了余额抵扣
+                        if(_self.balance.userMoney>=total){ // 全部抵扣
+                            _self.payInfo.orderShouldPayFee = 0;
+                            _self.balance.deductMoney = _self.totalPrice;  // 抵扣使用金额 = 订单总金额
+                            _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney);  // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                            console.log('到付有勾选余额抵扣全抵',_self.payInfo.orderShouldPayFee)
+                        }else{ // 部分抵扣
+                            _self.payInfo.orderShouldPayFee = _self.repiceNumSub(_self.totalPrice,_self.balance.userMoney);
+                            _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
+                            _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                            console.log('到付有勾选余额抵扣部分抵',_self.payInfo.orderShouldPayFee)
+                        }
+                    }else{
+                        _self.payInfo.orderShouldPayFee = _self.totalPrice ;
+                        console.log('到付未勾选余额抵扣',_self.payInfo.orderShouldPayFee)
+                    }
                 }else{
                     _self.hanldUserBeans = 0;
                     _self.payInfo.orderShouldPayFee = _self.totalPrice ;
+                    console.log('其他',_self.payInfo.orderShouldPayFee)
                 }
             }else{
+                console.log('未勾选采美豆抵扣')
                 _self.hanldUserBeans = 0;
-                if(_self.balance.flag) {//
+                if(_self.balance.flag) {//如果勾选了余额抵扣
                     if(_self.balance.userMoney>=total) { // 全部抵扣
+                        console.log('勾选采美豆抵扣=========》',total)
                         _self.payInfo.orderShouldPayFee = 0 ;
                         _self.balance.deductMoney = total; // 抵扣使用金额 = (订单总金额+邮费金额)
-                        _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                        _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                        console.log('余额全抵抵未勾选采美豆抵扣',_self.payInfo.orderShouldPayFee)
+                    }else{
+                        console.log('未勾选采美豆抵扣=========》',total)
+                        _self.payInfo.orderShouldPayFee = _self.repiceNumSub(total,_self.balance.userMoney) ;
+                        _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = (订单总金额+邮费金额)
+                        _self.balance.surplusMoney = _self.repiceNumSub(_self.balance.userMoney,_self.balance.deductMoney); // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                        console.log('余额部分抵未勾选采美豆抵扣',_self.payInfo.orderShouldPayFee)
                     }
                 }else{
                     _self.payInfo.orderShouldPayFee = _self.totalPrice + _self.payInfo.freight;
                 }
             }
         },
+        repiceNumSub: function(arg1, arg2) {//减法精确,arg2:被减数,arg1:减数
+            var r1,r2,m,n;
+            try{
+                r1=arg1.toString().split(".")[1].length
+            }catch(e){
+                r1=0
+            }
+            try{
+                r2=arg2.toString().split(".")[1].length
+            }catch(e){
+                r2=0
+            }
+            m=Math.pow(10,Math.max(r1,r2));
+            // last modify by deeka
+            // 动态控制精度长度
+            n=(r1>=r2)?r1:r2;
+            return ((arg1*m-arg2*m)/m).toFixed(n);
+        },
         submitOrder: function(){
             var _self = this;
             if(this.submitLoading){return false;}

+ 64 - 9
src/main/resources/static/js/supplier-center/shop/release.js

@@ -54,7 +54,10 @@ var releaseContainer = new Vue({
             twoClassifyName:'',
             threeClassifyName:'',
             brandName:'',
-            commodityType:1
+            commodityType:1,
+            trainingMethod:0,// 线上培训方式
+            trainingType:0,// 售价包含培训费用
+            trainingFee:''
         },
         params:{
             param:[],//相关参数
@@ -131,19 +134,13 @@ var releaseContainer = new Vue({
         vShow_detailInfoEditor:true,
         vShow_orderInfoEditor:true,
         vShow_attribute:false,
+        vShow_trainingMethod:false,
+        vShow_trainingType:false,
     },
     computed: {
 
     },
     methods: {
-        getclass:function(val){
-            this.selectText.bigTypeID='请选择一级分类';
-            this.selectText.smallTypeID = '请选择二级分类';
-            this.releaseParams.bigTypeId ='';
-            this.classificationTwoList=[];
-            this.classificationThreeList =[];
-            this.GetFistClassFn(val);
-        },
         GetEditReleaseProductInfo: function(productId){
             var _this = this;
             SupplierApi.EditReleaseProductInfo({productId:productId},function(response){
@@ -154,6 +151,9 @@ var releaseContainer = new Vue({
                     _this.releaseParams.name = data.name;
                     _this.releaseParams.aliasName = data.aliasName;
                     _this.releaseParams.productType = data.productType;
+                    _this.releaseParams.trainingMethod = data.trainingMethod;
+                    _this.releaseParams.trainingType = data.trainingType;
+                    _this.releaseParams.trainingFee = data.trainingFee;
                     _this.releaseParams.machineType = data.machineType;
                     _this.releaseParams.qualificationImg = data.qualificationImg;
                     _this.releaseParams.unit = data.unit;
@@ -223,6 +223,14 @@ var releaseContainer = new Vue({
                 }
             })
         },
+        getclass:function(val){
+            this.selectText.bigTypeID='请选择一级分类';
+            this.selectText.smallTypeID = '请选择二级分类';
+            this.releaseParams.bigTypeId ='';
+            this.classificationTwoList=[];
+            this.classificationThreeList =[];
+            this.GetFistClassFn(val);
+        },
         EchoProductFn : function(type) {
             switch (type) {
                 case 0 && null:
@@ -249,6 +257,14 @@ var releaseContainer = new Vue({
                     break;
             }
         },
+        choiceTrain : function(val){
+            var _this = this;
+            _this.releaseParams.trainType = Number(val);
+        },
+        choiceTrainOutlay : function(val){
+            var _this = this;
+            _this.releaseParams.expensesType = Number(val);
+        },
         EchoGoodsImagesListFn: function(arr){//处理商品主图回显
             var newArray =[];
             arr.forEach( function(el){ newArray.push(el.image) });
@@ -683,6 +699,37 @@ var releaseContainer = new Vue({
                 },2000);
                 return;
             }
+            if(_this.releaseParams.commodityType == 2){
+                if(_this.releaseParams.trainingMethod == 0){
+                    _this.vShow_trainingMethod=true;
+                    _this.fromMessage = '请选择培训方式';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_trainingMethod = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.trainingType == 0){
+                    _this.vShow_trainingType=true;
+                    _this.fromMessage = '请选择培训费用';
+                    _this.scrollIntoView();
+                    setTimeout(function(){
+                        _this.vShow_trainingType = false;
+                    },2000);
+                    return;
+                }
+                if(_this.releaseParams.trainingType == 1){
+                    if(_this.releaseParams.trainingFee == ''){
+                        _this.vShow_trainingType=true;
+                        _this.fromMessage = '请填写包含食宿,交通等各项费用的培训总金额';
+                        _this.scrollIntoView();
+                        setTimeout(function(){
+                            _this.vShow_trainingType = false;
+                        },2000);
+                        return;
+                    }
+                }
+            }
             if(_this.releaseParams.bigTypeId == ''){
                 _this.vShow_TinyTypeID = true;
                 _this.fromMessage = '请选择商品分类';
@@ -1055,6 +1102,14 @@ var releaseContainer = new Vue({
         input_price1: function(e){
             this.vShow_Price1 = false;
         },
+        input_trainingFee: function(event){
+            var E_Number = event.target.value;
+            if(E_Number!=''){
+                this.releaseParams.trainingFee = parseInt(E_Number.replace(/[^0-9]/g,''));
+            }else{
+                this.releaseParams.trainingFee = '';
+            }
+        },
         input_minBuyNumber: function(event){
             this.vShow_MinBuyNumber = false;
             var E_Number = event.target.value;

+ 2 - 1
src/main/resources/static/js/user-center/account/beans.js

@@ -68,7 +68,8 @@ var orderPage = new Vue({
                     8:'系统发放',
                     9:'抵用退回',
                     10:'抵用运费',
-                    11:'退款回收'
+                    11:'退款回收',
+                    12:'登录奖励'
                 };
             Object.keys(stateTextObject).forEach(function(key){
                 if(key == state){

+ 1 - 1
src/main/resources/static/js/user-center/order/detail.js

@@ -153,7 +153,7 @@ var orderPage = new Vue({
                 OrderApi.GetAffirmOrder({orderID:_self.orderId},function(response){
                     if(response.code == 0){
                         _self.beansType = 7;
-                        _self.beanNumber = 10;
+                        _self.beanNumber = 100;
                         _self.isShowBeansAlet = true;
                         _self.handInitType(_self.beansType);
                         _self.GetQueryOrderDetailsInfo();

+ 1 - 1
src/main/resources/static/js/user-center/order/list.js

@@ -221,7 +221,7 @@ var orderPage = new Vue({
                 OrderApi.GetAffirmOrder({orderID:orderId},function(response){
                     if(response.code == 0){
                         _self.beansType = 7;
-                        _self.beanNumber = 10;
+                        _self.beanNumber = 100;
                         _self.isShowBeansAlet = true;
                         _self.handInitType(_self.beansType);
                         _self.GetQueryOrderListData();

+ 1 - 1
src/main/resources/static/js/user-center/setting/upgrade.js

@@ -202,7 +202,7 @@ var upgradePage = new Vue({
                 _self.loginLoading = true;
                 UserApi.ClubUpgrade(params,function (response) {
                     if(response.code === 0){
-                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得20采美豆的奖励','知道了',true,function () {
+                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得500采美豆的奖励','知道了',true,function () {
                             _self.clubLoginIndex();
                             _self.loginLoading = false;
                         });

+ 3 - 3
src/main/resources/templates/account/register-club.html

@@ -73,19 +73,19 @@
             <!--机构注册表单-->
             <form>
                 <div class="formLine">
-                    <p><em>*</em>邮箱(<span>邮箱可用作登录账号,请使用公司邮箱或法人邮箱</span>):</p>
+                    <p><em>*</em>邮箱<span>(邮箱可用作登录账号,请使用公司邮箱或法人邮箱)</span>:</p>
                     <input type="text" v-model.trim="clubUpgradeUser.contractEmail" placeholder="请输入邮箱地址" :rule="rule.email" maxlength="32" @blur="blurHandle($event)" needverify>
                     <i class="checked icon mIcon"></i>
                     <span class="errTips icon mIcon" tips="请输入正确的邮箱地址"></span>
                 </div>
                 <div class="formLine">
-                    <p><em>*</em>机构名称(<span>示例:深圳市美丽人生医疗美容有限公司</span>):</p>
+                    <p><em>*</em>机构名称<span>(示例:深圳市美丽人生医疗美容有限公司)</span>:</p>
                     <input type="text" v-model.trim="clubUpgradeUser.name" placeholder="请输入与营业执照的注册名称保持一致的机构名称" :rule="rule.name" maxlength="30" @blur="blurHandle($event)" needverify>
                     <i class="checked icon mIcon"></i>
                     <span class="errTips icon mIcon" tips="请输入机构名称"></span>
                 </div>
                 <div class="formLine">
-                    <p>机构简称(<span>示例:美丽人生</span>):</p>
+                    <p>机构简称<span>(示例:美丽人生)</span>:</p>
                     <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入姓名或常用名" maxlength="10" >
                 </div>
                 <div class="formLine">

+ 3 - 3
src/main/resources/templates/account/register-supplier.html

@@ -65,7 +65,7 @@
                     </div>
                     <h6 class="tit">基本信息</h6>
                     <div class="formLine">
-                        <p><em>*</em>公司名称(<span>示例:华熙生物科技股份有限公司</span>):</p>
+                        <p><em>*</em>公司名称<span>(示例:华熙生物科技股份有限公司)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="30" @blur="blurHandle($event)" needverify>
                         <i class="checked icon mIcon"></i>
                         <span class="errTips icon mIcon" tips="请输入正确的公司名称"></span>
@@ -77,13 +77,13 @@
                         <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
                     </div>
                     <div class="formLine">
-                        <p>邮箱(<span>邮箱可用作登录账号,请使用公司邮箱或法人邮箱</span>):</p>
+                        <p>邮箱<span>(邮箱可用作登录账号,请使用公司邮箱或法人邮箱)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.email" placeholder="请输入邮箱地址" maxlength="40">
                         <span class="errTips"></span>
                     </div>
                     <h6 class="tit">详细信息</h6>
                     <div class="formLine">
-                        <p>公司简称(<span>示例:华熙生物</span>):</p>
+                        <p>公司简称<span>(示例:华熙生物)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.shortName" placeholder="请输入公司简称" maxlength="10">
                         <span class="errTips"></span>
                     </div>

+ 3 - 3
src/main/resources/templates/account/supplier-information.html

@@ -21,7 +21,7 @@
                 <form>
                     <h6 class="tit">基本信息</h6>
                     <div class="formLine">
-                        <p><em>*</em>公司名称(<span>示例:华熙生物科技股份有限公司</span>):</p>
+                        <p><em>*</em>公司名称<span>(示例:华熙生物科技股份有限公司)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="30" @blur="blurHandle($event)" needverify>
                         <i class="checked icon mIcon"></i>
                         <span class="errTips icon mIcon" tips="请输入正确的公司名称"></span>
@@ -33,13 +33,13 @@
                         <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
                     </div>
                     <div class="formLine">
-                        <p>邮箱(<span>邮箱可用作登录账号,请使用公司邮箱或法人邮箱</span>):</p>
+                        <p>邮箱<span>(邮箱可用作登录账号,请使用公司邮箱或法人邮箱)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.contractEmail" placeholder="请输入邮箱地址" maxlength="40">
                         <span class="errTips"></span>
                     </div>
                     <h6 class="tit">详细信息</h6>
                     <div class="formLine">
-                        <p>公司简称(<span>示例:华熙生物</span>):</p>
+                        <p>公司简称<span>(示例:华熙生物)</span>:</p>
                         <input type="text" v-model.trim="supplierUser.shortName" placeholder="请输入公司简称" maxlength="10">
                         <span class="errTips"></span>
                     </div>

+ 2 - 2
src/main/resources/templates/account/upgrade.html

@@ -27,13 +27,13 @@
                     <span class="errTips icon mIcon" tips="请输入正确的邮箱地址"></span>
                 </div>
                 <div class="formLine">
-                    <p><em>*</em>机构名称(<span>示例:深圳市美丽人生医疗美容有限公司</span>):</p>
+                    <p><em>*</em>机构名称<span>(示例:深圳市美丽人生医疗美容有限公司)</span>:</p>
                     <input type="text" v-model.trim="clubUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="50" @blur="blurHandle($event)" needverify>
                     <i class="checked icon mIcon"></i>
                     <span class="errTips icon mIcon" tips="请输入正确的联系人姓名"></span>
                 </div>
                 <div class="formLine">
-                    <p>机构简称(<span>示例:美丽人生</span>):</p>
+                    <p>机构简称<span>(示例:美丽人生)</span>:</p>
                     <input type="text" v-model.trim="clubUser.name" placeholder="请输入机构简称" :rule="rule.name" maxlength="50" needverify>
                 </div>
                 <div class="formLine">

+ 33 - 33
src/main/resources/templates/activity/activityTopic.html

@@ -447,7 +447,7 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
                           <div class="price">
@@ -564,10 +564,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -575,7 +575,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -692,10 +692,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -703,7 +703,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -793,10 +793,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -804,7 +804,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -911,10 +911,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -922,7 +922,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1023,10 +1023,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -1034,7 +1034,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1135,10 +1135,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -1146,7 +1146,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1242,10 +1242,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -1253,7 +1253,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1350,10 +1350,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -1361,7 +1361,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1451,10 +1451,10 @@
                       <template v-else>
                         <!-- 样式6 -->
                         <template v-if="pros.product.productCategory == 1">
-                          <div class="price-tag">
+                          <div class="price-tag" v-if="params.userId>0">
                             <span class="tag" v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                           </div>
-                          <div class="price">
+                          <div class="price  ">
                             <span>¥</span>
                             <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                           </div>
@@ -1462,7 +1462,7 @@
                         <!-- 样式7 -->
                         <template v-else>
                           <div class="price-tag"></div>
-                          <div class="price"><span>¥登录可见</span></div>
+                          <div class="price  "><span>¥登录可见</span></div>
                         </template>
                       </template>
                     </div>
@@ -1565,11 +1565,11 @@
                             <template v-else>
                               <!-- 样式6 -->
                               <template v-if="pros.product.productCategory == 1">
-                                <div class="price-tag">
+                                <div class="price-tag" v-if="params.userId>0">
                                   <span class="tag"
                                     v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                                 </div>
-                                <div class="price">
+                                <div class="price  ">
                                   <span>¥</span>
                                   <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                                 </div>
@@ -1577,7 +1577,7 @@
                               <!-- 样式7 -->
                               <template v-else>
                                 <div class="price-tag"></div>
-                                <div class="price"><span>¥登录可见</span></div>
+                                <div class="price  "><span>¥登录可见</span></div>
                               </template>
                             </template>
                           </div>
@@ -1671,11 +1671,11 @@
                             <template v-else>
                               <!-- 样式6 -->
                               <template v-if="pros.product.productCategory == 1">
-                                <div class="price-tag">
+                                <div class="price-tag" v-if="params.userId>0">
                                   <span class="tag"
                                     v-if="pros.product.actStatus==1">{{pros.product.promotions.name}}</span>
                                 </div>
-                                <div class="price">
+                                <div class="price  ">
                                   <span>¥</span>
                                   <span class="p-icon" :class="'i'+pros.product.priceGrade"></span>
                                 </div>

+ 3 - 2
src/main/resources/templates/article/components/article-header.html

@@ -10,7 +10,7 @@
         </div>
         <div class="type">
             <div>
-                <a class="home" href="/" target="_blank">采美商城</a>
+                <a class="home" href="/" target="_blank">商城</a>
                 <a th:each="type: *{articleType}" th:text="${type.name}" th:href="'/info/center-'+${type.id}+'-1.html'" th:class="${typeId==type.id}?'typeBtn current':'typeBtn'" th:typeId="${type.id}"></a>
             </div>
         </div>
@@ -23,6 +23,7 @@
     <input type="hidden" th:value="${labelId}" id="labelId">
     <input type="hidden" th:value="${typeId}" id="typeId">
     <input type="hidden" th:value="${pageNum}" id="pageNum">
-    <input type="hidden" th:value="${spiServer}" id="spiServer"><input type="hidden" th:value="${coreServer}" id="coreServer">
+    <input type="hidden" th:value="${spiServer}" id="spiServer">
+    <input type="hidden" th:value="${coreServer}" id="coreServer">
     <input type="hidden" th:value="${agent}" id="userAgent">
 </header>

+ 4 - 3
src/main/resources/templates/components/header.html

@@ -3,6 +3,7 @@
     <div class="baseHeadTop">
         <div class="wrap clear">
             <div class="header_top_left">欢迎来到采美采购服务平台</div>
+            <div class="header_top_left"></div>
             <ul class="header_top_ul">
                 <li class="headCart">
                     <a href="javascript:void(0)" class="addBtn icon" @click="goCartsLinkFn">购物车<em v-text="'('+headCart.cartCount+')'"></em></a>
@@ -109,7 +110,7 @@
     <div class="baseTopNav">
         <div class="wrap clear">
             <div class="baseTopNav_nav">
-                <a class="classBtn nav on" href="javascript:void(0);">商品分类</a>
+                <a class="classBtn nav on" href="javascript:void(0);">分类展示</a>
                 <a class="home nav" href="/">首页</a>
                 <div class="navBox">
                     <ul class="clear">
@@ -166,7 +167,7 @@
                                         </th:block>
                                         <th:block th:unless="${small.containsKey('tinyTypeList')} and ${small.get('smallTypeList')!=null}">
                                             <a th:href="'/product/classify-'+ ${big.getString('typeSort')} +'-'+ *{bigTypeId} +'-'+ *{smallTypeId} + '.html'" target="_blank">
-                                                <img v-if="!isPC" th:src="*{crmIcon}" alt="全部商品"><p>全部商品</p>
+                                                <img v-if="!isPC" th:src="*{crmIcon}" alt=""><p>全部</p>
                                             </a>
                                         </th:block>
                                     </div>
@@ -181,7 +182,7 @@
                                     </div>
                                     <div class="rgt mfw" >
                                         <a th:href="'/product/classify-'+ ${big.getString('typeSort')} +'-'+ *{bigTypeId} +'.html'" target="_blank">
-                                            <img v-if="!isPC" th:src="*{crmIcon}" alt="全部商品"><p>全部商品</p>
+                                            <img v-if="!isPC" th:src="*{crmIcon}" alt=""><p>全部</p>
                                         </a>
                                     </div>
                                 </div>

+ 20 - 10
src/main/resources/templates/flea-market/detail.html

@@ -53,26 +53,36 @@
                     <img src="/img/flea-market/yishou.png" class="yishou_img" v-if="soldImage" :class="soldImage?'show':''">
                 </div>
                 <div class="preview-info-main clearfix">
-                    <div class="info price" style="width: 100%" >
+                    <div class="info price" style="width: 100%" v-if="detail.sold == 0">
                         <span class="label">交&nbsp;&nbsp;易&nbsp;&nbsp;价:</span>
                         <p>
-                            <span v-if="detail.detailTalkFlag==2&&userID==0" class="fave-text">价格详聊</span></span>
-                            <span v-else-if="userID==0"><a class="member-detail toLogin loginWithParam" onclick="_czc.push(['_trackEvent','二手商品详情','登录查看价格','点击','','Um_Event_SecondDetailsLoginButton'])">登录查看价格></a></span>
-                            <span v-else-if="userID!=0&&detail.detailTalkFlag==2" class="fave-text">价格详聊</span></span>
+                            <span v-if="detail.detailTalkFlag==2&&userID == 0" class="fave-text">
+                                <span v-if="detail.sold == 1"></span>
+                                <span v-else>价格详聊</span>
+                            </span>
+                            <span v-else-if="userID == 0">
+                                <a class="member-detail toLogin loginWithParam " onclick="_czc.push(['_trackEvent','二手商品详情','登录查看价格','点击','','Um_Event_SecondDetailsLoginButton'])">
+                                    <span v-if="detail.sold == 1"></span>
+                                    <span v-else>登录查看价格></span>
+                                </a>
+                            </span>
+                            <span v-else-if="userID > 0 && detail.detailTalkFlag==2" class="fave-text">
+                                <span v-if="detail.sold == 1"></span>
+                                <span v-else>价格详聊</span>
+                            </span>
                             <span v-else class="fave-text">¥<span class="big">{{detail.price}}</span></span>
                         </p>
                         <div class="tag">
                            <span class="infotag news" v-if="detail.sold==0&&detail.newAdded==1">最新</span>
-                           <span class="infotag brand" v-if="detail.brandName!=null&&detail.brandName!=''&&detail.brandID !=161">{{detail.brandName}}</span>
-                           <span class="infotag sold" v-if="detail.sold==1&&detail.newAdded==1||detail.sold==1&&detail.newAdded==0">已售</span>
+                           <span class="infotag sold" v-if="detail.sold==1">已售</span>
                            <span class="infotag other" v-if="detail.brandID==161&&detail.brandName!=''&&detail.brandName!=null">{{detail.brandName}}</span>
                          </div>
                     </div>
-                     <div class="info " v-if="HandType">
+                     <div class="info " v-if="HandType && userID > 0">
                         <span class="label">市&nbsp;&nbsp;场&nbsp;&nbsp;价:</span>
                         <p>{{detail.normalPriceStr}}</p>
                     </div>
-                    <div class="info " v-if="HandType">
+                    <div class="info " v-if="HandType && userID > 0">
                        <span class="label" style="width: 90px">采购价/原价:</span>
                         <p>{{detail.originalPriceStr}}</p>
                     </div>
@@ -114,7 +124,7 @@
                         <p v-else>非医美</p>
                     </div>
                 </div>
-                <div class="ercode" v-if="ShowImage" ><img :class="ShowImage?'show':''" src="/img/flea-market/er.png"/></div>
+                <div class="ercode" v-if="ShowImage && detail.sold == 0" ><img :class="ShowImage?'show':''" src="/img/flea-market/er.png"/></div>
             </div>
         </div>
             <!--  相关推荐 -->
@@ -147,7 +157,7 @@
         </div>
         <div class="mainContent">
             <div class="mainContentLeft">
-                <div class="Disclaimer">
+                <div class="Disclaimer ">
                     <span >免责声明</span>
                     <p>
                         鉴于本网站提供的二手版块信息包括但不限于公司名称,商品的简介、性能、描述与说明,相关图片、视频等均由卖家自行提供,由卖家对其提供的信息承担相应法律责任。买家应自行甄别商品信息并查验商品性状。本网站对二手版块中买卖双方的交易不提供任何形式的担保与保证,特此声明!

+ 17 - 6
src/main/resources/templates/flea-market/list.html

@@ -37,7 +37,6 @@
                             <a href="/flea-market/form.html" onclick="_czc.push(['_trackEvent','二手市场列表','我要发布','点击','','Um_Event_SecondReleaseSubmit'])">我要发布</a>
                         <li/>
                     </div>
-
                 </ul>
                 <ul class="secondTitle" v-else>
                     <li class="ClassA mIcon off" @click="handle('1')" :class="currentId == '1' ? 'active':''">
@@ -62,17 +61,29 @@
                         <div class="tag">
                             <span class="infotag news" v-if="item.sold==0&&item.newAdded==1">最新</span>
                             <span class="infotag brand" v-if="item.brandName!=null&&item.brandName!=''&&item.brandID!=161">{{item.brandName}}</span>
-                            <span class="infotag sold" v-if="item.sold==1&&item.newAdded==1||item.sold==1&&item.newAdded==0">已售</span>
+                            <span class="infotag sold " v-if="item.sold==1">已售</span>
                             <span class="infotag other" v-if="item.brandID==161&&item.brandName!=''&&item.brandName!=null">{{item.brandName}}</span>
                         </div>
                         <a class="productname" :href="'/flea-market-'+item.productId+'.html'">
                             {{item.name}}
                         </a>
                         <div class="targetprice">
-                            <span v-if="item.detailTalkFlag ==2 && userID==null">价格详聊</span>
-                            <span v-else-if="userID==null" class="priceparam" @click="toLogin" onclick="_czc.push(['_trackEvent','二手市场列表','登录查看价格','点击','','Um_Event_SecondListLoginSubmit'])">登录查看价格></span>
-                            <span v-else-if="userID!=null && item.detailTalkFlag==2">价格详聊</span>
-                            <span v-else>¥{{item.price}}</span>
+                            <span v-if="item.detailTalkFlag ==2 && userId == 0">
+                                <span v-if="item.sold == 1">&nbsp;&nbsp;&nbsp;</span>
+                                <span v-else>¥价格详聊</span>
+                            </span>
+                            <span v-else-if="userId == 0" class="priceparam " @click="toLogin" onclick="_czc.push(['_trackEvent','二手市场列表','登录查看价格','点击','','Um_Event_SecondListLoginSubmit'])">
+                                <span v-if="item.sold == 1">&nbsp;&nbsp;&nbsp;</span>
+                                <span v-else>登录查看价格></span>
+                            </span>
+                            <span v-else-if="userId>0 && item.detailTalkFlag==2">
+                                <span v-if="item.sold == 1">&nbsp;&nbsp;&nbsp;</span>
+                                <span v-else>¥价格详聊</span>
+                            </span>
+                            <span v-else>
+                                <span v-if="item.sold == 1">&nbsp;&nbsp;&nbsp;</span>
+                                <span v-else>¥{{ item.price }}</span>
+                            </span>
                         </div>
                         <div class="shijian">
                             <div>

+ 216 - 89
src/main/resources/templates/index.html

@@ -101,109 +101,236 @@
                 </div>
             </div>
             <div class="section_left ">
-                <div class="section_page" th:each="floor,stat : ${floorJson.get('homePageFloor')}">
-                    <th:block th:if="${floor.get('floorContent')}!=null">
-                        <div class="section_page_title">
-                            <h1 th:text="${floor.get('title')}" th:attr="data-id=${stat.index+1}"></h1>
-                            <p th:text="${floor.get('detail')}"></p>
-                        </div>
-                        <th:block th:object="${floor.get('floorContent')}">
-                            <div th:class="*{templateType}==8? 'hotList swiper-container-floor' : ''" th:id="*{templateType}==8? 'recommendBox' : ''">
-                                <div th:class="*{templateType}==8? *{'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+templateType} : *{'section_page_main clear mfw section_'+templateType}">
+                <template v-if="userId > 0">
+                    <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' : ''"
+                                 :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 :
+                                    'section_page_main clear mfw section_'+floor.floorContent.templateType"
+                                >
                                     <!-- 广告图 -->
-                                    <th:block th:if="*{templateType}==1 or *{templateType}==2 or *{templateType}==3 or *{templateType}==4 or *{templateType}==5">
-                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
-                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
-                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                    <template v-if="floor.floorContent.templateType == 1 ||
+                                                    floor.floorContent.templateType == 2 ||
+                                                    floor.floorContent.templateType == 3 ||
+                                                    floor.floorContent.templateType == 4 ||
+                                                    floor.floorContent.templateType == 5"
+                                    >
+                                        <a :href="floor.floorContent.adsLink1 ? floor.floorContent.adsLink1 : 'javascript:;'"
+                                           :target="floor.floorContent.adsLink1 ? '_blank' : '_self'"
+                                           class="page_main_item ad_01"
+                                        >
+                                            <img v-if="isPC" :src="floor.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
+                                            <img v-else :src="floor.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
                                         </a>
-                                    </th:block>
-                                    <th:block th:if="*{templateType}==2 or *{templateType}==3 or *{templateType}==4">
-                                        <a th:href="*{#strings.isEmpty(adsLink2)}? 'javascript:;' : *{adsLink2}" th:attr="target=(*{#strings.isEmpty(adsLink2)} ? '_self' : '_blank')" class="page_main_item ad_02">
-                                            <img v-if="isPC" th:src="*{pcAdsImage2}" alt="" class="page_main_item_adv">
-                                            <img v-else th:src="*{appletsAdsImage2}" alt="" class="page_main_item_adv">
+                                    </template>
+                                    <template v-if="floor.floorContent.templateType == 2 ||
+                                                    floor.floorContent.templateType == 3 ||
+                                                    floor.floorContent.templateType == 4"
+                                    >
+                                        <a :href="floor.floorContent.adsLink2 ? floor.floorContent.adsLink2 : 'javascript:;'"
+                                           :target="floor.floorContent.adsLink2 ? '_blank' : '_self'"
+                                           class="page_main_item ad_02"
+                                        >
+                                            <img v-if="isPC" :src="floor.floorContent.pcAdsImage2" alt="" class="page_main_item_adv">
+                                            <img v-else :src="floor.floorContent.appletsAdsImage2" alt="" class="page_main_item_adv">
                                         </a>
-                                    </th:block>
-                                    <th:block th:if="*{templateType}==4">
-                                        <a th:href="*{#strings.isEmpty(adsLink3)}? 'javascript:;' : *{adsLink3}" th:attr="target=(*{#strings.isEmpty(adsLink3)} ? '_self' : '_blank')" class="page_main_item ad_03">
-                                            <img v-if="isPC" th:src="*{pcAdsImage3}" alt="" class="page_main_item_adv">
-                                            <img v-else th:src="*{appletsAdsImage3}" alt="" class="page_main_item_adv">
+                                    </template>
+                                    <template v-if="floor.floorContent.templateType == 4">
+                                        <a :href="floor.floorContent.adsLink3 ? floor.floorContent.adsLink3 : 'javascript:;'"
+                                           :target="floor.floorContent.adsLink3 ? '_blank' : '_self'"
+                                           class="page_main_item ad_03"
+                                        >
+                                            <img v-if="isPC" :src="floor.floorContent.pcAdsImage3" alt="" class="page_main_item_adv">
+                                            <img v-else :src="floor.floorContent.appletsAdsImage3" alt="" class="page_main_item_adv">
                                         </a>
-                                    </th:block>
+                                    </template>
                                     <!-- 商品/图片 列表 -->
-                                    <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
-                                        <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
-                                            <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
-                                            <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
-                                            <div class="page_main_text">
-                                                <th:block th:if="${pros.containsKey('product')}">
-                                                    <span class="tag" th:if="${pros.get('product').containsKey('beautyActFlag')} and ${pros.get('product').get('beautyActFlag')}==1">美博会</span>
-                                                </th:block>
-                                                <span th:text="${pros.get('name')}"></span>
-                                            </div>
-                                            <div class="page_main_price" th:if="*{listType}==1">
-                                                <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
-                                                    <!-- 商品价格 -->
-                                                    <div th:attr="class=*{'main_price_text product_'+productId}, data-id=*{productId}">
-                                                        <!-- 正常商品 -->
-                                                        <th:block th:if="*{productCategory}==1">
-                                                            <div class="price_text_tag" th:if="${pros.get('product').containsKey('actStatus')}">
-                                                                <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
-                                                                    <template th:text="*{promotions.name}"></template>
-                                                                    <th:block th:if="*{promotions.type}==1 and *{promotions.mode}==1">
-                                                                        <!--单品优惠:优惠价-->
-                                                                        <span class="price_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>
-                                                            <div class="main_price_login" th:attr="data-id=*{priceFlag}">
-                                                                <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                                <em th:if="*{priceFlag}==1" class="price_grade"><span>¥</span>价格未公开</em>
-                                                                <th:block th:unless="*{priceFlag}==1">
-                                                                    <em class="price_grade_club"><span>¥</span>会员可见</em>
-                                                                    <!--机构价-->
-                                                                    <div class="main_price_show">¥<span class="price_num"></span></div>
-                                                                    <!--单品优惠时的划线价-->
-                                                                    <div class="main_price_show none">¥<span class="price_o_num"></span></div>
-                                                                    <!--供应商除自己的商品外,也显示价格等级-->
-                                                                    <em class="price_grade_shop"><span class="bold">¥</span><i th:attr="class=*{'icon mIcon price_grade_'+priceGrade}"></i></em>
-                                                                </th:block>
-                                                            </div>
-                                                        </th:block>
-                                                        <!-- 二手商品 -->
-                                                        <th:block th:if="*{productCategory}!=1">
-                                                            <div class="main_price_none sec">
-                                                                <em class="price_grade"><span>¥</span>登录可见</em>
-                                                            </div>
-                                                            <div class="main_price_login" data-id="3">
-                                                                <div class="price_text_tag"></div>
-                                                                <div th:if="*{detailTalkFlag}==2" class="main_price_show">¥价格祥聊</div>
-                                                                <div th:if="*{detailTalkFlag}!=2" class="main_price_show">¥<span class="price_num"></span></div>
-                                                            </div>
-                                                        </th:block>
+                                    <a :href="pros.link" class="page_main_item ad_04 swiper-slide" target="_blank" v-for="pros in floor.floorImageList">
+                                        <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
+                                        <div class="page_main_tag" v-if="pros.listType == 2"><p v-text="pros.label"></p></div>
+                                        <div class="page_main_text">
+                                            <span class="tag" v-if="pros.beautyActFlag == 1">美博会</span>
+                                            <span v-text="pros.name"></span>
+                                        </div>
+                                        <div class="page_main_price" v-if="pros.listType == 1">
+                                            <!-- 商品价格 -->
+                                            <div class="main_price_text">
+                                                <!-- 正常商品 -->
+                                                <template v-if="pros.product.productCategory == 1">
+                                                    <div class="price_text_tag">
+                                                        <p class="listTag" v-if="pros.product.actStatus ==1 && pros.product.promotions">
+                                                            <span v-text="pros.product.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>
+                                                    </div>
+                                                    <div class="main_price_login">
+                                                        <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                                                        <template v-if="pros.product.priceFlag == 1">
+                                                            <em class="price_grade"><span>¥</span>价格未公开</em>
+                                                        </template>
+                                                        <template v-else>
+                                                            <template v-if="PromotionsFormat(pros.product.promotions)">
+                                                                <!--单品优惠时的划线价-->
+                                                                <div class="main_price_show">
+                                                                    ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
+                                                                </div>
+                                                            </template>
+                                                            <template v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
+                                                                <!--机构价-->
+                                                                <div class="main_price_show">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span></div>
+                                                            </template>
+                                                            <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
+                                                                <em class="price_grade_club">
+                                                                    <span>¥</span>会员可见
+                                                                </em>
+                                                            </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>
+
+                                                        </template>
                                                     </div>
-                                                </th:block>
+                                                </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>
-                                        </a>
-                                    </th:block>
+                                        </div>
+                                    </a>
                                     <!-- 广告图 -->
-                                    <th:block th:if="*{templateType}==6">
-                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
-                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
-                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                    <div v-if="floor.floorContent.templateType == 6">
+                                        <a :href="floor.floorContent.adsLink1 ? floor.floorContent.adsLink1 : 'javascript:;'"
+                                           :target="floor.floorContent.adsLink1 ? '_blank' : '_self' "
+                                           class="page_main_item ad_01"
+                                        >
+                                            <img v-if="isPC" :src="floor.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
+                                            <img v-else :src="floor.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
                                         </a>
-                                    </th:block>
+                                    </div>
+                                </div>
+                                <div v-if="floor.floorContent.templateType == 8"
+                                     class="swiper-pagination swiper-pagination-floor mfc"
+                                     :data-id="floor.floorImageList.length"
+                                >
                                 </div>
-                                <div th:if="*{templateType}==8" class="swiper-pagination swiper-pagination-floor mfc" th:attr="data-id=${floor.get('floorImageList').size}"></div>
                             </div>
-                            <div class="section_page_more" th:attr="data-id=*{templateType}, data-size=${floor.get('floorImageList').size}">
+                            <div class="section_page_more"
+                                 :data-id="floor.floorContent.templateType"
+                                 :data-size="floor.floorImageList.length"
+                            >
                                 <div class="more" @click="showMoreItem($event)"> <i class="icon mIcon"></i>查看更多</div>
                             </div>
+                        </template>
+                    </div>
+                </template>
+                <template v-else>
+                    <div class="section_page" th:each="floor,stat : ${floorJson.get('homePageFloor')}">
+                        <th:block th:if="${floor.get('floorContent')}!=null">
+                            <div class="section_page_title">
+                                <h1 th:text="${floor.get('title')}" th:attr="data-id=${stat.index+1}"></h1>
+                                <p th:text="${floor.get('detail')}"></p>
+                            </div>
+                            <th:block th:object="${floor.get('floorContent')}">
+                                <div th:class="*{templateType}==8? 'hotList swiper-container-floor' : ''" th:id="*{templateType}==8? 'recommendBox' : ''">
+                                    <div th:class="*{templateType}==8? *{'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+templateType} : *{'section_page_main clear mfw section_'+templateType}">
+                                        <!-- 广告图 -->
+                                        <th:block th:if="*{templateType}==1 or *{templateType}==2 or *{templateType}==3 or *{templateType}==4 or *{templateType}==5">
+                                            <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                                <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                                <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                            </a>
+                                        </th:block>
+                                        <th:block th:if="*{templateType}==2 or *{templateType}==3 or *{templateType}==4">
+                                            <a th:href="*{#strings.isEmpty(adsLink2)}? 'javascript:;' : *{adsLink2}" th:attr="target=(*{#strings.isEmpty(adsLink2)} ? '_self' : '_blank')" class="page_main_item ad_02">
+                                                <img v-if="isPC" th:src="*{pcAdsImage2}" alt="" class="page_main_item_adv">
+                                                <img v-else th:src="*{appletsAdsImage2}" alt="" class="page_main_item_adv">
+                                            </a>
+                                        </th:block>
+                                        <th:block th:if="*{templateType}==4">
+                                            <a th:href="*{#strings.isEmpty(adsLink3)}? 'javascript:;' : *{adsLink3}" th:attr="target=(*{#strings.isEmpty(adsLink3)} ? '_self' : '_blank')" class="page_main_item ad_03">
+                                                <img v-if="isPC" th:src="*{pcAdsImage3}" alt="" class="page_main_item_adv">
+                                                <img v-else th:src="*{appletsAdsImage3}" alt="" class="page_main_item_adv">
+                                            </a>
+                                        </th:block>
+                                        <!-- 商品/图片 列表 -->
+                                        <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
+                                            <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
+                                                <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                                <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
+                                                <div class="page_main_text">
+                                                    <th:block th:if="${pros.containsKey('product')}">
+                                                        <span class="tag" th:if="${pros.get('product').containsKey('beautyActFlag')} and ${pros.get('product').get('beautyActFlag')}==1">美博会</span>
+                                                    </th:block>
+                                                    <span th:text="${pros.get('name')}"></span>
+                                                </div>
+                                                <div class="page_main_price" th:if="*{listType}==1">
+                                                    <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                                        <!-- 商品价格 -->
+                                                        <div th:attr="class=*{'main_price_text product_'+productId}, data-id=*{productId}">
+                                                            <!-- 正常商品 -->
+                                                            <th:block th:if="*{productCategory}==1">
+                                                                <div class="price_text_tag" th:if="${pros.get('product').containsKey('actStatus')}">
+                                                                    <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
+                                                                        <template th:text="*{promotions.name}"></template>
+                                                                        <th:block th:if="*{promotions.type}==1 and *{promotions.mode}==1">
+                                                                            <!--单品优惠:优惠价-->
+                                                                            <span class="price_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>
+
+                                        <!-- 广告图 -->
+                                        <th:block th:if="*{templateType}==6">
+                                            <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                                <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                                <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                            </a>
+                                        </th:block>
+                                    </div>
+                                    <div th:if="*{templateType}==8" class="swiper-pagination swiper-pagination-floor mfc" th:attr="data-id=${floor.get('floorImageList').size}"></div>
+                                </div>
+                                <div class="section_page_more" th:attr="data-id=*{templateType}, data-size=${floor.get('floorImageList').size}">
+                                    <div class="more" @click="showMoreItem($event)"> <i class="icon mIcon"></i>查看更多</div>
+                                </div>
+                            </th:block>
                         </th:block>
-                    </th:block>
-                </div>
+                    </div>
+                </template>
                 <div class="section_page">
                     <div class="section_page_title">
                         <h1 data-id="99">优质供应商</h1>

+ 8 - 4
src/main/resources/templates/product/detail.html

@@ -54,7 +54,6 @@
                         <i class="icon"></i>微信客服
                         <div class="WechatBg"><img src="/img/base/Wecha.png"><p>扫码添加采美微信客服咨询更快捷</p> </div>
                     </div>
-
                     <div class="row price"><span class="l">采美价</span><i>:</i>
                         <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
                             <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
@@ -75,7 +74,7 @@
                              <em><del v-text="'¥'+priceObj.normalPrice.toFixed(2)"></del></em>
                         </div>
                     </template>
-                    <div class="row actStatus" v-if="priceObj.actStatus==1||priceObj.ladderPriceFlag==1" ><span class="l">促销</span><i>:</i>
+                    <div class="row actStatus" v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0 && priceObj.actStatus==1||priceObj.ladderPriceFlag==1" ><span class="l">促销</span><i>:</i>
                         <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0 && ((priceObj.priceFlag==0 && priceObj.userIdentity!=3) || (priceObj.priceFlag==2 && priceObj.userIdentity==2) || (priceObj.userIdentity==3 && priceObj.shopId==GLOBAL_SHOP_ID))">
                             <!-- 阶梯价 -->
                             <div v-if="priceObj.ladderPriceFlag==1" class="priceTag">
@@ -186,7 +185,7 @@
                 <ul class="swiper-wrapper" v-cloak>
                     <li class="swiper-slide mfc" v-for="p in recommends">
                         <div class="item">
-                            <a class="image" :href="'/product-'+p.id+'.html'" target="_blank">
+                            <a class="image" :href="'/product-'+p.productId+'.html'" target="_blank">
                                 <img :src="p.image" :alt="p.name" onerror="javascript:this.src='/img/base/placeholder.png';">
                                 <span v-html="p.name"></span>
                             </a>
@@ -218,7 +217,8 @@
                 <span :class="tabsIndex == 0 ? 'on' : ''" @click="detailsClicktab(0)">商品详情</span>
                 <span :class="tabsIndex == 1 ? 'on' : ''" v-if="parameters.length>0 && !isNoneDisabled" @click="detailsClicktab(1)">相关参数</span>
                 <span :class="tabsIndex == 2 ? 'on' : ''" v-if="isServiceInfo && !isNoneDisabled" @click="detailsClicktab(2)">服务项目</span>
-<!--            <span>评价</span>-->
+                <span :class="tabsIndex == 3 ? 'on' : ''" v-if="isTrainingMethod" @click="detailsClicktab(3)">培训方案</span>
+                <!--<span>评价</span>-->
             </div>
             <div class="tabCon">
                 <div class="item" v-if="tabsIndex == 0">
@@ -243,6 +243,10 @@
                     <div><p class="tl">服务详情:</p></div>
                     <div th:utext="${product.serviceInfo}"></div>
                 </div>
+                <div class="item" v-if="tabsIndex == 3">
+                    <div><p class="tl">培训方式: <span class="sm">{{ trainingMethodText }}</span></p></div>
+                    <div><p class="tl">培训费用: <span class="sm">{{ trainingType }}</span></p></div>
+                </div>
 <!--                <div class="item">-->
 <!--                <div style="text-align: left;margin: 10px 0">-->
 <!--                        <span>商品评分:</span>-->

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

@@ -119,10 +119,10 @@
                                     </template>
                                 </template>
                                 <template v-else>
-                                     <div class="price_text_tag">
+                                     <div class="price_text_tag ">
                                             <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
                                       </div>
-                                      <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                                      <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                 </template>
                             </div>
                         </a>

+ 215 - 89
src/main/resources/templates/product/instrument.html

@@ -53,109 +53,235 @@
                     </th:block>
                 </ul>
             </div>
-            <div class="section_page" th:each="floor,stat : ${typeFloorJson.get('floorList')}">
-                <th:block th:if="${floor.get('floorContent')}!=null">
-                    <div class="section_page_title">
-                        <h1 th:text="${floor.get('title')}" th:attr="data-id=${stat.index+1}"></h1>
-                        <p th:text="${floor.get('detail')}"></p>
-                    </div>
-                    <th:block th:object="${floor.get('floorContent')}">
-                        <div th:class="*{templateType}==8? 'hotList swiper-container-floor' : ''" th:id="*{templateType}==8? 'recommendBox' : ''">
-                            <div th:class="*{templateType}==8? *{'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+templateType} : *{'section_page_main clear mfw section_'+templateType}">
+            <template v-if="params.userId > 0">
+                <div class="section_page section_page_user" v-for="(floor,index) in floorList">
+                    <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' : ''"
+                             :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 :
+                                'section_page_main clear mfw section_'+floor.floorContent.templateType"
+                                 :data-id="floor.floorImageList.length"
+                            >
                                 <!-- 广告图 -->
-                                <th:block th:if="*{templateType}==1 or *{templateType}==2 or *{templateType}==3 or *{templateType}==4 or *{templateType}==5">
-                                    <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
-                                        <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
-                                        <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                <template v-if="floor.floorContent.templateType == 1 ||
+                                                    floor.floorContent.templateType == 2 ||
+                                                    floor.floorContent.templateType == 3 ||
+                                                    floor.floorContent.templateType == 4 ||
+                                                    floor.floorContent.templateType == 5"
+                                >
+                                    <a :href="floor.floorContent.adsLink1 ? floor.floorContent.adsLink1 : 'javascript:;'"
+                                       :target="floor.floorContent.adsLink1 ? '_blank' : '_self'"
+                                       class="page_main_item ad_01"
+                                    >
+                                        <img v-if="isPC" :src="floor.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
+                                        <img v-else :src="floor.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
                                     </a>
-                                </th:block>
-                                <th:block th:if="*{templateType}==2 or *{templateType}==3 or *{templateType}==4">
-                                    <a th:href="*{#strings.isEmpty(adsLink2)}? 'javascript:;' : *{adsLink2}" th:attr="target=(*{#strings.isEmpty(adsLink2)} ? '_self' : '_blank')" class="page_main_item ad_02">
-                                        <img v-if="isPC" th:src="*{pcAdsImage2}" alt="" class="page_main_item_adv">
-                                        <img v-else th:src="*{appletsAdsImage2}" alt="" class="page_main_item_adv">
+                                </template>
+                                <template v-if="floor.floorContent.templateType == 2 ||
+                                                    floor.floorContent.templateType == 3 ||
+                                                    floor.floorContent.templateType == 4"
+                                >
+                                    <a :href="floor.floorContent.adsLink2 ? floor.floorContent.adsLink2 : 'javascript:;'"
+                                       :target="floor.floorContent.adsLink2 ? '_blank' : '_self'"
+                                       class="page_main_item ad_02"
+                                    >
+                                        <img v-if="isPC" :src="floor.floorContent.pcAdsImage2" alt="" class="page_main_item_adv">
+                                        <img v-else :src="floor.floorContent.appletsAdsImage2" alt="" class="page_main_item_adv">
                                     </a>
-                                </th:block>
-                                <th:block th:if="*{templateType}==4">
-                                    <a th:href="*{#strings.isEmpty(adsLink3)}? 'javascript:;' : *{adsLink3}" th:attr="target=(*{#strings.isEmpty(adsLink3)} ? '_self' : '_blank')" class="page_main_item ad_03">
-                                        <img v-if="isPC" th:src="*{pcAdsImage3}" alt="" class="page_main_item_adv">
-                                        <img v-else th:src="*{appletsAdsImage3}" alt="" class="page_main_item_adv">
+                                </template>
+                                <template v-if="floor.floorContent.templateType == 4">
+                                    <a :href="floor.floorContent.adsLink3 ? floor.floorContent.adsLink3 : 'javascript:;'"
+                                       :target="floor.floorContent.adsLink3 ? '_blank' : '_self'"
+                                       class="page_main_item ad_03"
+                                    >
+                                        <img v-if="isPC" :src="floor.floorContent.pcAdsImage3" alt="" class="page_main_item_adv">
+                                        <img v-else :src="floor.floorContent.appletsAdsImage3" alt="" class="page_main_item_adv">
                                     </a>
-                                </th:block>
+                                </template>
                                 <!-- 商品/图片 列表 -->
-                                <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
-                                    <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
-                                        <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
-                                        <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
-                                        <div class="page_main_text">
-                                            <th:block th:if="${pros.containsKey('product')}">
-                                                <span class="tag" th:if="${pros.get('product').containsKey('beautyActFlag')} and ${pros.get('product').get('beautyActFlag')}==1">美博会</span>
-                                            </th:block>
-                                            <span th:text="${pros.get('name')}"></span>
-                                        </div>
-                                        <div class="page_main_price" th:if="*{listType}==1">
-                                            <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
-                                                <!-- 商品价格 -->
-                                                <div th:attr="class=*{'main_price_text product_'+productId}, data-id=*{productId}">
-                                                    <!-- 正常商品 -->
-                                                    <th:block th:if="*{productCategory}==1">
-                                                        <div class="price_text_tag" th:if="${pros.get('product').containsKey('actStatus')}">
-                                                            <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
-                                                                <template th:text="*{promotions.name}"></template>
-                                                                <th:block th:if="*{promotions.type}==1 and *{promotions.mode}==1">
-                                                                    <!--单品优惠:优惠价-->
-                                                                    <span class="price_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>
-                                                        <div class="main_price_login" th:attr="data-id=*{priceFlag}">
-                                                            <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                            <em th:if="*{priceFlag}==1" class="price_grade"><span>¥</span>价格未公开</em>
-                                                            <th:block th:unless="*{priceFlag}==1">
-                                                                <em class="price_grade_club"><span>¥</span>会员可见</em>
-                                                                <!--机构价-->
-                                                                <div class="main_price_show">¥<span class="price_num"></span></div>
-                                                                <!--单品优惠时的划线价-->
-                                                                <div class="main_price_show none">¥<span class="price_o_num"></span></div>
-                                                                <!--供应商除自己的商品外,也显示价格等级-->
-                                                                <em class="price_grade_shop"><span class="bold">¥</span><i th:attr="class=*{'icon mIcon price_grade_'+priceGrade}"></i></em>
-                                                            </th:block>
-                                                        </div>
-                                                    </th:block>
-                                                    <!-- 二手商品 -->
-                                                    <th:block th:if="*{productCategory}!=1">
-                                                        <div class="main_price_none sec">
-                                                            <em class="price_grade"><span>¥</span>登录可见</em>
-                                                        </div>
-                                                        <div class="main_price_login" data-id="3">
-                                                            <div class="price_text_tag"></div>
-                                                            <div th:if="*{detailTalkFlag}==2" class="main_price_show">¥价格祥聊</div>
-                                                            <div th:if="*{detailTalkFlag}!=2" class="main_price_show">¥<span class="price_num"></span></div>
-                                                        </div>
-                                                    </th:block>
+                                <a :href="pros.link" class="page_main_item ad_04 swiper-slide" target="_blank" v-for="pros in floor.floorImageList">
+                                    <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
+                                    <div class="page_main_tag" v-if="pros.listType == 2"><p v-text="pros.label"></p></div>
+                                    <div class="page_main_text">
+                                        <span class="tag" v-if="pros.beautyActFlag == 1">美博会</span>
+                                        <span v-text="pros.name"></span>
+                                    </div>
+                                    <div class="page_main_price" v-if="pros.listType == 1">
+                                        <!-- 商品价格 -->
+                                        <div class="main_price_text">
+                                        <!-- 正常商品 -->
+                                            <template v-if="pros.product.productCategory == 1">
+                                                <div class="price_text_tag">
+                                                    <p class="listTag" v-if="pros.product.actStatus ==1 && pros.product.promotions">
+                                                        <span v-text="pros.product.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>
+                                                </div>
+                                                <div class="main_price_login">
+                                                    <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                                                    <template v-if="pros.product.priceFlag == 1">
+                                                        <em class="price_grade"><span>¥</span>价格未公开</em>
+                                                    </template>
+                                                    <template v-else>
+                                                        <template v-if="PromotionsFormat(pros.product.promotions)">
+                                                            <!--单品优惠时的划线价-->
+                                                            <div class="main_price_show none">
+                                                                ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
+                                                            </div>
+                                                        </template>
+                                                        <template v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
+                                                            <!--机构价-->
+                                                            <div class="main_price_show">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span></div>
+                                                        </template>
+                                                        <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
+                                                            <em class="price_grade_club">
+                                                                <span>¥</span>会员可见
+                                                            </em>
+                                                        </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>
+                                                    </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>
-                                            </th:block>
+                                            </template>
                                         </div>
-                                    </a>
-                                </th:block>
+                                    </div>
+                                </a>
                                 <!-- 广告图 -->
-                                <th:block th:if="*{templateType}==6">
-                                    <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
-                                        <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
-                                        <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                <div v-if="floor.floorContent.templateType == 6">
+                                    <a :href="floor.floorContent.adsLink1 ? floor.floorContent.adsLink1 : 'javascript:;'"
+                                       :target="floor.floorContent.adsLink1 ? '_blank' : '_self' "
+                                       class="page_main_item ad_01"
+                                    >
+                                        <img v-if="isPC" :src="floor.floorContent.pcAdsImage1" alt="" class="page_main_item_adv">
+                                        <img v-else :src="floor.floorContent.appletsAdsImage1" alt="" class="page_main_item_adv">
                                     </a>
-                                </th:block>
+                                </div>
+                            </div>
+                            <div v-if="floor.floorContent.templateType == 8"
+                                 class="swiper-pagination swiper-pagination-floor mfc"
+                                 :data-id="floor.floorImageList.length"
+                            >
                             </div>
-                            <div th:if="*{templateType}==8" class="swiper-pagination swiper-pagination-floor mfc" th:attr="data-id=${floor.get('floorImageList').size}"></div>
                         </div>
-                        <div class="section_page_more" th:attr="data-id=*{templateType}, data-size=${floor.get('floorImageList').size}">
+                        <div class="section_page_more"
+                             :data-id="floor.floorContent.templateType"
+                             :data-size="floor.floorImageList.length"
+                        >
                             <div class="more" @click="showMoreItem($event)"> <i class="icon mIcon"></i>查看更多</div>
                         </div>
+                    </template>
+                </div>
+            </template>
+            <template v-else>
+                <div class="section_page" th:each="floor,stat : ${typeFloorJson.get('floorList')}">
+                    <th:block th:if="${floor.get('floorContent')}!=null">
+                        <div class="section_page_title">
+                            <h1 th:text="${floor.get('title')}" th:attr="data-id=${stat.index+1}"></h1>
+                            <p th:text="${floor.get('detail')}"></p>
+                        </div>
+                        <th:block th:object="${floor.get('floorContent')}">
+                            <div th:class="*{templateType}==8? 'hotList swiper-container-floor' : ''" th:id="*{templateType}==8? 'recommendBox' : ''">
+                                <div th:class="*{templateType}==8? *{'section_page_main type_08 swiper-wrapper recommendBox-wrapper clear mfw section_'+templateType} : *{'section_page_main clear mfw section_'+templateType}">
+                                    <!-- 广告图 -->
+                                    <th:block th:if="*{templateType}==1 or *{templateType}==2 or *{templateType}==3 or *{templateType}==4 or *{templateType}==5">
+                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <th:block th:if="*{templateType}==2 or *{templateType}==3 or *{templateType}==4">
+                                        <a th:href="*{#strings.isEmpty(adsLink2)}? 'javascript:;' : *{adsLink2}" th:attr="target=(*{#strings.isEmpty(adsLink2)} ? '_self' : '_blank')" class="page_main_item ad_02">
+                                            <img v-if="isPC" th:src="*{pcAdsImage2}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage2}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <th:block th:if="*{templateType}==4">
+                                        <a th:href="*{#strings.isEmpty(adsLink3)}? 'javascript:;' : *{adsLink3}" th:attr="target=(*{#strings.isEmpty(adsLink3)} ? '_self' : '_blank')" class="page_main_item ad_03">
+                                            <img v-if="isPC" th:src="*{pcAdsImage3}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage3}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                    <!-- 商品/图片 列表 -->
+                                    <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
+                                        <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
+                                            <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                            <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
+                                            <div class="page_main_text">
+                                                <th:block th:if="${pros.containsKey('product')}">
+                                                    <span class="tag" th:if="${pros.get('product').containsKey('beautyActFlag')} and ${pros.get('product').get('beautyActFlag')}==1">美博会</span>
+                                                </th:block>
+                                                <span th:text="${pros.get('name')}"></span>
+                                            </div>
+                                            <div class="page_main_price" th:if="*{listType}==1">
+                                                <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                                    <!-- 商品价格 -->
+                                                    <div th:attr="class=*{'main_price_text product_'+productId}, data-id=*{productId}">
+                                                        <!-- 正常商品 -->
+                                                        <th:block th:if="*{productCategory}==1">
+                                                            <div class="price_text_tag" th:if="${pros.get('product').containsKey('actStatus')}">
+                                                                <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
+                                                                    <template th:text="*{promotions.name}"></template>
+                                                                    <th:block th:if="*{promotions.type}==1 and *{promotions.mode}==1">
+                                                                        <!--单品优惠:优惠价-->
+                                                                        <span class="price_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>
+                                    <!-- 广告图 -->
+                                    <th:block th:if="*{templateType}==6">
+                                        <a th:href="*{#strings.isEmpty(adsLink1)}? 'javascript:;' : *{adsLink1}" th:attr="target=(*{#strings.isEmpty(adsLink1)} ? '_self' : '_blank')" class="page_main_item ad_01">
+                                            <img v-if="isPC" th:src="*{pcAdsImage1}" alt="" class="page_main_item_adv">
+                                            <img v-else th:src="*{appletsAdsImage1}" alt="" class="page_main_item_adv">
+                                        </a>
+                                    </th:block>
+                                </div>
+                                <div th:if="*{templateType}==8" class="swiper-pagination swiper-pagination-floor mfc" th:attr="data-id=${floor.get('floorImageList').size}"></div>
+                            </div>
+                            <div class="section_page_more" th:attr="data-id=*{templateType}, data-size=${floor.get('floorImageList').size}">
+                                <div class="more" @click="showMoreItem($event)"> <i class="icon mIcon"></i>查看更多</div>
+                            </div>
+                        </th:block>
                     </th:block>
-                </th:block>
-            </div>
+                </div>
+            </template>
         </div>
     </div>
 </div>

+ 9 - 0
src/main/resources/templates/product/qualityauthorize.html

@@ -107,6 +107,15 @@
                                    href="https://www-b.caimei365.com/topic-6.html?name=%E6%AD%A3%E5%93%81%E8%81%94%E7%9B%9F"><img
                 src="/img/quality/float-img.png"></a></div>
 
+        <!-- 微信二维码 -->
+        <div class="qrCodeImage" v-if="showQrcodeImage && parameters.qrCodeImage">
+            <span class="closeHandle" @click="handleColseQrCodeImage">&times;</span>
+            <img :src="parameters.qrCodeImage" alt="公众号"/>
+            <div class="foot-text">
+                <div v-if="!isPC">长按识别</div>
+                <div>关注公众号了解更多</div>
+            </div>
+        </div>
         <!--授权图模态框-->
         <div class="sq-book-modal" @click="hideSqBookModal" v-show="isShowSqBookModal" id="sq-book-modal"></div>
         <transition enter-active-class="myZoomIn" leave-active-class="myZoomOut">

+ 1 - 1
src/main/resources/templates/shopping/cart.html

@@ -203,7 +203,7 @@
                 <div  :class="reducedPrice>0?'item priceTotal':'item'">合计:<em>¥{{totalPrice | NumFormat}}</em>
                     <span v-if="reducedPrice>0" class="dl"><del>¥{{originalPrice | NumFormat}}</del><em>减¥{{reducedPrice | NumFormat}}</em></span>
                 </div>
-                <a class="submit" href="javascript:void(0);" @click="submitCart()">去结算</a>
+                <a class="submit" href="javascript:void(0);" @click="submitCart()" onclick="_czc.push(['_trackEvent','购物车去结算','点击','去结算','','Um_Event_CartConfirmOrder'])">去结算</a>
             </div>
         </div>
     </div>

+ 2 - 1
src/main/resources/templates/shopping/confirm.html

@@ -299,7 +299,8 @@
             <p v-if="balance.deductMoney>0">抵扣账户余额: <span><em>- ¥{{balance.deductMoney | NumFormat}}</em></span></p>
             <p>总价: <span><em>¥{{payInfo.orderShouldPayFee | NumFormat}}</em></span></p>
             <p class="pis" v-if="isBeansShow">
-                可用{{ freightMoney*100 }}采美豆抵用{{ freightMoney }}元运费
+                <span v-if="payInfo.freePostFlag == 1">可用{{ deductionBeans }}采美豆抵用{{ freightMoney }}元运费</span>
+                <span v-if="payInfo.freePostFlag == -1">可用{{ deductionBeans }}采美豆抵用{{ freightMoney }}运费</span>
                 <span>
                     <label class="check">
                         <input v-model="balance.isFreight" name="useBalance" type="checkbox" @change="changeDeductibleFreight()">

+ 1 - 1
src/main/resources/templates/supplier-center/operation/list.html

@@ -64,7 +64,7 @@
                                 <div class="td td-1">{{item.linkName}}</div>
                                 <div class="td td-2">{{item.mobile}}</div>
                                 <div class="td td-3">
-                                    <p>{{item.invitationCode}}</p>
+                                    <p>{{ item.invitationCode ? item.invitationCode : '无'}}</p>
                                     <p :style="{color: ColorFn(item.effectiveFlag)}">{{item.effectiveFlag | stateTextExp}}</p>
                                 </div>
                                 <div class="td td-4">{{item.effectiveDays > 0 ? item.effectiveDays+'天': '- -'}}</div>

+ 2 - 2
src/main/resources/templates/supplier-center/setting/information.html

@@ -42,13 +42,13 @@
                     <div class="forget-form"  v-if="tabCurrentIndex == 1">
                         <form>
                             <div class="formLine" >
-                                <p><em>*</em>公司名称(<span>示例:华熙生物科技股份有限公司</span>):</p>
+                                <p><em>*</em>公司名称<span>(示例:华熙生物科技股份有限公司)</span>:</p>
                                 <input  class="massageBtn"  type="text" v-model.trim="params.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" @blur="blurHandle($event)" maxlength="30" needverify>
                                 <i class="checked icon mIcon"></i>
                                 <span class="errTips icon mIcon" tips="请输入公司名称"></span>
                             </div>
                             <div class="formLine rightTxt" >
-                                <p>公司简称(<span>示例:华熙生物</span>):</p>
+                                <p>公司简称<span>(示例:华熙生物)</span>:</p>
                                 <input  class="massageBtn"  type="text" v-model.trim="params.shortName"  placeholder="请与营业执照的注册名称保持一致"  maxlength="10" >
                                 <span class="errTips"></span>
                             </div>

+ 25 - 1
src/main/resources/templates/supplier-center/shop/release.html

@@ -62,7 +62,7 @@
                                 <div class="release-input"><input class="input" v-model="releaseParams.aliasName" maxlength="40" type="text" placeholder="请输入该商品在您公司内部的名称" @blur="blur_aliasName"></div>
                                 <div class="release-tips" v-show="vShow_AliasName">{{fromMessage}}</div>
                             </div>
-                             <div class="release-from clear">
+                            <div class="release-from clear">
                                  <div class="release-label"><span class="star">*</span>商品属性:</div>
                                     <div class="release-input">
                                         <div class="release-props">
@@ -72,6 +72,30 @@
                                     </div>
                                 <div class="release-tips" v-show="vShow_attribute">{{fromMessage}}</div>
                              </div>
+                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
+                                 <div class="release-label"><span class="star">*</span>培训方式:</div>
+                                    <div class="release-input">
+                                        <div class="release-props">
+                                            <label class="release-radio" @click="choiceTrain(1)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="1"><i class="icon mIcon">线上培训</i></label>
+                                            <label class="release-radio" @click="choiceTrain(2)"><input type="radio" name="trainingMethod" v-model="releaseParams.trainingMethod" value="2" checked><i class="icon mIcon">线下培训</i></label>
+                                        </div>
+                                    </div>
+                                <div class="release-tips" v-show="vShow_trainingMethod">{{fromMessage}}</div>
+                             </div>
+                            <div class="release-from clear" v-if="releaseParams.commodityType == 2">
+                                 <div class="release-label"><span class="star">*</span>培训费用:</div>
+                                    <div class="release-input">
+                                        <div class="release-props">
+                                            <label class="release-radio" @click="choiceTrainOutlay(1)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="1"><i class="icon mIcon">售价未包含</i></label>
+                                            <label class="release-radio" @click="choiceTrainOutlay(2)"><input type="radio" name="trainingType" v-model="releaseParams.trainingType" value="2" checked><i class="icon mIcon">售价已包含</i></label>
+                                        </div>
+                                    </div>
+                                    <div class="release-input expen" v-if="releaseParams.trainingType == 1">
+                                        <span class="span">¥</span>
+                                        <input class="input" v-model="releaseParams.trainingFee" maxlength="40" type="number" placeholder="请填写包含食宿,交通等各项费用的培训总金额" @input="input_trainingFee">
+                                    </div>
+                                <div class="release-tips" v-show="vShow_trainingType">{{fromMessage}}</div>
+                             </div>
                             <div class="release-from clear">
                                 <div class="release-label"><span class="star">*</span>商品分类:</div>
                                 <div class="release-input">

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

@@ -87,8 +87,8 @@
                                         </template>
                                     </template>
                                     <template v-else>
-                                        <em>¥<i :class="'icon mIcon i'+p.priceGrade"></i></em>
-                                        <span class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</span>
+                                        <em class="">¥<i :class="'icon mIcon i'+p.priceGrade"></i></em>
+                                        <span class="listTag " v-if="p.actStatus==1">{{p.promotions.name}}</span>
                                     </template>
                                 </div>
                             </div>
@@ -131,8 +131,8 @@
                                         </template>
                                     </template>
                                     <template v-else>
-                                        <em>¥<i :class="'icon mIcon i'+p.priceGrade"></i></em>
-                                        <span class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</span>
+                                        <em class="">¥<i :class="'icon mIcon i'+p.priceGrade"></i></em>
+                                        <span class="listTag " v-if="p.actStatus==1">{{p.promotions.name}}</span>
                                     </template>
                                 </div>
                             </div>

+ 22 - 14
src/main/resources/templates/user-center/dashboard.html

@@ -163,23 +163,31 @@
         </div>
         <!-- 采美豆弹窗 -->
         <div class="cmbeans-alert-box" v-if="isShowBeansAlet">
-            <div class="cmbeans-alert-content" :style="{'background-image': 'url('+bgImagePath+')'}">
-                <div class="cmbeans-alert-content-text">恭喜您获得采美豆!</div>
-                <div class="cmbeans-alert-content-bean">
-                    <div class="cmbeans-alert-main">
-                        <img v-if="isPC" class="cmbeans-alert-icon" src="/img/account/bean-icon@3x.png" mode="">
-                        <img v-else class="cmbeans-alert-icon" src="/img/account/bean-icon-h5@3x.png" mode="">
-                        <div class="cmbeans-alert-text">
-                            <span class="icon-add">+</span>
-                            <span class="icon-text">{{ beanNumber }}</span>
+            <template v-if="beansType == 12">
+                <div class="cmbeans-alert-image">
+                    <img src="/img/account/icon-beans-12@2x.png" alt="">
+                    <i class="icon mIcon" @click.stop="handleClickCancel"></i>
+                </div>
+            </template>
+            <template v-else>
+                <div class="cmbeans-alert-content" :style="{'background-image': 'url('+bgImagePath+')'}">
+                    <div class="cmbeans-alert-content-text">恭喜您获得采美豆!</div>
+                    <div class="cmbeans-alert-content-bean">
+                        <div class="cmbeans-alert-main">
+                            <img v-if="isPC" class="cmbeans-alert-icon" src="/img/account/bean-icon@3x.png" mode="">
+                            <img v-else class="cmbeans-alert-icon" src="/img/account/bean-icon-h5@3x.png" mode="">
+                            <div class="cmbeans-alert-text">
+                                <span class="icon-add">+</span>
+                                <span class="icon-text">{{ beanNumber }}</span>
+                            </div>
                         </div>
                     </div>
+                    <div class="cmbeans-alert-content-tips">
+                        <div class="tips">采美豆可抵扣运费</div>
+                    </div>
+                    <i class="icon mIcon" @click.stop="handleClickCancel"></i>
                 </div>
-                <div class="cmbeans-alert-content-tips">
-                    <div class="tips">采美豆可抵扣运费</div>
-                </div>
-                <i class="icon mIcon" @click.stop="handleClickCancel"></i>
-            </div>
+            </template>
         </div>
     </div>
     <!--loading-->

+ 1 - 1
src/main/resources/templates/user-center/operation/list.html

@@ -69,7 +69,7 @@
                                 </div>
                                 <div class="td td-4">{{item.effectiveDays > 0 ? item.effectiveDays+'天': '- -'}}</div>
                                 <div class="td td-5" :style="{color: statusColorFn(item.status)}">{{item.status | stateExp}}</div>
-                                <div class="td td-6">{{item.nickName}}</div>
+                                <div class="td td-6">{{item.nickName ? item.nickName : '- -'}}</div>
                                 <div class="td td-7">{{item.addTime}}</div>
                                 <div class="td td-8">{{item.bindTime}}</div>
                                 <div class="td td-9">

+ 4 - 4
src/main/resources/templates/user-center/order/detail.html

@@ -69,10 +69,10 @@
                                     <p v-if="orderInfo.freePostFlag == '0'">运费:<span class="none">包邮</span> </p>
                                     <p v-if="orderInfo.freePostFlag == '-1'">运费:<span class="none">到付</span> </p>
                                     <p v-if="orderInfo.freePostFlag == '1'">运费:<span class="none">¥{{orderInfo.freight | NumFormat}}</span> </p>
-                                    <p>采美豆抵用运费:<span class="none">{{orderInfo.userBeans }}</span> </p>
-                                    <p v-if="orderInfo.discountFee!=0">经理折扣:<span class="none">¥{{orderInfo.discountFee | NumFormat}}</span> </p>
-                                    <p>促销满减:<span class="none">¥{{orderInfo.promotionFullReduction | NumFormat}}</span> </p>
-                                    <p>赠品数:<span class="none">{{orderInfo.presentCount}}</span></p>
+                                    <p>采美豆抵用运费:<span class="none" v-if="orderInfo.userBeans>0">{{orderInfo.userBeans }}</span> </p>
+                                    <p v-if="orderInfo.discountFee>0">经理折扣:<span class="none">¥{{orderInfo.discountFee | NumFormat}}</span> </p>
+                                    <p v-if="orderInfo.promotionFullReduction>0">促销满减:<span class="none">¥{{orderInfo.promotionFullReduction | NumFormat}}</span> </p>
+                                    <p v-if="orderInfo.presentCount>0">赠品数:<span class="none">{{orderInfo.presentCount}}</span></p>
                                 </div>
                             </div>
                         </div>

+ 2 - 2
src/main/resources/templates/user-center/setting/information.html

@@ -43,7 +43,7 @@
                         <template v-if="userIdentity === 2">
                             <div class="title">升级信息</div>
                             <div class="formLine">
-                                <p><em>*</em>机构名称(<span>示例:深圳市美丽人生医疗美容有限公司</span>):</p>
+                                <p><em>*</em>机构名称<span>(示例:深圳市美丽人生医疗美容有限公司)</span>:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="30" @blur="blurHandle($event)" needverify>
                                 <i class="checked icon mIcon"></i>
                                 <span class="errTips icon mIcon" tips="请输入机构名称"></span>
@@ -55,7 +55,7 @@
                                 <span class="errTips icon mIcon" tips="请输入正确的邮箱地址"></span>
                             </div>
                             <div class="formLine">
-                                <p>机构简称(<span>示例:美丽人生</span>):</p>
+                                <p>机构简称<span>(示例:美丽人生)</span>:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入机构简称" maxlength="10" >
                             </div>
                             <div class="formLine">

+ 2 - 2
src/main/resources/templates/user-center/setting/upgrade.html

@@ -40,13 +40,13 @@
                                 <span class="errTips icon mIcon" tips="请输入正确的邮箱地址"></span>
                             </div>
                             <div class="formLine">
-                                <p><em>*</em>机构名称:</p>
+                                <p><em>*</em>机构名称<span>(示例:深圳市美丽人生医疗美容有限公司)</span>:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="50" @blur="blurHandle($event)" needverify>
                                 <i class="checked icon mIcon"></i>
                                 <span class="errTips icon mIcon" tips="请输入机构名称"></span>
                             </div>
                             <div class="formLine">
-                                <p>机构简称:</p>
+                                <p>机构简称<span>(示例:美丽人生)</span>:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入机构简称" :rule="rule.name" maxlength="50" needverify>
                             </div>
                             <div class="formLine">