Explorar el Código

Merge remote-tracking branch 'origin/developer' into developerC

huangzhiguo hace 2 años
padre
commit
86337425dc
Se han modificado 43 ficheros con 518 adiciones y 136 borrados
  1. 61 1
      src/main/java/com/caimei/www/controller/unlimited/ArticleController.java
  2. 61 1
      src/main/java/com/caimei/www/controller/unlimited/HomeController.java
  3. 3 0
      src/main/java/com/caimei/www/mapper/ArticleDao.java
  4. 2 0
      src/main/java/com/caimei/www/mapper/HomeDao.java
  5. 8 0
      src/main/java/com/caimei/www/service/page/ArticleService.java
  6. 9 0
      src/main/java/com/caimei/www/service/page/HomeService.java
  7. 13 0
      src/main/java/com/caimei/www/service/page/impl/ArticleServiceImpl.java
  8. 5 0
      src/main/java/com/caimei/www/service/page/impl/HomeServiceImpl.java
  9. 4 0
      src/main/resources/mapper/ArticleMapper.xml
  10. 4 0
      src/main/resources/mapper/HomeMapper.xml
  11. 8 6
      src/main/resources/static/css/encyclopedia/detail.css
  12. 6 1
      src/main/resources/static/css/product/detail.h5.css
  13. 5 5
      src/main/resources/static/css/product/detail.pc.css
  14. 36 5
      src/main/resources/static/css/shopping/shopping.css
  15. 3 2
      src/main/resources/static/css/user-center/member/member-page.css
  16. 4 1
      src/main/resources/static/css/user-center/order/detail.css
  17. BIN
      src/main/resources/static/img/member/h5-cm-svip-icon6.png
  18. BIN
      src/main/resources/static/img/member/h5-cm-svip-icon8.png
  19. BIN
      src/main/resources/static/img/member/pc-cm-svip-icon6.png
  20. BIN
      src/main/resources/static/img/member/pc-cm-svip-icon8.png
  21. 24 6
      src/main/resources/static/js/account/register-club.js
  22. 5 3
      src/main/resources/static/js/pay/caimei-hlbpay.js
  23. 5 1
      src/main/resources/static/js/product/detail.js
  24. 41 13
      src/main/resources/static/js/shopping/confirm.js
  25. 1 1
      src/main/resources/static/js/supplier-center/article/article-list.js
  26. 2 2
      src/main/resources/static/js/supplier-center/encyclopedia/list.js
  27. 14 8
      src/main/resources/static/js/user-center/member/memberPage.js
  28. 5 1
      src/main/resources/static/js/user-center/order/detail.js
  29. 19 3
      src/main/resources/static/js/user-center/setting/information.js
  30. 27 8
      src/main/resources/static/js/user-center/setting/upgrade.js
  31. 8 4
      src/main/resources/static/js/utils.js
  32. 11 0
      src/main/resources/templates/account/register-club.html
  33. 1 0
      src/main/resources/templates/encyclopedia/detail.html
  34. 11 1
      src/main/resources/templates/product/detail.html
  35. 29 12
      src/main/resources/templates/shopping/confirm.html
  36. 2 2
      src/main/resources/templates/supplier-center/article/article-edit.html
  37. 2 2
      src/main/resources/templates/supplier-center/article/article-list.html
  38. 4 4
      src/main/resources/templates/supplier-center/encyclopedia/edit.html
  39. 3 3
      src/main/resources/templates/supplier-center/encyclopedia/list.html
  40. 51 40
      src/main/resources/templates/user-center/member/member.html
  41. 2 0
      src/main/resources/templates/user-center/order/detail.html
  42. 8 0
      src/main/resources/templates/user-center/setting/information.html
  43. 11 0
      src/main/resources/templates/user-center/setting/upgrade.html

+ 61 - 1
src/main/java/com/caimei/www/controller/unlimited/ArticleController.java

@@ -7,12 +7,19 @@ import com.caimei.www.pojo.page.BaseLink;
 import com.caimei.www.pojo.page.ImageLink;
 import com.caimei.www.service.page.ArticleService;
 import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ServerWebExchange;
+import org.thymeleaf.util.StringUtils;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -21,6 +28,7 @@ import java.util.List;
  * @author : Charles
  * @date : 2020/7/31
  */
+@Slf4j
 @Controller
 public class ArticleController extends BaseController {
 
@@ -93,13 +101,35 @@ public class ArticleController extends BaseController {
      * 文章详情【旧】
      */
     @GetMapping("/info/detail-{id}-1.html")
-    public String toArticleDetail(@PathVariable("id") Integer id, final Model model) {
+    public String toArticleDetail(@PathVariable("id") Integer id, final Model model, ServerWebExchange serverWebExchange, ServerHttpResponse response) {
         List<BaseLink> typeList = articleService.getArticleTypes();
         Article article = articleService.getArticleInfo(id);
         if(article == null){
             // return super.errorPath();
             return "redirect:/info/404.html";
         }
+        // 获取referer 判断访问来源
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String ip = "";
+        String referer = "";
+        String source = "";
+        HttpHeaders headers = request.getHeaders();
+        ip = String.valueOf(headers.get("x-forwarded-for"));
+        if (StringUtils.isEmpty(ip)) {
+            ip = String.valueOf(headers.get("X-Real-IP"));
+        }
+        if (null != ip && "" != ip) {
+            ip = ip.replaceAll("[^\\d.]", "");
+        }
+        List<String> referer1 = headers.get("Referer");
+        if (referer1 != null) {
+            referer = referer1.get(0);
+        }
+        source = source(referer);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dateFormat.format(new Date());
+        articleService.insertRecord(ip,referer,source,format);
+        log.info("文章详情访问来源记录完成========》"+source);
         List<BaseLink> data = articleService.getArticleLabels().getData();
         List<ImageLink> Ads = articleService.getLastestInfoAds().getData();
         List<Article> articles=articleService.getInfoById(id);
@@ -201,4 +231,34 @@ public class ArticleController extends BaseController {
         return articleService.articlePv(id);
     }
 
+    private String source(String link) {
+        if (link.contains("www.baidu.com")) {
+            return "1";
+        }
+        if (link.contains("www.so.com")) {
+            return "2";
+        }
+        if (link.contains("www.google.cn")) {
+            return "3";
+        }
+        if (link.contains("m.sm.cn")) {
+            return "4";
+        }
+        if (link.contains("toutiao.com")) {
+            return "5";
+        }
+        if (link.contains("www.sogou.com")) {
+            return "6";
+        }
+        if (link.contains("servicewechat.com")) {
+            return "7";
+        }
+        if (link.contains("www.caimei365.com")) {
+            return "0";
+        }
+        if (link.contains("zzjtest.gz.aeert.com")) {
+            return "0";
+        }
+        return null;
+    }
 }

+ 61 - 1
src/main/java/com/caimei/www/controller/unlimited/HomeController.java

@@ -6,12 +6,19 @@ import com.caimei.www.pojo.JsonModel;
 import com.caimei.www.service.page.BaseService;
 import com.caimei.www.service.page.HomeService;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.server.ServerWebExchange;
+import org.thymeleaf.util.StringUtils;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -41,7 +48,28 @@ public class HomeController extends BaseController {
      * @return
      */
     @GetMapping("/index.html")
-    public String home(final Model model) {
+    public String home(final Model model, ServerWebExchange serverWebExchange, ServerHttpResponse response) {
+        ServerHttpRequest request = serverWebExchange.getRequest();
+        String ip = "";
+        String referer = "";
+        String source = "";
+        HttpHeaders headers = request.getHeaders();
+        ip = String.valueOf(headers.get("x-forwarded-for"));
+        if (StringUtils.isEmpty(ip)) {
+            ip = String.valueOf(headers.get("X-Real-IP"));
+        }
+        if (null != ip && "" != ip) {
+            ip = ip.replaceAll("[^\\d.]", "");
+        }
+        List<String> referer1 = headers.get("Referer");
+        if (referer1 != null) {
+            referer = referer1.get(0);
+        }
+        source = source(referer);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String format = dateFormat.format(new Date());
+        homeService.insertRecord(ip,referer,source,format);
+        log.info("首页访问来源记录完成========》"+source);
 		// 获取banner图
 		List<ImageLink> bannerList = homeService.getHomeBanners();
 		// 首页楼层
@@ -82,4 +110,36 @@ public class HomeController extends BaseController {
     public JsonModel<List<ImageLink>> getAdvertising() {
         return homeService.getAdvertising();
     }
+
+
+    private String source(String link) {
+        if (link.contains("www.baidu.com")) {
+            return "1";
+        }
+        if (link.contains("www.so.com")) {
+            return "2";
+        }
+        if (link.contains("www.google.cn")) {
+            return "3";
+        }
+        if (link.contains("m.sm.cn")) {
+            return "4";
+        }
+        if (link.contains("toutiao.com")) {
+            return "5";
+        }
+        if (link.contains("www.sogou.com")) {
+            return "6";
+        }
+        if (link.contains("servicewechat.com")) {
+            return "7";
+        }
+        if (link.contains("www.caimei365.com")) {
+            return "0";
+        }
+        if (link.contains("zzjtest.gz.aeert.com")) {
+            return "0";
+        }
+        return null;
+    }
 }

+ 3 - 0
src/main/java/com/caimei/www/mapper/ArticleDao.java

@@ -101,4 +101,7 @@ public interface ArticleDao {
     String getLabelById(Integer id);
 
     List<Article> getArticleRelatedLimit(@Param("id")Integer id, @Param("labels")String[] strings);
+
+    void insertRecord(@Param("IP") String IP, @Param("referer") String referer,
+                      @Param("accessSource") String accessSource,@Param("accessTime") String accessTime,@Param("pageType") String pageType);
 }

+ 2 - 0
src/main/java/com/caimei/www/mapper/HomeDao.java

@@ -25,6 +25,8 @@ public interface HomeDao {
      */
     List<ImageLink> getAdvertising();
 
+    void insertRecord(@Param("IP") String IP, @Param("referer") String referer,
+                     @Param("accessSource") String accessSource,@Param("accessTime") String accessTime,@Param("pageType") String pageType);
 //    /**
 //     * 首页楼层
 //     */

+ 8 - 0
src/main/java/com/caimei/www/service/page/ArticleService.java

@@ -74,4 +74,12 @@ public interface ArticleService {
     JsonModel articlePv(Integer id);
 
     List<Article> getInfoById(Integer id);
+    /**
+     * 访问来源
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    void insertRecord(String IP, String referer, String accessSource,String accessTime);
 }

+ 9 - 0
src/main/java/com/caimei/www/service/page/HomeService.java

@@ -34,4 +34,13 @@ public interface HomeService {
      * 右侧侧边栏数据
      */
     Map<String, Object> getHomeSideJson();
+
+    /**
+     * 访问来源
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    void insertRecord(String IP, String referer, String accessSource,String accessTime);
 }

+ 13 - 0
src/main/java/com/caimei/www/service/page/impl/ArticleServiceImpl.java

@@ -191,6 +191,19 @@ public class ArticleServiceImpl implements ArticleService {
         return relateds;
     }
 
+    /**
+     * 访问来源
+     *
+     * @param IP
+     * @param referer
+     * @param accessSource
+     * @param accessTime
+     */
+    @Override
+    public void insertRecord(String IP, String referer, String accessSource, String accessTime) {
+        articleDao.insertRecord(IP, referer, accessSource,accessTime,"11");
+    }
+
     private String getIp(ServerWebExchange serverWebExchange){
        ServerHttpRequest request = serverWebExchange.getRequest();
         return Objects.requireNonNull(request.getRemoteAddress()).getAddress().toString();

+ 5 - 0
src/main/java/com/caimei/www/service/page/impl/HomeServiceImpl.java

@@ -78,6 +78,11 @@ public class HomeServiceImpl implements HomeService {
         }
     }
 
+    @Override
+    public void insertRecord(String IP, String referer, String accessSource, String accessTime) {
+        homeDao.insertRecord(IP, referer, accessSource,accessTime,"1");
+    }
+
     /**
      * 首页左侧广告图
      */

+ 4 - 0
src/main/resources/mapper/ArticleMapper.xml

@@ -171,4 +171,8 @@
 		limit 3
 	</select>
 
+	<insert id="insertRecord">
+		INSERT INTO cm_behavior_record_ref (IP, referer, accessSource, accessTime,pageType)
+		VALUES(#{IP}, #{referer}, #{accessSource}, #{accessTime},#{pageType})
+	</insert>
 </mapper>

+ 4 - 0
src/main/resources/mapper/HomeMapper.xml

@@ -15,6 +15,10 @@
 		order by sort, createDate desc
 	</select>
 
+	<insert id="insertRecord">
+		INSERT INTO cm_behavior_record_ref (IP, referer, accessSource, accessTime,pageType)
+		VALUES(#{IP}, #{referer}, #{accessSource}, #{accessTime},#{pageType})
+	</insert>
 	<!--	<select id="getHomePageFloor" resultType="com.caimei.www.pojo.page.PageFloor">-->
 <!--		select id, type, floorTitle as title, floorDetail as detail-->
 <!--		from new_page_floor-->

+ 8 - 6
src/main/resources/static/css/encyclopedia/detail.css

@@ -8,12 +8,12 @@
     .bk-detail{position:relative;z-index:20;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 32px;-webkit-transform:translateY(-100px);-ms-transform:translateY(-100px);transform:translateY(-100px);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:14px;color:#333}
     .bk-detail-left{width:835px}
     .bk-detail-left .bk-name{font-size:18px}
-    .bk-detail-left .bk-overview{color:#999999;margin-top:16px}
+    .bk-detail-left .bk-overview{color:#999999;margin-top:16px;white-space: pre-wrap;line-height: 24px;}
     .bk-detail-left .bk-information{display:table;margin-top:48px;margin-bottom:48px;width:100%}
     .bk-detail-left .bk-information .bk-row{display:table-row}
     .bk-detail-left .bk-information .bk-row .bk-label{display:table-cell;font-weight:bold;color:#9AA5B5;border-bottom:1px dashed #BEBEBE;padding:18px 0 10px;white-space:nowrap;}
     .bk-detail-left .bk-information .bk-row .bk-content{font-size:14px;display:table-cell;border-bottom:1px dashed #BEBEBE;padding:18px 10px 10px}
-    .bk-detail-left .bk-section .bk-section-content{line-height: 1.8}
+    .bk-detail-left .bk-section .bk-section-content{line-height: 1.8;white-space: pre-wrap;}
     .bk-detail-left .bk-section .bk-title{position:relative;margin-top:40px;margin-bottom:24px}
     .bk-detail-left .bk-section .bk-title h2{background:#fff;font-size:22px;display:inline-block;font-weight:normal;position:relative;z-index:20;padding-right:16px}
     .bk-detail-left .bk-section .bk-title::before{position:absolute;content:"";display:block;width:12px;height:24px;left:-32px;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);background:#FF9D63}
@@ -37,8 +37,9 @@
     .bk-literature .bk-literature-list li a.link:hover::after{background-image: url("/img/encyclopedia/assets/pc-icon-link-hover.png")}
     .bk-literature .bk-literature-list li a.image:hover::after{background-image: url("/img/encyclopedia/assets/pc-icon-img-hover.png")}
     .bk-literature .bk-literature-list li i:hover{ background-image:url("/img/encyclopedia/assets/pc-icon-arrowup-hover.png")}
-    .bk-pv{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;background:#fff;margin-top:64px;-webkit-column-gap:32px;-moz-column-gap:32px;column-gap:32px}
-    .bk-pv .bk-pv-item{font-size:14px;color:#999999}
+    .bk-pv{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;background:#fff;margin-top:24px;-webkit-column-gap:32px;-moz-column-gap:32px;column-gap:32px}
+    .bk-pv .bk-pv-item{font-size:12px;color:#999999}
+    .bk-remarks{font-size: 12px; color: #999; margin-top: 24px}
     .bk-detail-right .bk-album,.bk-detail-right .bk-company{width:280px;height:280px;background:#FAFAFA;margin-bottom:25px}
     .bk-detail-right .bk-album img,.bk-detail-right .bk-company img{display:block;width:280px;height:220px}
     .bk-detail-right .bk-album video{display:block;width:280px;height:220px}
@@ -68,7 +69,7 @@
     .bk-entry-name{padding:0.4rem 0.32rem 0.32rem;background:#fff}
     .bk-entry-name .bk-name{font-size:0.36rem;font-weight:bold}
     .bk-detail-left .bk-name{font-size:0.36rem;font-weight:bold;padding:0 0.32rem;background:#fff}
-    .bk-detail-left .bk-overview{color:#999999;padding:0.24rem 0.32rem 0;background:#fff}
+    .bk-detail-left .bk-overview{color:#999999;padding:0.24rem 0.32rem 0;background:#fff;white-space: pre-wrap;}
     .bk-detail-left .bk-information{position:relative;width:100%;padding:0.56rem 0.32rem  0.48rem;display:table;margin-bottom:0.16rem;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box}
     .bk-detail-left .bk-information .bk-row{display:table-row}
     .bk-detail-left .bk-information .bk-row .bk-label{color:#9AA5B5;display:table-cell;padding:0.16rem 0.4rem 0.16rem 0}
@@ -76,13 +77,14 @@
     .bk-detail-left .bk-section{position:relative;padding:0.48rem 0.32rem;background:#fff;margin-bottom:0.16rem;}
     .bk-detail-left .bk-section .bk-title{position:relative;margin-bottom:0.32rem}
     .bk-detail-left .bk-section .bk-title h2{font-size:0.36rem;position:relative;z-index:20}
-    .bk-detail-left .bk-section .bk-section-content{line-height: 1.8;text-align:justify;}
+    .bk-detail-left .bk-section .bk-section-content{line-height: 1.8;text-align:justify;white-space: pre-wrap;}
     .bk-detail-left .bk-section h3{font-size:0.32rem;margin-bottom:0.32rem;margin-top:0.4rem;font-weight:normal}
     .bk-literature{padding:0.4rem 0.32rem;background:#fff}
     .bk-literature .bk-title{font-size:0.36rem;font-weight:bold;margin-bottom:0.32rem}
     .bk-literature .bk-literature-list li{margin-top:0.1rem;font-size:0.26rem;color:#999999}
     .bk-pv{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;text-align:right;background:#fff;padding:0 0.32rem 0.4rem;-webkit-column-gap:0.48rem;-moz-column-gap:0.48rem;column-gap:0.48rem}
     .bk-pv .bk-pv-item{font-size:0.24rem;color:#999999}
+    .bk-remarks{font-size: 0.24rem; color: #999; padding: 0.4rem 0.32rem; background: #fff;}
     .bk-relevant{background:#fff;padding:0.4rem 0 0;position:sticky;top:-6.15rem;z-index:60}
     .bk-relevant .bk-album .bk-title{font-size:0.36rem;font-weight:bold;padding:0 0.32rem}
     .bk-relevant .bk-album .bk-album-list{display:-webkit-box;display:-ms-flexbox;display:flex;overflow-x:auto;height:3.2rem;margin-top:0.32rem;margin-bottom:0.4rem;-webkit-column-gap:0.24rem;-moz-column-gap:0.24rem;column-gap:0.24rem}

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

@@ -100,7 +100,7 @@ li{list-style:none}
 .productInfo .tabTit span{display:inline-block;height:7.5vw;line-height:7.5vw;border-bottom:2px solid transparent;color:#93979F;font-size:3.4vw;margin-left:8vw;}
 .productInfo .tabTit span.on{color:#E15621;border-color:#E15621}
 .productInfo .tabTit span:first-child{margin-left:0;}
-.productInfo .tabCon{padding:1.2vw 3.3vw 3.3vw;text-align:center;font-size:3.4vw;}
+.productInfo .tabCon{padding:1.2vw 3.3vw 3.3vw;text-align:center;font-size:3.4vw;word-break: break-all;}
 .productInfo .tabCon img{max-width:100%;height:auto!important;}
 .productInfo .tabCon table{width:100%;text-align:left}
 .productInfo .tabCon td{padding:1.5vw;line-height:5vw}
@@ -190,3 +190,8 @@ li{list-style:none}
 
 /*图片预览背景*/
 .viewer-backdrop{z-index:13140 !important;background:#000 !important}
+
+/* 特殊商品退货须知 */
+.return-instructions{ background: #fff; box-sizing: border-box;margin-bottom: 2.6vw; }
+.return-instructions .hd{font-size:3.4vw;color:#e15616;font-weight:bold;background:#ffe6dc; padding: 0 3.3vw; line-height: 12vw }
+.return-instructions .bd{font-size: 3.6vw; color: #22272E; padding: 4.2vw 3.3vw;line-height: 5.6vw;}

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

@@ -207,7 +207,7 @@ li{list-style:none;}
 .productInfo .tabTit span{display:inline-block;box-sizing:border-box;min-width:130px;text-align:center;height:100%;padding:0 32px;cursor:pointer}
 .productInfo .tabTit span:hover{color:#E15621}
 .productInfo .tabTit span.on,.productInfo .tabTit span.on:hover{background:#ffe6dc;color:#e15616;font-weight: bold;}
-.productInfo .tabCon{padding:16px;text-align:center}
+.productInfo .tabCon{padding:16px;text-align:center;word-break: break-all;}
 .productInfo .tabCon img{width:100%;height: auto;}
 .productInfo .tabCon table{width:100%;text-align:left}
 .productInfo .tabCon td{padding:10px 12px;line-height:20px}
@@ -228,10 +228,10 @@ li{list-style:none;}
 .shopBox .bd .tit{line-height:30px;font-weight:bold;color:#4A4F58;font-size:14px}
 .shopBox .bd .con{line-height:20px;color:#627386;font-size:12px;margin-bottom:12px}
 .shopBox .bd .btn{display:block;width:100%;height:36px;line-height:36px;text-align:center;box-sizing:border-box;border-radius:2px;font-size:14px;color:#e15616;margin-top:12px;background: #fef6f3}
-.wrap>.rgt .contact{background:#FFF}
-.wrap>.rgt .contact .bd{padding:15px;line-height:24px;font-size:12px;color:#627386;margin-bottom: 12px}
-.wrap>.rgt .contact .bd div:nth-child(1){font-weight: bold;font-size: 14px;color: #4a4f58;}
-.wrap>.rgt .contact .bd div{margin-bottom: 12px}
+.wrap>.rgt .section{background:#FFF}
+.wrap>.rgt .section .bd{padding:15px;line-height:24px;font-size:12px;color:#627386;margin-bottom: 12px}
+.wrap>.rgt .section .bd div:nth-child(1){font-weight: bold;font-size: 14px;color: #4a4f58;}
+.wrap>.rgt .section .bd div{margin-bottom: 12px}
 
 .row img{width:12px;height:12px;display:inline-block;margin:-3px 5px}
 .row .fuwu{margin-right:15px}

+ 36 - 5
src/main/resources/static/css/shopping/shopping.css

@@ -3,6 +3,8 @@ li{list-style:none}
 .addressWrap input[type=checkbox]:after{color:#1890f9;border-color:#1890f9;}
 .addressWrap input[type=checkbox]:checked:after{background:#1890f9;border-color:#1890f9;color:#FFF;}
 [v-cloak]{display: none}
+#globalHead.fiexd{position: sticky !important;z-index: 996 !important;}
+/*.summaryWrap{position: sticky !important;top: calc(100vh - 117px) !important; left: 0 !important;}*/
 /**
  * PC端
  */
@@ -143,8 +145,13 @@ li{list-style:none}
     .couponWrap .coupon-list-cell .coupon-tags{height: 24px;line-height: 24px;text-align: center;border-radius: 8px 0 8px 0;position: absolute;top: 0;left: 0;padding: 0 10px;background-color: #f94b4b;color: #FFF;}
 
     /* 底部结算 */
-    .summaryWrap{width:100%;background:#FFF;margin:16px 0 -29px 0;position:relative}
-    .summaryWrap .summary{width:1184px;margin:0 auto;font-size:18px;padding:11px 0;height:50px;line-height:50px;text-align:right}
+    .summary-wrapper{height:117px;margin:8px 0 -30px}
+    .summaryWrap{width:100%;background:#FFF;position:relative}
+    .summaryWrap .agreement{background:#FFFAF8}
+    .summaryWrap .agreement .agreement-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;width:1184px;margin:0 auto;text-align:right;height:48px;color:#22272E}
+    .summaryWrap .agreement .agreement-content input{margin-right:8px;cursor:pointer}
+    .summaryWrap .agreement span{color:#1890F9;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+    .summaryWrap .summary{width:1184px;margin:0 auto;font-size:18px;padding:16px 0;height:50px;line-height:50px;text-align:right}
     .summaryWrap .summary em{font-style:normal;color: #f55c5c;}
     .summaryWrap .summary .left,.summaryWrap .summary .right{display:inline}
     .summaryWrap .summary .left .item:first-child{float:left}
@@ -162,7 +169,7 @@ li{list-style:none}
     .summaryWrap .summary .totalCoupon{font-size:14px;line-height:24px;color: #f55c5c;text-align: left;}
     .summaryWrap .summary .submit{display:inline-block;width:232px;height:50px;line-height:50px;text-align:center;background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);border-radius:2px;color:#FFF;float: right;}
     .summaryWrap .summary .submit.dis{background:#999;}
-    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
+    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:996;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
     .summaryWrap .summary .back{color:#f55c5c}
     .summaryWrap .summary .back .icon:before{width:20px;height:20px;background-position:-345px 0;margin-right:15px}
     .priceTotal{position:relative;text-align:right;height: 50px;line-height: 50px;display:inline-block;}
@@ -171,6 +178,14 @@ li{list-style:none}
     .priceTotal .dl em{position:absolute;top:-12px;height:24px;white-space:nowrap;right:0;background:#ff4500;line-height:24px;color:#FFF;padding:0 12px;border-radius:2px;font-size:14px}
     .priceTotal .dl em:before{content:'';width:0;height:0;border-width:5px 5px 0 5px;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:24px;left:50%}
 
+    /* 退货协议弹窗 */
+    .dialog-agreement-wrapper .mask{position:fixed;width:100vw;height:100vh;background:rgba(0,0,0,.7);left:0;top:0;z-index:998}
+    .dialog-agreement-wrapper .dialog-agreement{position:fixed;width:400px;background:#fff;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:999;border-radius:2px}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-title{font-size:16px;color:#4A4F58;font-weight:bold;text-align:center;padding:16px 24px}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-content{font-size:14px;color:#22272E;text-align:justify;padding:16px 24px;line-height:24px;max-height: 160px;overflow-y: auto;}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-footer{padding:16px 24px;text-align:right}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-footer .confirm{width:88px;height:32px;color:#fff;background:#E15616;text-align:center;line-height:32px;border:0;cursor:pointer}
+
     /* 收货地址 */
     .addressWrap{padding:16px;position:relative;    box-sizing: border-box;
     text-align: center;
@@ -313,6 +328,9 @@ li{list-style:none}
 @media screen and (max-width:768px){
     footer{display: none;}
     h2.title>a{color: #E15621;margin-left: 2vw;}
+    #globalHead{z-index: 996 !important;}
+    .priceTag .tag:before{top: 0.2vw;transition:none;}
+    .priceTag .close{color: #e15616;}
     .pageTitle .step{width:100%;height:12.4vw;line-height:12.4vw;background:#FFF;color:#9AA5B5;font-size:3.1vw;text-align:center}
     .pageTitle .step span{display:inline-block;height:4.2vw;line-height:4.2vw;vertical-align:middle;position:relative;padding-right:6.4vw}
     .pageTitle .step span:before{font-style:normal;font-size:5.2vw;vertical-align:text-top;margin-right:1vw}
@@ -366,6 +384,7 @@ li{list-style:none}
     .listWrap .cartItem .c2{top:2.2vw;height:10vw;width:58vw}
     .listWrap .cartItem .c2 .name{color:#22272e;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
     .listWrap .cartItem .c3{top:14vw;height:5vw}
+    .listWrap .cartItem .c3.confirm{top: 20.4vw;height: 5vw;left: 66.3vw;}
     .listWrap .cartItem .c4{bottom:2.2vw;height:5vw}
     .listWrap .cartItem .c5{position:absolute;right:3.3vw;bottom:2.2vw;height:6.4vw;line-height:6.4vw}
     .listWrap .cartItem .c10{color:#f94b4b;top:16vw;height:5vw}
@@ -435,7 +454,12 @@ li{list-style:none}
 
     /* 底部结算 */
     /*.listWrap{padding-bottom: 24vw;}*/
-    #shoppingConfirm .wrap{padding-bottom: 14vw;}
+    #shoppingConfirm .wrap{padding-bottom: 22.8vw;}
+    /* 底部结算 */
+    .summaryWrap .agreement{background:#FFFAF8}
+    .summaryWrap .agreement .agreement-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:8.8vw;color:#22272E;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:4.6vw;font-size: 3.4vw;}
+    .summaryWrap .agreement .agreement-content input{margin-right:2.4vw}
+    .summaryWrap .agreement span{color:#1890F9;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
     .summaryWrap{width:100%;background:#FFF;position: fixed;bottom: 0;left: 0;}
     .summaryWrap .summary{width:93vw;margin:0 auto;font-size:3.4vw;padding:1.5vw 0}
     .summaryWrap .summary em{font-style:normal}
@@ -454,7 +478,7 @@ li{list-style:none}
     .summaryWrap .summary .totalPrice span{color: #f55c5c;}
     .summaryWrap .summary .totalCoupon{font-size:3vw;line-height:5.1vw;color: #f55c5c;text-align: left;}
     .summaryWrap .summary .submit{display:inline-block;width:30.4vw;height:11.2vw;line-height:11.2vw;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF;float: right;}
-    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
+    .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:996;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
     .priceTotal{position:relative;text-align:right;margin-left:6.8vw;height:10.6vw;line-height:18vw;display:inline-block;}
     .priceTotal em{color:#f55c5c}
     .priceTotal .dl{position:absolute;right:0;top:3vw;cursor:pointer;height:5vw;line-height:5vw;font-size:3.1vw}
@@ -556,5 +580,12 @@ li{list-style:none}
     .confirm-Model .model-content .button a.cancel{background: #FFFFFF;border-color: #B8BFCA;color: #333333;}
     .confirm-Model .model-content .button a.confirm{background: #E15616;margin-bottom: 2vw}
 
+    /* 退货协议弹窗 */
+    .dialog-agreement-wrapper .mask{position:fixed;width:100vw;height:100vh;background:rgba(0,0,0,.7);left:0;top:0;z-index:998}
+    .dialog-agreement-wrapper .dialog-agreement{position:fixed;width:74.6vw;background:#fff;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:999;border-radius:1.6vw;}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-title{font-size:3.6vw;color:#4A4F58;font-weight:bold;text-align:center;padding:4.8vw 6vw;}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-content{font-size:3.4vw;color:#333333;text-align:justify;padding:2.4vw 6vw;line-height:6.4vw;max-height: 36vw;overflow-y: auto;}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-footer{padding:4.8vw 6vw;text-align:right}
+    .dialog-agreement-wrapper .dialog-agreement .dialog-footer .confirm{display: block;width: 100%; height:9.9vw;color:#fff;background:#E15616;text-align:center;line-height:9.9vw;border:0;}
 }
 

+ 3 - 2
src/main/resources/static/css/user-center/member/member-page.css

@@ -34,10 +34,10 @@
 .combo-list .pay-btn > a{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;height:100%;color:inherit}
 .combo-list .pay-btn > a:hover{color:unset}
 /*特权服务*/
-.service-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
+.service-list{margin-top: 15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
 .service-list>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}
 .service-list>div img{display:block;width:64px;height:64px}
-.service-list>div .tit{font-size:16px;font-weight:400;color:#333333;padding:16px 0 8px}
+.service-list>div .tit{font-size:16px;font-weight:400;color:#333333;padding:8px 0 8px}
 .service-list>div .sub-tit{font-size:14px;font-weight:400;color:#B8BFCA}
 /*优惠券*/
 .coupon-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
@@ -147,6 +147,7 @@
 .combo-list .pay-btn > a:hover{color:unset}
 /*特权服务*/
 .service-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;justify-content:space-evenly;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}
+.service-list.two{display: block;}
 .service-list>div{width:25%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-bottom:4.8vw}
 .service-list>div img{display:block;width:11.8vw;height:11.8vw}
 .service-list>div .tit{font-size:3.2vw;font-weight:400;color:#333333;padding:2.4vw 0 1.2vw}

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

@@ -117,6 +117,8 @@ li{list-style:none}
     .section-botton .price-total{text-align: right;color: #22272e;font-size: 16px;float: right;padding-top: 0;line-height: 36px;}
     .section-botton.fiexd{position: fixed;bottom: 0;right: 0;}
     .section-botton.fiexd .inner{width: 1184px;margin: 0 auto;z-index: 9999;}
+    /* 特殊商品退货须知 */
+    .return-instructions{padding: 16px 24px;background: #FFFAF8; color: #E15616; font-size: 14px;margin-bottom: 8px;line-height: 24px}
 }
 
 /**
@@ -191,7 +193,8 @@ li{list-style:none}
     .section-botton .btn.primary.confirm{line-height: 4.5vw;}
     .section-botton .btn.primary .tips{width: 12.6vw;height: 4.8vw;line-height: 4.8vw;text-align: center;border-radius: 2.4vw;background-color: #ffe6dc;font-size: 2.8vw;color: #E15616;position: absolute;right: -2vw;top: -6.5vw;z-index: 99;}
     .section-botton .btn.primary .tips:before{content: '';width: 6px;height: 6px;background-color: #ffe6dc;position: absolute;bottom: -3px;left: 12px;z-index: -1;transform:rotate(45deg);}
-
+    /* 特殊商品退货须知 */
+    .return-instructions{padding: 4vw 3.3vw;background: #FFFAF8; color: #E15616; font-size: 3.4vw;margin-top: 1.5vw; line-height: 5.6vw;}
 
 
 

BIN
src/main/resources/static/img/member/h5-cm-svip-icon6.png


BIN
src/main/resources/static/img/member/h5-cm-svip-icon8.png


BIN
src/main/resources/static/img/member/pc-cm-svip-icon6.png


BIN
src/main/resources/static/img/member/pc-cm-svip-icon8.png


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

@@ -30,6 +30,7 @@ var registerPage = new Vue({
             socialCreditCode:'',
             mainProduct:[],
             businessLicense:'',
+            linkManIdentity:0,
             shopPhoto:'',
             medicalPracticeLicense:'',
             firstClubType:0,
@@ -78,7 +79,8 @@ var registerPage = new Vue({
             email: '^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$',
             password: "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$"
         },
-        medicalPracticeLicenseFlag: false
+        medicalPracticeLicenseFlag: false,
+        userName:''
     },
     computed: {
 
@@ -199,7 +201,13 @@ var registerPage = new Vue({
             var pass = verifyForm();
             if (_self.loginLoading) { return false; }
             this.$nextTick(function() {
-                if (!pass) {return false;}
+                if (!pass) { this.scrollIntoView(); return false;}
+                if(_self.clubUpgradeUser.linkManIdentity === 0){
+                    $('#userNameType').parent().addClass("error");
+                    $('#userNameType').siblings('.errTips').text('请选择联系人身份').addClass("show");
+                    _self.scrollIntoView();
+                    return  false;
+                }
                 if(_self.clubUpgradeUser.cityId == ''){
                     CAIMEI.dialog('请选择市级地区',false);
                     return ;
@@ -230,11 +238,13 @@ var registerPage = new Vue({
                         return  false;
                     }
                 }
-                if(_self.userMainPros.length === 0){
-                    $('#business').siblings('.errTips').text('请选择或添加主营产品').addClass("show");
-                    return false;
+                if(Number(_self.clubUpgradeUser.firstClubType) === 1 || Number(_self.clubUpgradeUser.firstClubType) === 2){
+                    if(_self.userMainPros.length === 0){
+                        $('#business').siblings('.errTips').text('请选择或添加主营产品').addClass("show");
+                        return false;
+                    }
+                    _self.clubUpgradeUser.mainProduct = _self.userMainPros.join("/");
                 }
-                _self.clubUpgradeUser.mainProduct = _self.userMainPros.join("/");
                 _self.loginLoading = true;
                 UserApi.ClubUpgrade(_self.clubUpgradeUser,function (response) {
                     if(response.code === 0){
@@ -256,6 +266,7 @@ var registerPage = new Vue({
                 if(response.code === 0){
                     _self.clubUpgradeUser.userId =  response.data.userId;
                     _self.clubUpgradeUser.clubId =  response.data.clubId;
+                    _self.userName = response.data.userName;
                     _self.userData = {
                         account: response.data.account,
                         email: response.data.email,
@@ -280,6 +291,10 @@ var registerPage = new Vue({
             $('#secondShopType').parent().removeClass("error");
             $('#firstClubType').siblings('.errTips').removeClass("show");
         },
+        changeUserNameType:function(event){
+            $('#userNameType').parent().removeClass("error");
+            $('#userNameType').siblings('.errTips').removeClass("show");
+        },
         refreshCodeImage:function(){
             this.getMobileImage()
         },
@@ -458,6 +473,9 @@ var registerPage = new Vue({
         showViewerImageFn2:function(){//预览资质图片
             var viewer = new Viewer(document.getElementById('medicalPracticeLicenseImg'));
         },
+        scrollIntoView: function(){
+            document.getElementById('registerPage').scrollIntoView({block: 'start', behavior: 'smooth'});
+        },
     },
     created: function () {
 

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

@@ -61,7 +61,8 @@ var payContainer = new Vue({
         vipRecordId: undefined,
         couponRecordId:undefined,
         couponId:undefined,
-        userId:0
+        userId:0,
+        orderId:0
     },
     filters: {
         NumFormat:function(value) {
@@ -105,6 +106,7 @@ var payContainer = new Vue({
                     _self.payInfo.payAmount = (data.shopOrder.realPay - data.shopOrder.receiptAmount).toFixed(2);
                     _self.discernReceiptList = data.discernReceipt;// 支付记录
                     _self.payInfo.obligation = data.shopOrder.obligation;
+                    _self.orderId =  data.shopOrder.orderId;// 主订单Id
                     _self.obligation =  data.shopOrder.obligation;// 待付金额
                     _self.payableAmount =  data.shopOrder.realPay;
                     _self.receiptAmount =  data.shopOrder.receiptAmount;
@@ -152,8 +154,8 @@ var payContainer = new Vue({
                             CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
                             return;
                         }
-                        CAIMEI.Alert('线上支付功能正在维护中,请前往订单详情页面查看线下转账方式进行付款','确定',true,function(){
-                            window.location.href='/user/order/detail.html?orderId='+_self.payInfo.shopOrderId;
+                        CAIMEI.Alert('线上支付功能正在维护中,请前往查看线下转账方式进行付款','确定',true,function(){
+                            window.location.href= '/pay/caimei-payunder.html?orderId='+_self.orderId;
                         });
                     }
                 }else{

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

@@ -70,7 +70,9 @@ var productDetail = new Vue({
         totalPrice:0,  // 勾选配套商品总价格
         totalNumber:0, // 勾选配套商品总数量
         isShowCaimeiShop:false,
-        isHideButton:false
+        isHideButton:false,
+        returnGoodsStutas: false, // 当前商品是否为特殊商品
+        helpContent: '' // 退货提示
     },
     filters: {
         TypeFormat: function (value) {
@@ -188,6 +190,8 @@ var productDetail = new Vue({
                     _self.recommendType = product.recommendType ? product.recommendType : 0;
                     _self.archiveId = product.archiveId; // 保存资料列表id
                     _self.productDetailChose = product.productDetailChose; // 同资质机构显示商品详情
+                    _self.returnGoodsStutas = product.returnGoodsStutas === 2 // 当前商品是否为特殊商品 1不是 2是
+                    _self.helpContent = product.helpContent
                     if(product.tinyTypeName){
                         $pageLabel = product.tinyTypeName
                     }else if(!product.tinyTypeName && product.smallTypeName){

+ 41 - 13
src/main/resources/static/js/shopping/confirm.js

@@ -126,7 +126,11 @@ var shoppingConfirm = new Vue({
         svipReducedPrice: 0, //超级会员优惠金额
         isModelAlert:false, // 订单不足提示弹窗
         isModelAlertText:'',
-        isShowConfirm:true
+        isShowConfirm:true,
+        showAgreement: false, // 特殊商品退货须知弹窗
+        returnGoodsStutas: false, // 当前商品是否为特殊商品
+        helpContent: '', // 退货提示
+        agreementActive: false
     },
     computed: {
 
@@ -160,7 +164,23 @@ var shoppingConfirm = new Vue({
             }
         }
     },
+    watch:{
+        returnGoodsStutas(nval){
+            this.$nextTick(function(){
+                // 底部导航栏高度不一致问题
+                var height = $('#shoppingConfirm .summaryWrap').height() + 'px'
+                if(isPC){
+                    $('#shoppingConfirm .summary-wrapper').css('height', height)
+                }else{
+                    $('#shoppingConfirm .wrap').css('padding-bottom', height)
+                }
+            })
+        }
+    },
     methods: {
+        handleCheckboxChange: function(){
+            console.log(this.agreementActive)
+        },
         blurHandle: function(event) {
             var el = event.currentTarget;
             verifyHandle(el);
@@ -211,6 +231,8 @@ var shoppingConfirm = new Vue({
             _self.svipReducedPrice = data.svipReducedPrice;
             _self.postageParam.skuIds =  _self.getProductIds(data.list); // 获取订单商品id列表 以 , 隔开
             _self.getAddressList(_self.userId,20);
+            _self.returnGoodsStutas = data.returnGoodsStutas === 2 // 当前商品是否为特殊商品 1不是 2是
+            _self.helpContent = data.helpContent
             console.log('邮费接口数据',  _self.postageParam)
             if( data.couponList &&  data.couponList.length>0){
                 _self.isCouponShow = true;
@@ -660,10 +682,12 @@ var shoppingConfirm = new Vue({
         },
         submitOrder: function(){// 提交按钮点击
             var _self = this;
-            if( _self.totalPrice<1000){
+            if (_self.returnGoodsStutas && !_self.agreementActive) {
+                CAIMEI.Alert('请先阅读《特殊商品退货须知》并勾选后再提交订单~', '确定', false);
+            } else if (_self.totalPrice < 1000) {
                 _self.isModelAlert = true;
                 _self.isModelAlertText = '采购金额过小,将扣除500采美豆。建议您使用微信扫描 以下二维码,进入采美旗下“颜选美学”小程序购买小额 商品。';
-            }else{
+            } else {
                 _self.handleClickOrderSubmitMit()
             }
         },
@@ -837,16 +861,20 @@ var shoppingConfirm = new Vue({
         }
     },
     mounted: function () {
-        var _self = this;
-        var minAwayBtm = $("footer").height();
-        //处理滚动条控制底部提交fixed
-        $(window).scroll(function() {
-            var awayBtm = $(document).height() - $(window).scrollTop() - $(window).height();
-            if(minAwayBtm <= awayBtm){
-                $(".summaryWrap").addClass('fixed');
-            }else{
-                $(".summaryWrap").removeClass("fixed");
+        // 底部导航栏悬浮
+        $(window).on('scroll', function(){
+            if($(window).scrollTop() + window.innerHeight > $('footer').offset().top){
+                $("#shoppingConfirm .summaryWrap").removeClass('fixed');
+            } else{
+                $("#shoppingConfirm .summaryWrap").addClass("fixed");
             }
-        });
+        })
+        // 底部导航栏高度不一致问题
+        var height = $('#shoppingConfirm .summaryWrap').height() + 'px'
+        if(isPC){
+            $('#shoppingConfirm .summary-wrapper').css('height', height)
+        }else{
+            $('#shoppingConfirm .wrap').css('padding-bottom', height)
+        }
     }
 });

+ 1 - 1
src/main/resources/static/js/supplier-center/article/article-list.js

@@ -114,7 +114,7 @@ var articleList = new Vue({
                 if (res.code === 0) {
                     // 不刷新数据更新
                     article.status = newStatus;
-                    const tip = newStatus ? '文章已发布' : '文章已存入草稿箱';
+                    const tip = newStatus ? '文章已发布' : '文章暂不发布';
                     CAIMEI.dialog(tip);
                 } else {
                     CAIMEI.dialog('修改文章状态失败!');

+ 2 - 2
src/main/resources/static/js/supplier-center/encyclopedia/list.js

@@ -89,7 +89,7 @@ const list = new Vue({
         handleStorageEntry(item) {
             const self = this
             shopBikeApi.UpdateEntryStatus({id: item.id, status: 0}, function (res) {
-                CAIMEI.dialog('词条已保存到草稿箱', false);
+                CAIMEI.dialog('词条暂不发布', false);
                 self.getList()
             })
         },
@@ -129,4 +129,4 @@ const list = new Vue({
         }
     }
 
-})
+})

+ 14 - 8
src/main/resources/static/js/user-center/member/memberPage.js

@@ -8,7 +8,7 @@ var serviceList = [
     },
     {
         name: '专属优惠券',
-        subTitle: '每月可领',
+        subTitle: '每三个月可领',
         pcIcon:'/img/member/pc-cm-svip-icon2.png',
         h5Icon:'/img/member/h5-cm-svip-icon2.png'
     },
@@ -37,8 +37,8 @@ var serviceList = [
         h5Icon:'/img/member/h5-cm-svip-icon5.png'
     },
     {
-        name: '快速发货',
-        subTitle: '会员加速',
+        name: '新品试用',
+        subTitle: '新品可优先试用',
         pcIcon:'/img/member/pc-cm-svip-icon6.png',
         h5Icon:'/img/member/h5-cm-svip-icon6.png'
     },
@@ -48,16 +48,22 @@ var serviceList = [
         pcIcon:'/img/member/pc-cm-svip-icon7.png',
         h5Icon:'/img/member/h5-cm-svip-icon7.png'
     }
+
 ];
 var memberPage = new Vue({
     el: '#memberPage',
     mixins: [cmSysVitaMixins],
     data: {
         serviceList: serviceList, // 服务列表
-        comboInfo: [
-            {duration:12,price:1800},
-            {duration:3,price:600}
-        ], // svip套餐信息
+        serviceList2: [
+            {
+                name: '分期付',
+                subTitle: '热门商品分期付',
+                pcIcon:'/img/member/pc-cm-svip-icon8.png',
+                h5Icon:'/img/member/h5-cm-svip-icon8.png'
+            }
+        ], // 服务列表
+        comboInfo: [], // svip套餐信息
         showMask: false, // 遮罩层
         showRenewPopup: false, // 续费弹窗
         showConfirmPopup: false, // 支付确认弹窗
@@ -91,7 +97,7 @@ var memberPage = new Vue({
         },
     },
     mounted: function () {
-        // this.fetchSuperPackage();
+        this.fetchSuperPackage();
         this.initCenter();
         this.getSvipProductList();
         this.setBottomBtnsVisiable();

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

@@ -18,7 +18,9 @@ var orderPage = new Vue({
         isShowBeansAlet:false,
         bgImagePath:'',//根据类型显示图片标记
         beanNumber:100,
-        beansType:7
+        beansType:7,
+        returnGoodsStutas: false, // 当前商品是否为特殊商品 1是 2不是
+        helpContent: '' // 退货提示
     },
     filters: {
         NumFormat:function(text) {//处理金额
@@ -83,6 +85,8 @@ var orderPage = new Vue({
                     _self.returnedPurchaseList = data.returnedPurchaseList;
                     _self.orderIdentificationId = '#'+ _self.orderInfo.orderId+'#';
                     _self.isRequset = false;
+                    _self.returnGoodsStutas = data.returnGoodsStutas === 2 // 当前商品是否为特殊商品 1不是 2是
+                    _self.helpContent = data.helpContent
                 }else{
                     CAIMEI.Alert(response.msg, '确定', true,function () {
                         location.href = '/user/dashboard.html';

+ 19 - 3
src/main/resources/static/js/user-center/setting/information.js

@@ -42,7 +42,8 @@ var informationPage = new Vue({
             mainProduct:[],             //主营内容
             fax:'',                 //传真
             contractPhone:'',       //固定电话
-            profile : ''               //公司简介
+            profile : '',               //公司简介
+            linkManIdentity:0         //联系人身份
         },
         userMainPros:[],
         formData:new FormData(),
@@ -107,7 +108,7 @@ var informationPage = new Vue({
         infoInformationData:function(){
             var _self = this;
             UserApi.GetApplicationData({userId:_self.userId},function (response) {
-                if(response.code == 0){
+                if(response.code === 0){
                     var data = response.data;
                     _self.isRequset = false;
                     _self.clubUpgradeUser = data.club;
@@ -119,6 +120,7 @@ var informationPage = new Vue({
                     _self.addressfrom.provinceId = data.club.provinceId ? data.club.provinceId : 0;
                     _self.addressfrom.cityId = data.club.cityId ? data.club.cityId : '';
                     _self.addressfrom.townId = data.club.townId ? data.club.townId : '';
+                    _self.clubUpgradeUser.linkManIdentity = data.club.linkManIdentity ? data.club.linkManIdentity : 0;
                     _self.clubUpgradeUser.provinceId = data.club.provinceId ? data.club.provinceId : '';
                     _self.clubUpgradeUser.cityId = data.club.cityId ? data.club.cityId : '';
                     _self.clubUpgradeUser.townId= data.club.townId ? data.club.townId : '';
@@ -128,7 +130,7 @@ var informationPage = new Vue({
                     _self.clubUpgradeUser.secondClubType = data.club.secondClubType ? data.club.secondClubType :'';
                     _self.clubUpgradeUser.address = data.club.address ? data.club.address : null;
                     _self.firstClubType = _self.clubUpgradeUser.firstClubType;
-                    if( _self.clubUpgradeUser.firstClubType == 1){
+                    if( _self.clubUpgradeUser.firstClubType === 1){
                         if(data.club.mainProduct){
                             _self.userMainPros = _self.setNewMainpro(data.club.mainProduct);
                             _self.medicaCampNullList = _self.setNewMainProduct(_self.userMainPros);
@@ -161,6 +163,12 @@ var informationPage = new Vue({
             var pass = verifyForm();
             if (!pass) {return false;}
             if(_self.userIdentity === 2) {
+                if(!_self.clubUpgradeUser.linkManIdentity){
+                    $('#userNameType').parent().addClass("error");
+                    $('#userNameType').siblings('.errTips').text('请选择联系人身份').addClass("show");
+                    _self.scrollIntoView();
+                    return  false;
+                }
                 if (_self.clubUpgradeUser.townId == 0 || _self.clubUpgradeUser.address == '') {
                     _self.flagshow = true;
                     setTimeout(function () {
@@ -220,6 +228,7 @@ var informationPage = new Vue({
                     clubId: _self.clubUpgradeUser.clubId,				//会所Id
                     name: _self.clubUpgradeUser.name,
                     linkMan: _self.clubUpgradeUser.linkMan,
+                    linkManIdentity: _self.clubUpgradeUser.linkManIdentity,
                     shortName: _self.clubUpgradeUser.shortName,
                     contractEmail: _self.clubUpgradeUser.contractEmail,
                     provinceId: _self.clubUpgradeUser.provinceId,
@@ -450,6 +459,13 @@ var informationPage = new Vue({
         showViewerImageFn2:function(){//预览资质图片
             var viewer = new Viewer(document.getElementById('medicalPracticeLicenseImg'));
         },
+        changeUserNameType:function(event){
+            $('#userNameType').parent().removeClass("error");
+            $('#userNameType').siblings('.errTips').removeClass("show");
+        },
+        scrollIntoView: function(){
+            document.getElementById('informationPage').scrollIntoView({block: 'start', behavior: 'smooth'});
+        },
     },
     mounted: function () {
         var _self = this;

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

@@ -21,7 +21,8 @@ var upgradePage = new Vue({
             provinceId :'',
             cityId : '',
             townId : '',
-            address:''
+            address:'',
+            linkManIdentity:0
         },
         userMainPros:[],
         formData:new FormData(),
@@ -65,7 +66,8 @@ var upgradePage = new Vue({
         secondtypeflag:false,
         mproflag:false,
         userMainProflag:false,
-        medicalPracticeLicenseFlag: false
+        medicalPracticeLicenseFlag: false,
+        userName:''
     },
     computed: {
 
@@ -79,15 +81,17 @@ var upgradePage = new Vue({
         infoInformationData:function(){//机构资料初始化
             var _self = this;
             UserApi.GetApplicationData({userId:_self.clubUpgradeUser.userId},function (response) {
-                if(response.code == 0){
+                if(response.code === 0){
                     var data = response.data;
                     _self.isRequset = false;
                     _self.clubUpgradeUser = data.club;
                     _self.userIdentity = data.user.userIdentity;
+                    _self.userName = data.user.userName;
                     _self.clubUpgradeUser.clubId = data.user.clubId;
                     _self.clubUpgradeUser.userId = data.user.userId;
                     _self.clubUpgradeUser.contractEmail = data.club.contractEmail;
                     _self.clubUpgradeUser.provinceId = data.club.provinceId;
+                    _self.clubUpgradeUser.linkManIdentity = data.club.linkManIdentity ? data.club.linkManIdentity : 0;
                     _self.clubUpgradeUser.cityId = data.club.cityId;
                     _self.clubUpgradeUser.townId= data.club.townId;
                     _self.clubUpgradeUser.shopPhoto = data.club.shopPhoto;
@@ -95,14 +99,14 @@ var upgradePage = new Vue({
                     _self.clubUpgradeUser.firstClubType = data.club.firstClubType;
                     _self.clubUpgradeUser.secondClubType = data.club.secondClubType;
                     _self.clubUpgradeUser.address = data.club.address;
-                    if( _self.clubUpgradeUser.firstClubType == 1){
+                    if( _self.clubUpgradeUser.firstClubType === 1){
                         if(data.club.mainProduct){
                             _self.userMainPros = _self.setNewMainpro(data.club.mainProduct);
                             _self.medicaCampNullList = _self.setNewMainProduct(_self.userMainPros);
                         }else{
                             _self.userMainPros = _self.medicaCampNullList;
                         }
-                    }else if(_self.clubUpgradeUser.firstClubType == 2){
+                    }else if(_self.clubUpgradeUser.firstClubType === 2){
                         if(data.club.mainProduct){
                             _self.userMainPros = _self.setNewMainpro(data.club.mainProduct);
                             _self.mentuzCampNullList = _self.setNewMainProduct(_self.userMainPros);
@@ -118,12 +122,12 @@ var upgradePage = new Vue({
                     if(data.club.provinceId ==null){
                          _self.clubUpgradeUser.provinceId = 0;
                      }
-                    if(data.club.cityId!=''&&data.club.cityId!=null){
+                    if(data.club.cityId!==''&&data.club.cityId!=null){
                         _self.getcity();
                     }else {
                          _self.clubUpgradeUser.cityId = 0
                     }
-                    if(data.club.townId!=''&&data.club.townId!=null){
+                    if(data.club.townId!==''&&data.club.townId!=null){
                         _self.getcTown();
                     }else {
                          _self.clubUpgradeUser.townId = 0
@@ -136,11 +140,18 @@ var upgradePage = new Vue({
         SubComfirUpgradeFn:function() {//升级会员机构
             var _self = this;
             var pass = verifyForm();
-            if (!pass) {return false;}
+            if (!pass) { this.scrollIntoView(); return false;}
+            if(!_self.clubUpgradeUser.linkManIdentity){
+                $('#userNameType').parent().addClass("error");
+                $('#userNameType').siblings('.errTips').text('请选择联系人身份').addClass("show");
+                _self.scrollIntoView();
+                return  false;
+            }
             if(_self.clubUpgradeUser.townId==0||_self.clubUpgradeUser.address==''){
                 _self.flagshow = true;
                 setTimeout(function () {
                     _self.flagshow = false;
+                    _self.scrollIntoView();
                 },2000)
                 return;
             }
@@ -198,6 +209,7 @@ var upgradePage = new Vue({
                     clubId:_self.clubUpgradeUser.clubId,				//会所Id
                     name:_self.clubUpgradeUser.name,
                     linkMan:_self.clubUpgradeUser.linkMan,
+                    linkManIdentity:_self.clubUpgradeUser.linkManIdentity,
                     shortName:_self.clubUpgradeUser.shortName,
                     contractEmail:_self.clubUpgradeUser.contractEmail,
                     provinceId:_self.clubUpgradeUser.provinceId,
@@ -420,6 +432,10 @@ var upgradePage = new Vue({
                 }
             })
         },
+        changeUserNameType:function(event){
+            $('#userNameType').parent().removeClass("error");
+            $('#userNameType').siblings('.errTips').removeClass("show");
+        },
         showViewerImageFn:function(){//预览营业执照图片
             var viewer = new Viewer(document.getElementById('businessLicenseImage'));
         },
@@ -429,6 +445,9 @@ var upgradePage = new Vue({
         showViewerImageFn2:function(){//预览资质图片
             var viewer = new Viewer(document.getElementById('medicalPracticeLicenseImg'));
         },
+        scrollIntoView: function(){
+            document.getElementById('upgradePage').scrollIntoView({block: 'start', behavior: 'smooth'});
+        },
     },
     created: function () {
 

+ 8 - 4
src/main/resources/static/js/utils.js

@@ -178,7 +178,6 @@ CAIMEI.Popup = function(params,confirmCallback, cancelCallback){
  * @auth zhjy
  */
 CAIMEI.Alert = function(content,confitmText,flg,callback){
-    document.body.style.overflow = 'hidden';
     $.confirm({
         boxWidth: (isPC?'300px':'70%'),
         title:'提示',
@@ -193,12 +192,17 @@ CAIMEI.Alert = function(content,confitmText,flg,callback){
                 text: confitmText,
                 btnClass: 'btn-confirm',
                 action:function () {
-                    document.body.style.overflow = 'auto';
                     if(flg){
                         callback();
                     }
                 }
-            }
+            },
+        },
+        onOpen(){
+            document.body.style.overflow = 'hidden';
+        },
+        onClose(){
+            document.body.style.overflow = 'auto';
         }
     });
 };
@@ -373,4 +377,4 @@ function debounce(func, wait = 200, immediate = false) {
         }
         return result
     }
-}
+}

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

@@ -72,6 +72,17 @@
         <div class="registerClub clear">
             <!--机构注册表单-->
             <form>
+                <div class="formLine">
+                    <p style="padding-left: 8px">联系人:{{ userName }}</p>
+                </div>
+                <div class="formLine">
+                    <p id="userNameType"><em>*</em>联系人身份:</p>
+                    <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="1"  @change="changeUserNameType"><i class="icon mIcon">老板</i></label>
+                    <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="2" checked  @change="changeUserNameType"><i class="icon mIcon">采购</i></label>
+                    <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="3" checked  @change="changeUserNameType"><i class="icon mIcon">运营</i></label>
+                    <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="4" checked  @change="changeUserNameType"><i class="icon mIcon">其他</i></label>
+                    <span class="errTips icon mIcon" tips="请选择联系人身份"></span>
+                </div>
                 <div class="formLine">
                     <p><em>*</em>邮箱<span>(邮箱可用作登录账号,请使用公司邮箱或法人邮箱)</span>:</p>
                     <input type="text" v-model.trim="clubUpgradeUser.contractEmail" placeholder="请输入邮箱地址" :rule="rule.email" maxlength="32" @blur="blurHandle($event)" needverify>

+ 1 - 0
src/main/resources/templates/encyclopedia/detail.html

@@ -109,6 +109,7 @@
                     </th:block>
                 </ul>
             </div>
+            <div class="bk-remarks">声明:该文观点仅代表作者本人,采美百科系信息发布平台,采美百科仅提供信息存储空间服务。</div>
             <div class="bk-pv">
                 <div class="bk-pv-item">浏览次数:<span th:text="*{pv}"></span></div>
                 <div class="bk-pv-item" th:text="*{publishTimeStr}"></div>

+ 11 - 1
src/main/resources/templates/product/detail.html

@@ -578,6 +578,11 @@
                 <span>满意度:<em><i th:each="i:${#numbers.sequence(1,5)}" class="mIcon heart"></i></em></span>
             </a>
         </div>
+        <!-- 特殊商品退货须知 -->
+        <div class="return-instructions" v-if="!isPC && returnGoodsStutas">
+            <div class="hd">特殊商品退货须知</div>
+            <div class="bd" v-html="helpContent"></div>
+        </div>
         <div class="productInfo">
             <div class="tabTit">
                 <span :class="tabsIndex == 0 ? 'on' : ''" @click="detailsClicktab(0)">商品详情</span>
@@ -771,7 +776,7 @@
                     </template>
                 </div>
             </div>
-            <div class="contact">
+            <div class="contact section">
                 <div class="hd">联系方式</div>
                 <div class="bd">
                     <div>采美客服(转接供应商)</div>
@@ -780,6 +785,11 @@
                     <div>153-3885-1365</div>
                 </div>
             </div>
+            <!-- 特殊商品退货须知 -->
+            <div class="return-instructions section" v-if="returnGoodsStutas">
+                <div class="hd">特殊商品退货须知</div>
+                <div class="bd" v-html="helpContent"></div>
+            </div>
         </div>
         <!--优惠券弹窗-->
         <template v-if="GLOBAL_USER_ID>0">

+ 29 - 12
src/main/resources/templates/shopping/confirm.html

@@ -145,7 +145,7 @@
                             <span v-text="cart.name"></span>
                         </a>
                     </div>
-                    <div class="c5">{{cart.unit}}</div>
+                    <div class="c3 confirm">{{cart.unit}}</div>
                     <div class="c4">
                         <div class="price">
                             <template v-if="cart.svipProductFlag == 1">
@@ -361,19 +361,24 @@
             </p>
         </div>
     </div>
-    <div class="summaryWrap">
-        <div class="summary">
-            <div v-if="isPC" class="left">
-                <div class="item">
-                    <a href="/shopping/cart.html" class="back" rel="nofollow"><i class="icon mIcon"></i>返回购物车</a>
-                </div>
+    <div class="summary-wrapper">
+        <div class="summaryWrap fixed">
+            <div class="agreement" v-if="returnGoodsStutas">
+                <div class="agreement-content"><input type="checkbox" v-model="agreementActive" @change="handleCheckboxChange"/>提交订单前,请先阅读<span  @click="showAgreement = true">《特殊商品退货须知》</span></div>
             </div>
-            <div class="right mfbt">
-                <div class="totalMoney">
-                    <div class="totalPrice" :class="totalDiscountAmount == 0 ? 'none' : ''">总价:<span>¥{{hanldShouldPayFee | NumFormat}}</span></div>
-                    <div class="totalCoupon" v-if="totalDiscountAmount > 0">共减:¥{{ totalDiscountAmount | NumFormat }}</div>
+            <div class="summary">
+                <div v-if="isPC" class="left">
+                    <div class="item">
+                        <a href="/shopping/cart.html" class="back" rel="nofollow"><i class="icon mIcon"></i>返回购物车</a>
+                    </div>
+                </div>
+                <div class="right mfbt">
+                    <div class="totalMoney">
+                        <div class="totalPrice" :class="totalDiscountAmount == 0 ? 'none' : ''">总价:<span>¥{{hanldShouldPayFee | NumFormat}}</span></div>
+                        <div class="totalCoupon" v-if="totalDiscountAmount > 0">共减:¥{{ totalDiscountAmount | NumFormat }}</div>
+                    </div>
+                    <a :class="submitLoading?'submit dis':'submit'" href="javascript:void(0);" @click="submitOrder()" onclick="_czc.push(['_trackEvent','确认订单','点击','用户提交订单','','Um_Event_ConfirmOrder'])">提交订单</a>
                 </div>
-                <a :class="submitLoading?'submit dis':'submit'" href="javascript:void(0);" @click="submitOrder()" onclick="_czc.push(['_trackEvent','确认订单','点击','用户提交订单','','Um_Event_ConfirmOrder'])">提交订单</a>
             </div>
         </div>
     </div>
@@ -429,6 +434,18 @@
             </div>
         </div>
     </div>
+
+    <!--  退货协议弹窗  -->
+    <div class="dialog-agreement-wrapper" v-if="showAgreement">
+        <div class="mask"></div>
+        <div class="dialog-agreement">
+            <div class="dialog-title">特殊商品退货须知</div>
+            <div class="dialog-content" v-html="helpContent"></div>
+            <div class="dialog-footer">
+                <button class="confirm" @click="showAgreement = false">确定</button>
+            </div>
+        </div>
+    </div>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

+ 2 - 2
src/main/resources/templates/supplier-center/article/article-edit.html

@@ -116,14 +116,14 @@
                                 <span class="cm-label"><em>*</em>状态:</span>
                                 <el-radio-group v-model="formData.status">
                                     <el-radio :label="1">发布</el-radio>
-                                    <el-radio :label="0">保存草稿箱</el-radio>
+                                    <el-radio :label="0">暂不发布</el-radio>
                                 </el-radio-group>
                             </el-form-item>
                         </el-form>
                         <!-- 提交 -->
                         <div class="form-item btns">
                             <button class="btn break" @click="handleBack">返回</button>
-                            <button class="btn submit" @click="handleSave">保存</button>
+                            <button class="btn submit" @click="handleSave">提交</button>
                         </div>
                     </div>
                 </div>

+ 2 - 2
src/main/resources/templates/supplier-center/article/article-list.html

@@ -146,11 +146,11 @@
                                 </td>
                                 <td>
                                     <span class="state primary" v-if="articleInfo.status === 1">已发布</span>
-                                    <span class="state danger" v-else>保存草<br>稿箱</span>
+                                    <span class="state danger" v-else>暂不发布</span>
                                 </td>
                                 <td class="option">
                                     <div class="option">
-                                        <button class="form-button stop" @click="clickOption(articleInfo, 2)">{{ articleInfo.status === 1 ? '保存草稿箱':'发布' }}</button>
+                                        <button class="form-button stop" @click="clickOption(articleInfo, 2)">{{ articleInfo.status === 1 ? '暂不发布':'发布' }}</button>
                                         <button class="form-button edit" @click="clickOption(articleInfo, 1)">编辑</button><br>
                                         <button class="form-button search" @click="clickOption(articleInfo, 3)">查看</button>
                                         <button class="form-button delete" @click="clickOption(articleInfo, 4)">删除</button>

+ 4 - 4
src/main/resources/templates/supplier-center/encyclopedia/edit.html

@@ -99,8 +99,8 @@
                                     </content-edit>
                                 </template>
                                 <div class="bk-section">
-                                    <span @click="handleAddTextInfo(index, 1)">+一级目录</span>
-                                    <span @click="handleAddTextInfo(index, 2)">+二级目录</span>
+                                    <span @click="handleAddTextInfo(index, 1)">+一级标题</span>
+                                    <span @click="handleAddTextInfo(index, 2)">+二级标题</span>
                                     <span @click="handleAddTextInfo(index, 3)">+内容</span>
                                     <span class="delete" @click="handleRemoveTextInfo(index)" v-if="formData.textInfoList.length > 3">删除</span>
                                 </div>
@@ -139,7 +139,7 @@
                                 <label class="el-form-item__label">状态:</label>
                                 <el-radio-group v-model="formData.status">
                                     <el-radio :label="1">发布</el-radio>
-                                    <el-radio :label="0">保存草稿箱</el-radio>
+                                    <el-radio :label="0">暂不发布</el-radio>
                                 </el-radio-group>
                             </div>
                         </el-form-item>
@@ -148,7 +148,7 @@
                     </el-form>
                     <div class="bk-control">
                         <button class="bk-back" @click="handleBack">返回</button>
-                        <button class="bk-confirm" @click="handleConfirm">保存</button>
+                        <button class="bk-confirm" @click="handleConfirm">提交</button>
                     </div>
                 </div>
             </div>

+ 3 - 3
src/main/resources/templates/supplier-center/encyclopedia/list.html

@@ -119,11 +119,11 @@
                             <div class="bk-td">{{item.addTime | dateFormat}}</div>
                             <template>
                                 <div class="bk-td" v-if="item.status === 1">已发布</div>
-                                <div class="bk-td bk-primary" v-if="item.status === 0">保存草稿箱</div>
+                                <div class="bk-td bk-primary" v-if="item.status === 0">暂不发布</div>
                             </template>
                             <div class="bk-td">
                                 <template v-if="item.status === 1">
-                                    <button @click="handleStorageEntry(item)">保存草稿箱</button>
+                                    <button @click="handleStorageEntry(item)">暂不发布</button>
                                 </template>
                                 <template v-if="item.status === 0">
                                     <button @click="handlePublishEntry(item)">发布</button>
@@ -166,4 +166,4 @@
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/shopBaike.service.js(v=${version})}"></script>
 <script charset="UTF-8" type="text/javascript" th:src="@{/js/supplier-center/encyclopedia/list.js(v=${version})}"></script>
 </body>
-</html>
+</html>

+ 51 - 40
src/main/resources/templates/user-center/member/member.html

@@ -49,26 +49,24 @@
                                     </div>
                                 </template>
                             </div>
-                            <div>
-                                <p class="copy-p">使用微信扫描二维码,联系采美客服进行购买</p>
-                            </div>
-                            <div>
-                                <div class="wechat-image">
-                                    <img src="/img/base/Wecha.png" alt="">
-                                </div>
-                            </div>
+<!--                            <div><p class="copy-p">使用微信扫描二维码,联系采美客服进行购买</p></div>-->
 <!--                            <div>-->
-<!--                                <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付1','','Um_Event_RegisterSuperPayOne'])">-->
-<!--                                    <a href="javascript:void(0);" @click="payAction(1, 1)">-->
-<!--                                        立即支付{{ comboInfo[currentIndex].price }}元开通-->
-<!--                                    </a>-->
-<!--                                </div>-->
-<!--                                <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣1','','Um_Event_RegisterSuperByBeansOne'])">-->
-<!--                                    <a href="javascript:void(0);" @click="payAction(2, 1)">-->
-<!--                                        或抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通-->
-<!--                                    </a>-->
+<!--                                <div class="wechat-image">-->
+<!--                                    <img src="/img/base/Wecha.png" alt="">-->
 <!--                                </div>-->
 <!--                            </div>-->
+                            <div>
+                                <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付1','','Um_Event_RegisterSuperPayOne'])">
+                                    <a href="javascript:void(0);" @click="payAction(1, 1)">
+                                        立即支付{{ comboInfo[currentIndex].price }}元开通
+                                    </a>
+                                </div>
+                                <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣1','','Um_Event_RegisterSuperByBeansOne'])">
+                                    <a href="javascript:void(0);" @click="payAction(2, 1)">
+                                        或抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通
+                                    </a>
+                                </div>
+                            </div>
                         </template>
                         <span v-else>暂无可选套餐~</span>
                     </div>
@@ -76,20 +74,33 @@
                 <!--服务列表-->
                 <div class="section">
                     <div class="section-title">专属特权</div>
-                    <div class="content service-list">
-                        <div v-for="(item, index) in serviceList" :key="index">
-                            <img :src="item.pcIcon"
-                                 v-if="isPC"/>
-                            <img :src="item.h5Icon"
-                                 v-else/>
-                            <span class="tit" v-html="item.name"></span>
-                            <span class="sub-tit" v-html="item.subTitle"></span>
+                    <div class="content">
+                        <div class="service-list">
+                            <div v-for="(item, index) in serviceList" :key="index">
+                                <img :src="item.pcIcon"
+                                     v-if="isPC"/>
+                                <img :src="item.h5Icon"
+                                     v-else/>
+                                <span class="tit" v-html="item.name"></span>
+                                <span class="sub-tit" v-html="item.subTitle"></span>
+                            </div>
+                        </div>
+                        <div class="service-list two">
+                            <div v-for="(item, index) in serviceList2" :key="index">
+                                <img :src="item.pcIcon"
+                                     v-if="isPC"/>
+                                <img :src="item.h5Icon"
+                                     v-else/>
+                                <span class="tit" v-html="item.name"></span>
+                                <span class="sub-tit" v-html="item.subTitle"></span>
+                                <span class="sub-tit">(年卡专享)</span>
+                            </div>
                         </div>
                     </div>
                 </div>
                 <!--优惠券列表-->
                 <div class="section" v-if="couponList.length > 0">
-                    <div class="section-title">专属优惠券<span>每月可领4个</span></div>
+                    <div class="section-title">专属优惠券<span>每三个月可领4张</span></div>
                     <div class="content coupon-list">
                         <template v-if="couponList.length > 0">
                             <div v-for="(item, index) in couponList" :key="index" :class="{'un-received':item.useStatus === 1}">
@@ -146,20 +157,20 @@
         </div>
     </div>
     <!--底部支付按钮 仅未开通和到期显示-->
-<!--    <div class="pay-amount-bottom" id="pay-amount-bottom" v-if="showBottomBtns">-->
-<!--        <div>-->
-<!--            <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣2','','Um_Event_RegisterSuperByBeansTwo'])">-->
-<!--                <a href="javascript:void(0);" @click="payAction(2, 2)">-->
-<!--                    抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通-->
-<!--                </a>-->
-<!--            </div>-->
-<!--            <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付2','','Um_Event_RegisterSuperPayTwo'])">-->
-<!--                <a href="javascript:void(0);" @click="payAction(1, 2)">-->
-<!--                    立即支付{{ comboInfo[currentIndex].price }}元开通-->
-<!--                </a>-->
-<!--            </div>-->
-<!--        </div>-->
-<!--    </div>-->
+    <div class="pay-amount-bottom" id="pay-amount-bottom" v-if="showBottomBtns">
+        <div>
+            <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣2','','Um_Event_RegisterSuperByBeansTwo'])">
+                <a href="javascript:void(0);" @click="payAction(2, 2)">
+                    抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通
+                </a>
+            </div>
+            <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付2','','Um_Event_RegisterSuperPayTwo'])">
+                <a href="javascript:void(0);" @click="payAction(1, 2)">
+                    立即支付{{ comboInfo[currentIndex].price }}元开通
+                </a>
+            </div>
+        </div>
+    </div>
     <!--遮罩-->
     <div class="mask" v-if="showMask"></div>
     <!--续费弹窗-->

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

@@ -78,6 +78,8 @@
                                 </div>
                             </div>
                         </div>
+                        <!-- 特殊商品退货须知 -->
+                        <div class="return-instructions shadow" v-if="returnGoodsStutas" v-html="helpContent"></div>
                         <div class="section-list shadow">
                             <div class="section-shopinfo" v-for="(shop, index) in shopOrderList" :key="index">
                                 <div class="title">

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

@@ -42,6 +42,14 @@
                         </div>
                         <template v-if="userIdentity === 2">
                             <div class="title">升级信息</div>
+                            <div class="formLine">
+                                <p id="userNameType"><em>*</em>联系人身份:</p>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="1"  @change="changeUserNameType"><i class="icon mIcon">老板</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="2" checked  @change="changeUserNameType"><i class="icon mIcon">采购</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="3" checked  @change="changeUserNameType"><i class="icon mIcon">运营</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="4" checked  @change="changeUserNameType"><i class="icon mIcon">其他</i></label>
+                                <span class="errTips icon mIcon" tips="请选择联系人身份"></span>
+                            </div>
                             <div class="formLine">
                                 <p><em>*</em>机构名称<span>(示例:深圳市美丽人生医疗美容有限公司)</span>:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.name" placeholder="请与营业执照的注册名称保持一致" :rule="rule.name" maxlength="30" @blur="blurHandle($event)" needverify>

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

@@ -33,6 +33,17 @@
                     <div class="title-tips"><p>补充以下详细信息即可升级为资质机构,享受更多更好的服务</p></div>
                     <div class="registerClub clear">
                         <form>
+                            <div class="formLine">
+                                <p style="padding-left: 8px">联系人:{{ userName }}</p>
+                            </div>
+                            <div class="formLine">
+                                <p id="userNameType"><em>*</em>联系人身份:</p>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="1"  @change="changeUserNameType"><i class="icon mIcon">老板</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="2" checked  @change="changeUserNameType"><i class="icon mIcon">采购</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="3" checked  @change="changeUserNameType"><i class="icon mIcon">运营</i></label>
+                                <label class="diyBox second"><input type="radio" name="linkManIdentity" v-model="clubUpgradeUser.linkManIdentity" value="4" checked  @change="changeUserNameType"><i class="icon mIcon">其他</i></label>
+                                <span class="errTips icon mIcon" tips="请选择联系人身份"></span>
+                            </div>
                             <div class="formLine">
                                 <p><em>*</em>邮箱:</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.contractEmail" placeholder="请输入邮箱地址" :rule="rule.email" maxlength="50" @blur="blurHandle($event)" needverify>