Explorar el Código

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

Aslee hace 3 años
padre
commit
e53e821118
Se han modificado 76 ficheros con 1286 adiciones y 114 borrados
  1. 44 0
      src/main/java/com/caimei/www/controller/ShortLinkApi.java
  2. 12 0
      src/main/java/com/caimei/www/controller/authorized/user/UserPageController.java
  3. 29 0
      src/main/java/com/caimei/www/mapper/ShortLinkDao.java
  4. 24 0
      src/main/java/com/caimei/www/pojo/link/ShortLink.java
  5. 18 0
      src/main/java/com/caimei/www/service/link/ShortLinkService.java
  6. 31 0
      src/main/java/com/caimei/www/service/link/impl/ShortLinkServiceImpl.java
  7. 19 0
      src/main/resources/mapper/ShortLinkMapper.xml
  8. 5 3
      src/main/resources/static/css/article/article.css
  9. 14 0
      src/main/resources/static/css/base/base.h5.css
  10. 27 0
      src/main/resources/static/css/base/base.pc.css
  11. 1 0
      src/main/resources/static/css/shopping/shopping.css
  12. 3 2
      src/main/resources/static/css/supplier-center/repair/detail.css
  13. 22 0
      src/main/resources/static/css/user-center/account/account.css
  14. 83 0
      src/main/resources/static/css/user-center/account/beans.css
  15. 20 4
      src/main/resources/static/css/user-center/dashboard.css
  16. 7 2
      src/main/resources/static/css/user-center/order/detail.css
  17. 7 2
      src/main/resources/static/css/user-center/order/orderlist.css
  18. BIN
      src/main/resources/static/img/account/bean-icon-h5@3x.png
  19. BIN
      src/main/resources/static/img/account/bean-icon@3x.png
  20. BIN
      src/main/resources/static/img/account/icon-beans-1@2x.png
  21. BIN
      src/main/resources/static/img/account/icon-beans-2@2x.png
  22. BIN
      src/main/resources/static/img/account/icon-beans-3@2x.png
  23. BIN
      src/main/resources/static/img/account/icon-beans-4@2x.png
  24. BIN
      src/main/resources/static/img/account/icon-beans-5@2x.png
  25. BIN
      src/main/resources/static/img/account/icon-beans-6@2x.png
  26. BIN
      src/main/resources/static/img/account/icon-beans-7@2x.png
  27. BIN
      src/main/resources/static/img/account/icon-beans-8@2x.png
  28. BIN
      src/main/resources/static/img/account/icon-beans-bg-h5.png
  29. BIN
      src/main/resources/static/img/account/icon-beans-bg.png
  30. BIN
      src/main/resources/static/img/account/icon-beans-h5-1@2x.png
  31. BIN
      src/main/resources/static/img/account/icon-beans-h5-2@2x.png
  32. BIN
      src/main/resources/static/img/account/icon-beans-h5-3@2x.png
  33. BIN
      src/main/resources/static/img/account/icon-beans-h5-4@2x.png
  34. BIN
      src/main/resources/static/img/account/icon-beans-h5-5@2x.png
  35. BIN
      src/main/resources/static/img/account/icon-beans-h5-6@2x.png
  36. BIN
      src/main/resources/static/img/account/icon-beans-h5-7@2x.png
  37. BIN
      src/main/resources/static/img/account/icon-beans-h5-8@2x.png
  38. BIN
      src/main/resources/static/img/account/icon-emptybeans@2x.png
  39. BIN
      src/main/resources/static/img/base/icon.png
  40. BIN
      src/main/resources/static/img/base/icon_m.png
  41. 1 1
      src/main/resources/static/js/account/register-club.js
  42. 4 5
      src/main/resources/static/js/article/list.js
  43. 1 0
      src/main/resources/static/js/center.js
  44. 1 0
      src/main/resources/static/js/common/ajax.service.js
  45. 24 0
      src/main/resources/static/js/common/serviceapi/user.service.js
  46. 0 10
      src/main/resources/static/js/common/serviceapi/utils.service.js
  47. 3 2
      src/main/resources/static/js/product/detail.js
  48. 94 15
      src/main/resources/static/js/shopping/confirm.js
  49. 76 0
      src/main/resources/static/js/user-center/account/account.js
  50. 192 0
      src/main/resources/static/js/user-center/account/beans.js
  51. 35 2
      src/main/resources/static/js/user-center/dashboard.js
  52. 30 9
      src/main/resources/static/js/user-center/order/detail.js
  53. 29 10
      src/main/resources/static/js/user-center/order/list.js
  54. 1 1
      src/main/resources/static/js/user-center/setting/upgrade.js
  55. 4 4
      src/main/resources/templates/account/register-club.html
  56. 2 2
      src/main/resources/templates/account/register-supplier.html
  57. 2 2
      src/main/resources/templates/account/supplier-information.html
  58. 2 2
      src/main/resources/templates/account/upgrade.html
  59. 1 1
      src/main/resources/templates/article/list.html
  60. 4 3
      src/main/resources/templates/components/header.html
  61. 1 1
      src/main/resources/templates/error/404.html
  62. 1 1
      src/main/resources/templates/flea-market/detail.html
  63. 2 2
      src/main/resources/templates/flea-market/list.html
  64. 9 9
      src/main/resources/templates/index.html
  65. 2 2
      src/main/resources/templates/pay/caimei-paycash.html
  66. 5 5
      src/main/resources/templates/product/detail.html
  67. 9 1
      src/main/resources/templates/shopping/confirm.html
  68. 2 2
      src/main/resources/templates/supplier-center/setting/information.html
  69. 1 1
      src/main/resources/templates/supplier/list.html
  70. 172 0
      src/main/resources/templates/user-center/account/account.html
  71. 109 0
      src/main/resources/templates/user-center/account/beans.html
  72. 49 3
      src/main/resources/templates/user-center/dashboard.html
  73. 25 1
      src/main/resources/templates/user-center/order/detail.html
  74. 24 1
      src/main/resources/templates/user-center/order/list.html
  75. 2 2
      src/main/resources/templates/user-center/setting/information.html
  76. 1 1
      src/main/resources/templates/user-center/setting/upgrade.html

+ 44 - 0
src/main/java/com/caimei/www/controller/ShortLinkApi.java

@@ -0,0 +1,44 @@
+package com.caimei.www.controller;
+
+import com.caimei.www.service.link.ShortLinkService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+import org.thymeleaf.util.StringUtils;
+
+import java.net.URI;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/6/24
+ */
+@RestController
+public class ShortLinkApi {
+    private ShortLinkService shortLinkService;
+
+    @Autowired
+    public void setShortLinkService(ShortLinkService shortLinkService) {
+        this.shortLinkService = shortLinkService;
+    }
+
+    /**
+     * 短链接跳转
+     *
+     * @param link
+     * @param response
+     */
+    @GetMapping("/t/{link}")
+    public void linkJump(@PathVariable String link, ServerHttpResponse response) {
+        String jumpLink = shortLinkService.linkJump(link);
+        response.setStatusCode(HttpStatus.FOUND);
+        if (StringUtils.isEmpty(jumpLink)) {
+            response.getHeaders().setLocation(URI.create("https://www.caimei365.com/404.html"));
+        }
+        response.getHeaders().setLocation(URI.create(jumpLink));
+    }
+}

+ 12 - 0
src/main/java/com/caimei/www/controller/authorized/user/UserPageController.java

@@ -48,6 +48,10 @@ public class UserPageController extends BaseController {
 	private static final String MESSAGE = "user-center/message/list";
 	/** 优惠券 */
 	private static final String BEAUTY_FAIR = "user-center/Beautyfair";
+	/** 账户余额明细 */
+	private static final String ACCOUNT_LIST = "user-center/account/account";
+	/** 采美豆明细 */
+	private static final String BEANS_LIST = "user-center/account/beans";
 
     /** 我的采美 */
     @GetMapping("/user/dashboard.html")
@@ -150,4 +154,12 @@ public class UserPageController extends BaseController {
     @GetMapping("/user/beautyfair.html")
     public String beautyFair() {return BEAUTY_FAIR;}
 
+    /** 账户余额明细 */
+    @GetMapping("/user/account.html")
+    public String account() {return ACCOUNT_LIST;}
+
+    /** 采美豆明细 */
+    @GetMapping("/user/beans.html")
+    public String beans() {return BEANS_LIST;}
+
 }

+ 29 - 0
src/main/java/com/caimei/www/mapper/ShortLinkDao.java

@@ -0,0 +1,29 @@
+package com.caimei.www.mapper;
+
+import com.caimei.www.pojo.link.ShortLink;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/6/25
+ */
+@Mapper
+public interface ShortLinkDao {
+
+    /**
+     * 查询跳转链接
+     *
+     * @param link
+     * @return
+     */
+    ShortLink findByShortLink(String link);
+
+    /**
+     * 修改点击数量
+     *
+     * @param markId
+     */
+    void updateOnClick(Integer markId);
+}

+ 24 - 0
src/main/java/com/caimei/www/pojo/link/ShortLink.java

@@ -0,0 +1,24 @@
+package com.caimei.www.pojo.link;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/6/25
+ */
+@Data
+public class ShortLink implements Serializable {
+    /**
+     * 标识id
+     */
+    private Integer markId;
+
+    /**
+     * 跳转链接
+     */
+    private String jumpLink;
+}

+ 18 - 0
src/main/java/com/caimei/www/service/link/ShortLinkService.java

@@ -0,0 +1,18 @@
+package com.caimei.www.service.link;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/6/25
+ */
+public interface ShortLinkService {
+
+    /**
+     * 查询短链接
+     *
+     * @param link
+     * @return
+     */
+    String linkJump(String link);
+}

+ 31 - 0
src/main/java/com/caimei/www/service/link/impl/ShortLinkServiceImpl.java

@@ -0,0 +1,31 @@
+package com.caimei.www.service.link.impl;
+
+import com.caimei.www.mapper.ShortLinkDao;
+import com.caimei.www.pojo.link.ShortLink;
+import com.caimei.www.service.link.ShortLinkService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * Description
+ *
+ * @author : plf
+ * @date : 2021/6/25
+ */
+@Service
+public class ShortLinkServiceImpl implements ShortLinkService {
+    @Resource
+    private ShortLinkDao shortLinkDao;
+
+    @Override
+    public String linkJump(String link) {
+        ShortLink shortLink = shortLinkDao.findByShortLink(link);
+        if (shortLink == null) {
+            return "";
+        }
+        //修改点击数量
+        shortLinkDao.updateOnClick(shortLink.getMarkId());
+        return shortLink.getJumpLink();
+    }
+}

+ 19 - 0
src/main/resources/mapper/ShortLinkMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.caimei.www.mapper.ShortLinkDao">
+    <select id="findByShortLink" resultType="com.caimei.www.pojo.link.ShortLink">
+        SELECT
+          markId,
+          jumpLink
+        FROM
+          cm_short_link
+        WHERE
+          shortLink = #{link}
+    </select>
+
+    <update id="updateOnClick">
+        UPDATE cm_sms_statistics SET onClick = (onClick + 1) WHERE markId = #{markId}
+    </update>
+</mapper>

+ 5 - 3
src/main/resources/static/css/article/article.css

@@ -90,7 +90,7 @@ dl,dd,dt{zoom:1}
 	.classify.biaoqian{border-bottom:solid 1px #ededed}
 	.content{width:1190px;margin:0 auto;position:relative}
 	.content .mainData{float:left;width:860px}
-	.content .new-list{width:100%;background:#fff}
+	.content .new-list{width:100%;background:#ffffff;}
 	.content .row:nth-last-child(1){border-bottom:0}
 	.new-list .row{position:relative;display:table;width:800px;height:150px;margin:0 30px;padding:30px 0;border-bottom:solid 1px #ededed}
 	.row .new-img{position:absolute;width:210px;height:150px;margin-right:20px;background:#FFF url(/img/base/placeholder.png) no-repeat center center;}
@@ -170,7 +170,9 @@ dl,dd,dt{zoom:1}
 	.article .like:hover{background: #ffe6dc}
 
 }
-@media screen and (max-width:768px){.header .logo,.header .home{display:none}
+@media screen and (max-width:768px){
+	body{height: 100vh;overflow-y: scroll;}
+	.header .logo,.header .home{display:none}
 	.mIcon:before{content:'';display:inline-block;font-size:0;background:url(/img/base/icon_m.png) no-repeat;background-size:100vw auto;transition:all .5s}
 	#scrollTop{display:none;position:fixed;right:0;;z-index:9999;bottom:4vw;}
 	#scrollTop .item{width:12vw;background-color:rgba(190,194,201,.3);box-sizing:border-box;text-align:center;margin-bottom:2.5vw;font-size:3vw;position:relative}
@@ -201,7 +203,7 @@ dl,dd,dt{zoom:1}
 	.bar,.classify{height:8vw;line-height:8vw;font-size:3.1vw;overflow:hidden;color:#93979F;padding:0 2vw}
 	.classify em{color:#E15616;font-weight:bold;margin-right:1vw;font-size:3.7vw}
 	.mainData{min-height:68vh}
-	.new-list{background:#FFF}
+	.new-list{background:#FFF;}
 	.dataRousce{width:100%;background:#FFF;overflow:hidden}
 	.dataRousce .row{width:100%;height:34.8vw;border-top:1px solid #F5F5F5;background:#FFF;overflow:hidden;box-sizing:border-box;padding:2vw 3.3vw 2vw 37vw;position:relative;color:#93979F;line-height:3.5vw;font-size:2.6vw}
 	.dataRousce .row img{position:absolute;left:3.3vw;top:2.3vw;width:30.4vw;height:30.4vw}

+ 14 - 0
src/main/resources/static/css/base/base.h5.css

@@ -225,4 +225,18 @@
     width: 20.1vw;
     display: inline-block;
 }
+/*采美豆弹窗样式*/
+.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-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-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;}
+.cmbeans-alert-content-bean .cmbeans-alert-text{color: #E15616;line-height: 7.6vw;float: left;font-size: 5.4vw;}
+.cmbeans-alert-content-bean .icon-add{margin-left: 2.5vw;}
+.cmbeans-alert-content-bean .icon-text{font-weight: bold;}
+.cmbeans-alert-content-tips{width: 100%;height: 5.6vw;line-height: 5.6vw;margin-top: 4vw;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
+.cmbeans-alert-content-tips .tips{width: 27.2vw;height: 5.6vw;background-color: rgba(226, 91, 28, 0.1);border-radius: 2.8vw;line-height: 5.6vw;font-size: 2.6vw;color: #E15616;text-align: center;padding: 0 1.2vw;}
+
 

+ 27 - 0
src/main/resources/static/css/base/base.pc.css

@@ -348,3 +348,30 @@ iframe{width:320px !important;height: 280px !important}
 .empty img{width:180px;height:180px;}
 .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-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}
+.cmbeans-alert-content-text{height: 48px;line-height: 48px;text-align: center;width: 100%;font-size: 18px;color: #333333;}
+.cmbeans-alert-content-bean{width: 100%;height: 35px;line-height: 35px;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
+.cmbeans-alert-content-bean .cmbeans-alert-icon{width: 42px;height: 35px;display: block;float: left;}
+.cmbeans-alert-content-bean .cmbeans-alert-text{color: #E15616;line-height: 35px;float: left;font-size: 24px;}
+.cmbeans-alert-content-bean .icon-add{margin-left: 15px;}
+.cmbeans-alert-content-bean .icon-text{font-weight: bold;}
+.cmbeans-alert-content-tips{width: 100%;height: 24px;line-height: 24px;margin-top: 20px;box-sizing: border-box;display: flex;flex-direction: column;align-items: center;}
+.cmbeans-alert-content-tips .tips{width: 118px;height: 24px;background-color: rgba(226, 91, 28, 0.1);border-radius: 12px;line-height: 24px;font-size: 12px;color: #E15616;text-align: center;}
+
+
+
+
+
+
+
+
+
+
+
+
+
+

+ 1 - 0
src/main/resources/static/css/shopping/shopping.css

@@ -169,6 +169,7 @@ li{list-style:none}
     .balanceWrap .text .red{color:#FF2A2A}
     .totalPriceWrap{line-height:36px;text-align:right;padding:16px}
     .totalPriceWrap span{display:inline-block;width:200px}
+    .totalPriceWrap .pis{color: #E15616;}
     .totalPriceWrap span em{font-style:normal;color:#FF2A2A}
     /* 发票 */
     .invoiceWrap{padding:16px;text-align:left}

+ 3 - 2
src/main/resources/static/css/supplier-center/repair/detail.css

@@ -67,7 +67,7 @@ li{list-style:none}
     .release-stepbox .stepSpan{display: inline-block;width: 32%;text-align: center;position: relative;}
     .stepSpan p{display: inline-block;color: #9aa5b5;}
     .stepSpan span{width: 5vw;height: 5vw;background: #9aa5b5;display: inline-block;border-radius: 50%;color: #fff;line-height: 5vw;
-        text-align: center;    position: absolute;top: 3.2vw;left: 13.3vw}
+    text-align: center;    position: absolute;top: 3.2vw;left: 13.3vw}
     .release-stepbox .stepSpan.active span{color: #fff;background: #E15616}
     .release-stepbox .stepSpan.active p{color: #e15616}
     .process p{color: #627386;font-size: 3.4vw;}
@@ -99,4 +99,5 @@ li{list-style:none}
     .mt-wechat img{width: 24vw;height: 24vw;display: block;}
 
 
-}
+}
+

+ 22 - 0
src/main/resources/static/css/user-center/account/account.css

@@ -0,0 +1,22 @@
+@charset "utf-8";
+li{list-style:none}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    /*采美豆右侧*/
+    .crumbs{font-size: 16px;}
+    .user-header{width:100%;height:120px;box-sizing:border-box;padding:20px;background-color:#FFF;box-shadow:0px 3px 6px 0px rgba(0,0,0,0.07);position:relative}
+
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .user-header{box-sizing:border-box;width:100%;padding:2.7vw;background:#fff;position:relative}
+
+
+
+}
+

+ 83 - 0
src/main/resources/static/css/user-center/account/beans.css

@@ -0,0 +1,83 @@
+@charset "utf-8";
+li{list-style:none}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    /*采美豆右侧*/
+    .crumbs{font-size: 16px;}
+    .pageWrap{width: 968px;}
+    .navLayout{min-height: 500px;}
+    .beans-header{width:100%;height:120px;box-sizing:border-box;padding:24px;background:url("/img/account/icon-beans-bg.png")no-repeat;background-size: cover;}
+    .beans-header-l{float: left;line-height: 78px;color: #FFFFFF;font-size: 16px;}
+    .beans-header-l span.big{font-size: 24px;font-weight: bold;}
+    .beans-header-r{float: right;line-height: 78px;}
+    .beans-header-r a{color: #FFFFFF;font-size: 14px;}
+    .beans-header-r a .icon{width:16px;height:16px;display: block;float: right;margin-left: 3px;}
+    .beans-header-r a .icon:before{width:16px;height:16px;background-position:-241px -550px}
+    .beans-container{width: 100%;min-height: 500px;background-color: #FFFFFF;margin-top: 16px;}
+    .beans-content-tabs{width: 100%;height: 96px;box-sizing: border-box;padding:0 24px;}
+    .beans-content-tabs .tabs-main{width: 100%;height:100%;border-bottom: 1px solid #e2e7ef;box-sizing: border-box;padding:33px 0; position: relative;}
+    .beans-content-tabs .time-template{width: 184px;height: 100%;margin: 0 auto;}
+    .beans-content-tabs .time-template .time-pre{width: 30px;height: 100%;float: left;display: block;cursor: pointer;}
+    .beans-content-tabs .time-template .time-pre .icon{width:30px;height:30px;display: block;}
+    .beans-content-tabs .time-template .time-pre .icon:before{width:30px;height:30px;background-position:-269px -550px}
+    .beans-content-tabs .time-template .time-text{width: 124px;height: 100%;float: left;line-height: 30px;text-align: center;font-size: 16px;color: #22272e;}
+    .beans-content-tabs .time-template .time-next{width: 30px;height: 100%;float: left;display: block;cursor: pointer;}
+    .beans-content-tabs .time-template .time-next .icon{width:30px;height:30px;display: block;}
+    .beans-content-tabs .time-template .time-next .icon:before{width:30px;height:30px;background-position:-311px -550px}
+    .beans-content-tabs .time-tabs{width: 216px;height:30px;position: absolute;right: 0;top: 33px;cursor: pointer;}
+    .beans-content-tabs .time-tabs-cell{width: 72px;height: 100%;float: left;text-align: center;font-size: 14px;color: #22272e;line-height: 30px;display: block;}
+    .beans-content-tabs .time-tabs-cell.active{color: #E15616;}
+
+    .beans-content-list{width: 100%;height: auto;box-sizing: border-box;padding:24px;}
+    .beans-content-list .beans-list-cell{width: 100%;height: 60px;box-sizing: border-box;float: left;margin-bottom: 10px;}
+    .beans-content-list .list-cell-left{width: 50%;height: 60px;float: left;text-align: left;}
+    .beans-content-list p{width: 100%;height: 32px;float: left;line-height: 32px;font-size: 16px;color: #22272e;}
+    .beans-content-list p.none{color: #627386;font-size: 14px;line-height: 28px;}
+    .beans-content-list p.blod{font-weight: bold;line-height: 28px;}
+    .beans-content-list .list-cell-right{width: 50%;height: 60px;float: right;text-align: right;}
+    .empty{width: 100%;float: left;}
+    .empty img{width: 180px;height: 180px;}
+
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .beans-header{width:100%;height:28vw;box-sizing:border-box;padding:4vw 8vw;background:url("/img/account/icon-beans-bg.png")no-repeat;background-size: cover;}
+    .beans-header-l{float: left;line-height: 10vw;color: #FFFFFF;font-size:3.2vw;}
+    .beans-header-l span{display: inline-block;width: 100%;height: 10vw;float: left;}
+    .beans-header-l span.big{font-size: 7.2vw;font-weight: bold;}
+    .beans-header-r{float: right;line-height:20vw;}
+    .beans-header-r a{color: #FFFFFF;font-size: 3vw;}
+    .beans-header-r a .icon{width:4vw;height:4vw;display: block;float: right;margin-left: 1vw;}
+    .beans-header-r a .icon:before{width:4vw;height:4vw;background-position:-44.6vw -78.3vw;}
+    .beans-container{width: 100%;min-height: 50vw;background-color: #FFFFFF;margin-top:2vw;}
+    .beans-content-tabs{width: 100%;height: auto;box-sizing: border-box;padding:0 3.4vw;}
+    .beans-content-tabs .tabs-main{width: 100%;height:100%;border-bottom: 1px solid #e2e7ef;box-sizing: border-box;padding-top: 6.4vw;position: relative;float: left;}
+    .beans-content-tabs .time-template{width: 100%;height: 6.7vw;float: left;box-sizing: border-box;padding: 0 25vw;}
+    .beans-content-tabs .time-template .time-pre{width: 6.7vw;height: 6.7vw;float: left;display: block;}
+    .beans-content-tabs .time-template .time-pre .icon{width:6.7vw;height:6.7vw;display: block;}
+    .beans-content-tabs .time-template .time-pre .icon:before{width:6.7vw;height:6.7vw;background-position:-51.2vw -78.3vw}
+    .beans-content-tabs .time-template .time-text{width: 28.4vw;height: 6.7vw;float: left;line-height: 6.7vw;text-align: center;font-size: 3.4vw;color: #22272e;}
+    .beans-content-tabs .time-template .time-next{width: 6.7vw;height: 6.7vw;float: left;display: block;}
+    .beans-content-tabs .time-template .time-next .icon{width:6.7vw;height:6.7vw;display: block;}
+    .beans-content-tabs .time-template .time-next .icon:before{width:6.7vw;height:6.7vw;background-position:-60.4vw -78.3vw}
+    .beans-content-tabs .time-tabs{width:100%;height:9.6vw;float: left;margin-top: 3.6vw;}
+    .beans-content-tabs .time-tabs-cell{width: 33.3%;height: 100%;float: left;text-align: center;font-size: 4vw;color: #22272e;line-height: 9.6vw;display: block;}
+    .beans-content-tabs .time-tabs-cell.active{color: #E15616;font-weight: bold;}
+
+    .beans-content-list{width: 100%;height: auto;box-sizing: border-box;padding:3.4vw;float: left;}
+    .beans-content-list .beans-list-cell{width: 100%;height: 10.7vw;box-sizing: border-box;float: left;margin-bottom: 6.4vw;}
+    .beans-content-list .list-cell-left{width: 50%;height: 10.7vw;float: left;text-align: left;}
+    .beans-content-list p{width: 100%;height: 4.7vw;float: left;line-height:  4.7vw;font-size: 3.6vw;color: #22272e;margin-bottom: 2vw;}
+    .beans-content-list p.none{color: #627386;font-size: 3.2vw;line-height: 4.2vw;}
+    .beans-content-list p.blod{font-weight: bold;line-height: 4.2vw;}
+    .beans-content-list .list-cell-right{width: 50%;height:10.7vw;float: right;text-align: right;}
+    .empty{width: 100%;float: left;}
+    .empty img{width: 36vw;height: 36vw;}
+
+}
+

+ 20 - 4
src/main/resources/static/css/user-center/dashboard.css

@@ -15,7 +15,9 @@ li{list-style:none}
     .user-header .account{float:left;box-sizing:border-box;padding:5px 0}
     .user-header .account .name{width:100%;height:36px;float:left;margin-bottom:10px}
     .user-header .account .name span{line-height:36px;font-size:18px;font-weight:bold;color:#22272e;display:inline-block;float:left}
-    .user-header .account .name a{margin-left:30px;width:118px;height:34px;border:1px solid #E15616;border-radius:2px;background-color:#ffe6dc;color:#E15616;display:block;line-height:34px;text-align:center;float:left}
+    .user-header .account .name a{position: relative;margin-left:30px;width:118px;height:34px;border:1px solid #E15616;border-radius:2px;background-color:#ffe6dc;color:#E15616;display:block;line-height:34px;text-align:center;float:left}
+    .user-header .account .name a .name-tips{width: 44px;height: 19px;line-height: 19px;text-align: center;border-radius: 10px;background-color: #ffe6dc;font-size: 12px;color: #E15616;position: absolute;right: -20px;top: -25px;z-index: 99;}
+    .user-header .account .name a .name-tips:before{content: '';width: 6px;height: 6px;background-color: #ffe6dc;position: absolute;bottom: -3px;left: 12px;z-index: -1;transform:rotate(45deg);}
     .user-header .account .msg{width:100%;font-size:14px;line-height:26px;color:#22272e;margin-top:20px}
     .user-header .account .msg em{color:#22272e;display:inline-block;margin-right:8px}
     .user-header .account .msg .red{color:#f94b4b;font-style:normal;margin:0 5px}
@@ -36,6 +38,9 @@ li{list-style:none}
     .user-content .section{width: 100%;height: auto;}
     .user-content .section .user-main{width: 100%;height:auto;background-color: #FFFFFF;box-sizing: border-box;padding: 20px;box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.07);margin-bottom: 10px;}
     .user-content .section .user-main.tabs{height: 90px;padding: 15px 20px;}
+    .user-content .section .user-main.account{height: 78px;}
+    .user-content .section .user-main.account .account-cell{line-height: 34px;font-size:14px;color: #333333;float: left;margin-right: 80px;display: block;}
+    .user-content .section .user-main.account .account-cell .red{font-size:16px;color: #f94b4b;font-weight: bold;}
     .user-content .section .user-main .tabs-left{height: 100%;float: left;}
     .user-content .section .user-main .tabs-left .item{width: 50px;height: 100%;float: left;margin:0 40px;}
     .user-content .section .user-main .tabs-left .item a{width: 100%;height: 100%;display: block;}
@@ -85,6 +90,7 @@ li{list-style:none}
     .user-content .section .user-main .new-list .time{line-height: 36px;font-size: 12px;color: #9aa5b5;float: right;}
     .user-content.coupon{width: 100%;height: 240px}
     .user-content.coupon .coupon_img{width: 100%;height: 100%;}
+
 }
 
 /**
@@ -97,22 +103,32 @@ li{list-style:none}
     .user-header .logo .file{position:absolute;top:5vw;left:9vw;width:9vw;height:9vw}
     .user-header .logo .file:before{width:9vw;height:9vw;background-position:-7.5vw -60.3vw}
     .user-header .logo img{max-width:100%;max-height:100%;display:block;margin:0 auto;}
-    .user-header .account{width:64vw;height:19.4vw;box-sizing:border-box;color:#9aa5b5;font-size:3.1vw;line-height:6.4vw;position:relative}
+    .user-header .account{width:64vw;height:quto;box-sizing:border-box;color:#9aa5b5;font-size:3.1vw;line-height:6.4vw;position:relative}
     .user-header .account .name{font-size:3.7vw;color:#22272e}
     .user-header .account em{font-style:normal;color:#e15616}
     .user-header .account .name a,.user-header .account .msg a{display:inline-block;height:5.4vw;line-height:5.4vw;padding:0 2vw;color:#FFF;border-radius:2px;margin-left:2vw}
-    .user-header .account .name a{background-color:#e15616}
+    .user-header .account .name a{background-color:#e15616;position: relative;}
+    .user-header .account .name a .name-tips{width: 11.6vw;height: 4.8vw;line-height: 4.8vw;text-align: center;border-radius: 2.4vw;background-color: #ffe6dc;font-size: 12px;color: #E15616;position: absolute;right: -20px;top: -25px;z-index: 99;}
+    .user-header .account .name a .name-tips:before{content: '';width: 6px;height: 6px;background-color: #ffe6dc;position: absolute;bottom: -3px;left: 12px;z-index: -1;transform:rotate(45deg);}
     .user-header .account .msg a{background-color:#313a43}
+    .user-header .account .upgrade{margin-top: 6.5vw;}
+    .user-header .account .upgrade a{position: relative;width: 32.6vw;height: 8.5vw;display: block; background-color:#ffe6dc;box-sizing: border-box;border: 1px solid #E15616;line-height: 8.5vw;text-align: center;color: #E15616;font-size: 3.4vw;border-radius: 4.25vw;}
+    .user-header .account .upgrade a .name-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;}
+    .user-header .account .upgrade a .name-tips:before{content: '';width: 6px;height: 6px;background-color: #ffe6dc;position: absolute;bottom: -3px;left: 12px;z-index: -1;transform:rotate(45deg);}
     .user-header .message{position:absolute;right:0;top:5vw}
     .user-header .message .mIcon{position:absolute;right:0;top:0}
     .user-header .message .mIcon:before{width:8vw;height:8vw;background-position:-16.5vw -60.3vw}
     .user-header .message .ellipse,.user-header .message .circular{padding:.6vw;border-radius:3.1vw;font-size:3.1vw;background-color:#f55c5c;color:#FFF;font-style:normal;position:absolute;right:4vw;top:-1vw;transform:scale(.7)}
     .user-header .message .circular{padding:0 1vw;}
-    .user-content{width:100%;margin:0 auto 2.4vw auto;background:#FFF}
+    .user-content{width:100%;margin:0 auto 2.4vw auto;background:#FFF;padding-top: 2.4vw;margin-top: 2.4vw;}
+    .user-content .section .user-main.account{height: 14vw;box-sizing: border-box;padding: 0 3.2vw;}
+    .user-content .section .user-main.account .account-cell{line-height:14vw;font-size:3.4vw;color: #333333;float: left;margin-right: 10vw;display: block;}
+    .user-content .section .user-main.account .account-cell .red{font-size:4.2vw;color: #f94b4b;font-weight: bold;}
     .user-content .user-main .tabs-left{box-sizing:border-box;width:100vw;padding:.7vw 6vw 4vw 6vw}
     .user-content .user-main .tabs-left .item{width:20.8vw;height:8.4vw;line-height:8.4vw;text-align:center;border-radius:4.2vw;border:1px solid #b8bfca;font-size:3.3vw;color:#627386;margin:3.3vw 4vw 0 4vw;position:relative}
     .user-content .user-main .tabs-left .item .icon span{height:4.6vw;line-height:4.6vw;padding:0 .6vw;border-radius:2.1vw;font-size:3.1vw;background-color:#f55c5c;color:#FFF;font-style:normal;position:absolute;right:1vw;top:-2vw}
     .user-content .title{box-sizing:border-box;padding:0 3.2vw;height:10.3vw;line-height:10.3vw;font-size:3.4vw;color:#22272e}
+    .user-content .title.order{height:6vw;line-height:6vw;}
     .user-content .title a{float:right;color:#627386}
     .user-content .title a:after{content:'\276F';margin-left:1vw}
     .user-content .user-main.product{box-sizing:border-box;width:100%;height:43vw;padding:0 3.2vw;overflow-x:scroll;overflow-y:hidden;white-space:nowrap}

+ 7 - 2
src/main/resources/static/css/user-center/order/detail.css

@@ -109,7 +109,9 @@ li{list-style:none}
     /*.section-botton .inner{width: 1184px;margin: 0 auto;}*/
     .section-botton .btn{width: 88px;height: 34px;border-radius: 2px;border: 1px solid #FFF;float: right;margin-left: 16px;font-size: 14px;line-height: 34px;text-align: center;display: block;}
     .section-botton .btn.cancel{border-color: #9aa5b5;background-color: #FFFFFF;color: #22272e;}
-    .section-botton .btn.primary{border-color: #E15616;background-color: #E15616;color: #FFFFFF;}
+    .section-botton .btn.primary{border-color: #E15616;background-color: #E15616;color: #FFFFFF;position: relative;}
+    .section-botton .btn.primary .tips{width: 44px;height: 19px;line-height: 19px;text-align: center;border-radius: 10px;background-color: #ffe6dc;font-size: 12px;color: #E15616;position: absolute;right:0px;top: -25px;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);}
     .section-botton .btn.primary.confirm{line-height: 17px;}
     .section-botton .shopinfo{float: right;height: 100%;margin-right: 10px;}
     .section-botton .price-total{text-align: right;color: #22272e;font-size: 16px;float: right;padding-top: 0;line-height: 36px;}
@@ -177,8 +179,11 @@ li{list-style:none}
     .section-botton{margin-top:1.5vw;padding: 2.7vw;background: #fff}
     .section-botton .inner{overflow: hidden}
     .section-botton .btn{display:inline-block;width:22.4vw;height:11.2vw;line-height:11.2vw;font-size:3.7vw;text-align:center;background-color:#ffe6dc;border-radius:2px;border:1px solid #e15616;margin:0 2.7vw 0 auto;color:#e15616;float: right;}
-    .section-botton .primary{color:#FFF;Background:#e15616}
+    .section-botton .primary{color:#FFF;Background:#e15616;position: relative;}
     .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);}
+
 
 
 

+ 7 - 2
src/main/resources/static/css/user-center/order/orderlist.css

@@ -65,7 +65,9 @@ li{list-style:none}
     .order-container .section .user-main .order-content .order-botton{width: 100%;height: 36px;float: left;margin-top: 8px;}
     .order-container .section .user-main .order-content .order-botton .btn{width: 88px;height: 34px;border-radius: 2px;border: 1px solid #FFF;float: right;margin-left: 16px;font-size: 14px;line-height: 34px;text-align: center;display: block;}
     .order-container .section .user-main .order-content .order-botton .btn.cancel{border-color: #9aa5b5;background-color: #FFFFFF;color: #22272e;}
-    .order-container .section .user-main .order-content .order-botton .btn.primary{border-color: #E15616;background-color: #E15616;color: #FFFFFF;}
+    .order-container .section .user-main .order-content .order-botton .btn.primary{border-color: #E15616;background-color: #E15616;color: #FFFFFF;position: relative;}
+    .order-container .section .user-main .order-content .order-botton .btn.primary .tips{width: 44px;height: 19px;line-height: 19px;text-align: center;border-radius: 10px;background-color: #ffe6dc;font-size: 12px;color: #E15616;position: absolute;right:0px;top: -25px;z-index: 99;}
+    .order-container .section .user-main .order-content .order-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);}
     .order-container .section .user-main .order-content .order-botton .btn.primary.confirm{line-height: 15px;}
     .order-container .section .user-main .order-content .order-botton .btn.primary.confirm p{line-height: 15px;}
     .order-container .section .user-main.product{height: 260px;padding: 20px 20px 10px 20px;}
@@ -125,9 +127,12 @@ li{list-style:none}
 .user-main.order .order-item p{display:inline-block;width:49%}
 .user-main.order .order-botton{text-align:right;margin-top:2vw}
 .user-main.order .order-botton .btn{display:inline-block;width:19.5vw;height:9.5vw;line-height:9.5vw;text-align:center;background-color:#ffe6dc;border-radius:2px;border:solid 1px #e15616;color:#e15616;font-size:3.4vw;margin-left:2.6vw;vertical-align: text-top}
-.user-main.order .order-botton .primary{background:#e15616;color:#FFF;}
+.user-main.order .order-botton .primary{background:#e15616;color:#FFF;position: relative;}
 .order-container .section .user-main .order-content .order-botton .btn.primary.confirm{line-height: 4.5vw;}
 .order-container .section .user-main .order-content .order-botton .btn.primary.confirm p{line-height: 5vw;}
+.order-container .section .user-main .order-content .order-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;}
+.order-container .section .user-main .order-content .order-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);}
+
 input::placeholder{color: #9AA5B5}
 }
 

BIN
src/main/resources/static/img/account/bean-icon-h5@3x.png


BIN
src/main/resources/static/img/account/bean-icon@3x.png


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


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


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


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


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


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


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


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


BIN
src/main/resources/static/img/account/icon-beans-bg-h5.png


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


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


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


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


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


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


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


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


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


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


BIN
src/main/resources/static/img/base/icon.png


BIN
src/main/resources/static/img/base/icon_m.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('您的升级申请已提交审核','确定',true,function () {
+                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得20采美豆的奖励','确定',true,function () {
                             _self.clubLoginIndex();
                             _self.loginLoading = false;
                         });

+ 4 - 5
src/main/resources/static/js/article/list.js

@@ -71,7 +71,6 @@ var articleList = new Vue({
                     var result = JSON.parse(r.data);
                     _self.listRecord = result.total;
                     var resultData = [];
-                    console.log('文章列表',result.items);
                     result.items.map(function (item) {
                         resultData.push({
                             id: item.articleId,
@@ -148,11 +147,11 @@ var articleList = new Vue({
         if(!isPC){
             $('footer').addClass("noneImportant");
             //移动端上垃加载更多
-            $(window).on('scroll', function(){
-                var scrollTop =  $(document).scrollTop();
+            $('body').on('scroll', function(){
+                var scrollTop =  $(this).scrollTop();
                 var documentHeight = $(document).height();
-                var windowHeight = $(window).height() ;
-                if( scrollTop >=documentHeight - windowHeight ){
+                var windowHeight = $(this).height() ;
+                if( scrollTop + windowHeight == documentHeight ){
                     console.log("到底部了!");
                     //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作
                     var totalPage = Math.ceil(_self.listRecord / _self.params.size)?Math.ceil(_self.listRecord / _self.params.size):1;

+ 1 - 0
src/main/resources/static/js/center.js

@@ -12,6 +12,7 @@ $(function(){
     // 登录状态判断
     if (!globalUserData || !GLOBAL_USER_ID){
         CAIMEI.Alert("登录已失效,请重新登录", '确定', true, function(){
+            setBeforeUrl();
             window.location.href = "/login.html";
         });
     }

+ 1 - 0
src/main/resources/static/js/common/ajax.service.js

@@ -45,6 +45,7 @@ var Http = {
                 if(res.code== -99){
                     CAIMEI.Alert('登录已失效,请重新登录','去登录',true,function () {
                         CAIMEI.Storage.clear();
+                        setBeforeUrl();
                         location.href = "/login.html";
                     });
                 }else{

+ 24 - 0
src/main/resources/static/js/common/serviceapi/user.service.js

@@ -271,5 +271,29 @@ var UserApi = {
                 callback(res)
             });
         },
+        GetUserObtainBeans : function(params,callback) {//获取采美豆状态
+            Http.AjaxService({
+                url:'/user/club/obtain/beans',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
+        GetUserClubBeansList : function(params,callback) {//机构采美豆收支明细
+            Http.AjaxService({
+                url:'/user/club/beans/history',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
 
 };

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

@@ -238,16 +238,6 @@ var PublicApi = {
                 callback(res);
             });
         },
-        updateCompanyInfo : function (params,callback) {//提交机构修改申请信息
-            Http.AjaxService({
-                url:'/user/club/updateCompanyInfo',
-                type:'post',
-                data:params, json:true
-            })
-            .then(function(res){
-                callback(res);
-            });
-        },
         modifiedData : function (params,callback) {//提交个人中心修改机构信息
             Http.AjaxService({
                 url:'/operation/modifiedData',

+ 3 - 2
src/main/resources/static/js/product/detail.js

@@ -77,6 +77,7 @@ var productDetail = new Vue({
                     var product = response.data;
                     _self.beautyActFlag = product.beautyActFlag
                     _self.productTypeName = product.typeName;
+                    _self.recommendType = product.recommendType ? product.recommendType : 0;
                     if(product.productDetail.orderInfo!='' && product.productDetail.serviceInfo!=''){
                         _self.isServiceInfo = true;
                     }
@@ -97,6 +98,7 @@ var productDetail = new Vue({
                     if(product.stock == 0 && product.validFlag !='3'){
                         _self.disabledText = '售罄'
                     }
+                    _self.getRecommends();
                 }else{
                     CAIMEI.Alert(response.msg, '确定', false);
                 }
@@ -214,7 +216,7 @@ var productDetail = new Vue({
                 {
                     productId: _self.productId,
                     recommendType: _self.recommendType,
-                    identity: GLOBAL_USER_IDENTITY
+                    userId: _self.userId
                 },
                 function (response) {
                 if (response.code === 0 && response.data) {
@@ -274,7 +276,6 @@ var productDetail = new Vue({
         this.getProductDetails();
         this.getProductPrice();
         this.getParameters();
-        this.getRecommends();
         // $('.productInfo').slide({
         //     mainCell:".tabCon"
         //     ,titCell:".tabTit span"

+ 94 - 15
src/main/resources/static/js/shopping/confirm.js

@@ -47,6 +47,7 @@ var shoppingConfirm = new Vue({
             mobile: '^\\d{6,12}$'
         },
         balance: {
+            isFreight:false,    //使用采美豆抵扣运费
             flag: false,        //使用余额抵扣
             originUserMoney: 0, //初始化后不能改变,用于还原余额抵扣
             userMoney: 0,	    //显示可使用余额
@@ -69,8 +70,13 @@ var shoppingConfirm = new Vue({
             registeredAddress: '',//单位地址
             registeredPhone:'',	 //注册电话
             openBank:'',		//开户银行
-            bankAccountNo: ''  //银行账号
+            bankAccountNo: '',  //银行账号
         },
+        isBeansShow:false,
+        userBeans:0,
+        freightBeansMoney:0,
+        freightMoney:0,
+        hanldUserBeans:0,
         submitLoading: false,
     },
     computed: {
@@ -129,8 +135,36 @@ var shoppingConfirm = new Vue({
             },function (r) {
                 if(r.code === 0 && r.data){
                     _self.payInfo.freePostFlag = r.data.freePostFlag;
+                    _self.userBeans = r.data.userBeans;
                     _self.payInfo.freight = (r.data.freePostFlag===1 ? r.data.freight : 0);
                     _self.payInfo.orderShouldPayFee = _self.totalPrice + _self.payInfo.freight;
+                    switch (_self.payInfo.freePostFlag) {
+                        case 1:
+                            if( _self.userBeans >= r.data.freight*100 ){
+                                _self.freightBeansMoney = r.data.freight;
+                                _self.freightMoney = r.data.freight;
+                                _self.isBeansShow = true;
+                            }else{
+                                _self.freightBeansMoney = 0;
+                                _self.balance.isFreight = false;
+                                _self.isBeansShow = false;
+                            }
+                            _self.changeDeductibleFreight();
+                            break;
+                        case -1:
+                            if( _self.userBeans >= 3000 ){
+                                _self.freightMoney = 30;
+                                _self.freightBeansMoney = 30;
+                                _self.isBeansShow = true;
+                            }else{
+                                _self.freightBeansMoney = 0;
+                                _self.balance.isFreight = false;
+                                _self.isBeansShow = false;
+                            }
+                            _self.changeDeductibleFreight();
+                            break;
+                    }
+
                 }else{
                     CAIMEI.Alert(r.msg, '确定', false);
                 }
@@ -363,31 +397,75 @@ var shoppingConfirm = new Vue({
             var _self = this;
             if(this.balance.userMoney>0){
                 this.$nextTick(function() {
-                    var total = _self.totalPrice + _self.payInfo.freight;
+                    var total = _self.totalPrice + _self.payInfo.freight; // 订单总金额 + 邮费金额
                     if(_self.balance.flag){
                         _self.payInfo.balancePayFlag = 1;
-                        if(_self.balance.userMoney>=total){
-                            // 全部抵扣
+                        if(_self.balance.userMoney>=total){ // 全部抵扣
                             _self.payInfo.orderShouldPayFee = 0;
-                            _self.balance.deductMoney = total;
-                            _self.balance.surplusMoney = _self.balance.userMoney-total;
-                        }else{
-                            // 部分抵扣
-                            _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney;
-                            _self.balance.deductMoney = _self.balance.userMoney;
-                            _self.balance.surplusMoney = 0;
+                            if(_self.balance.isFreight){// 勾选了采美豆丢运费
+                                _self.balance.deductMoney = _self.totalPrice; // 抵扣使用金额 = 订单总金额
+                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.totalPrice*10)/10; // 抵扣后剩余余额 = 余额总额 - (订单总金额+邮费金额)
+                            }else{
+                                _self.balance.deductMoney = total; // 抵扣使用金额 = 订单总金额 + 邮费金额
+                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                            }
+                        }else{ // 部分抵扣
+                            _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney; // 最终订单总价 = 订单总金额 - 余额总额
+                            _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
+                            _self.balance.surplusMoney = 0; // 抵扣后剩余余额 = 0
                         }
-                    }else{
-                        // 取消抵扣
+                    }else{// 取消抵扣
                         _self.payInfo.balancePayFlag = 0;
-                        _self.payInfo.orderShouldPayFee = total;
                         _self.balance.userMoney = _self.balance.originUserMoney;
                         _self.balance.deductMoney = 0;
                         _self.balance.surplusMoney = _self.balance.originUserMoney;
+                        if(_self.balance.isFreight){//判断是否有采美豆抵扣运费
+                            _self.payInfo.orderShouldPayFee = _self.totalPrice; // 最终订单总价 = 订单总金额
+                        }else{
+                            _self.payInfo.orderShouldPayFee = total; // 最终订单总价 = 订单总金额 + 邮费金额
+                        }
                     }
                 });
             }
         },
+        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.flag) {// 勾选了余额抵扣
+                            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;  // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                            }else{ // 部分抵扣
+                                _self.payInfo.orderShouldPayFee = total - _self.balance.userMoney;
+                                _self.balance.deductMoney = _self.balance.userMoney; // 抵扣使用金额 = 余额总额
+                                _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                            }
+                        }else{
+                            _self.payInfo.orderShouldPayFee = (_self.totalPrice*100 + _self.payInfo.freight*100 - _self.freightBeansMoney*100)/100;
+                        }
+                    }
+                }else{
+                    _self.hanldUserBeans = 0;
+                    _self.payInfo.orderShouldPayFee = _self.totalPrice ;
+                }
+            }else{
+                _self.hanldUserBeans = 0;
+                if(_self.balance.flag) {//
+                    if(_self.balance.userMoney>=total) { // 全部抵扣
+                        _self.payInfo.orderShouldPayFee = 0 ;
+                        _self.balance.deductMoney = total; // 抵扣使用金额 = (订单总金额+邮费金额)
+                        _self.balance.surplusMoney = (_self.balance.userMoney*10 - _self.balance.deductMoney*10)/10; // 抵扣后剩余余额 = 余额总额 - 抵扣使用金额
+                    }
+                }else{
+                    _self.payInfo.orderShouldPayFee = _self.totalPrice + _self.payInfo.freight;
+                }
+            }
+        },
         submitOrder: function(){
             var _self = this;
             if(this.submitLoading){return false;}
@@ -456,7 +534,8 @@ var shoppingConfirm = new Vue({
                     orderShouldPayFee: toFloat(this.payInfo.orderShouldPayFee),
                     balancePayFlag: this.payInfo.balancePayFlag,
                     freight: toFloat(this.payInfo.freight),
-                    freePostFlag: this.payInfo.freePostFlag
+                    freePostFlag: this.payInfo.freePostFlag,
+                    userBeans:this.hanldUserBeans
                 };
             var params = {
                     cartType: this.type,

+ 76 - 0
src/main/resources/static/js/user-center/account/account.js

@@ -0,0 +1,76 @@
+;
+var helpSuggestion = new Vue({
+    el: "#dashboard",
+    data: {
+        btnLoading: false,
+        isRequset:true,
+        userId: 0,
+        degree:'',
+        userInfo:{},
+        formData:new FormData(),
+        unReadMessageCount:'',//消息数
+        confirmedCount:'',//待確認數量
+        paymentCount:'',//待付款
+        waitShipmentsCount:'',//待发货
+        shipmentsCount:'',//已发货
+        salesReturnCount:'',//退货款
+        productList:[],//推荐商品
+        newsList:[],//新闻动态
+    },
+    methods: {
+        GetMyPcCenterInfo:function(){
+            var _self = this;
+            UserApi.GetMyPcCenterInfo({userId:_self.userId},function (response) {
+                if(response.code == 0){
+                    var data = response.data;
+                    _self.userInfo = data.user;
+                    _self.degree = data.degree;
+                    _self.unReadMessageCount = _self.showBadge(data.unReadMessageCount);
+                    _self.confirmedCount = _self.showBadge(data.confirmedCount);
+                    _self.paymentCount = _self.showBadge(data.paymentCount);
+                    _self.waitShipmentsCount = _self.showBadge(data.waitShipmentsCount);
+                    _self.shipmentsCount = _self.showBadge(data.shipmentsCount);
+                    _self.salesReturnCount = _self.showBadge(data.salesReturnCount);
+                    _self.productList = data.homePageAdvertiseList;
+                    _self.newsList = data.homePageInfoList;
+                    _self.isRequset = false;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                    _self.isRequset = false;
+                }
+            })
+        },
+        uploadUserPuploadAvatar: function(event){//上传头像
+            var _self = this;
+            var inputDOM = _self.$refs.clubUseLogo;
+            var file = inputDOM.files;
+            _self.formData.append('file', file[0]);
+            PublicApi.uploadimg(_self.formData,function(response){
+                _self.userInfo.image = response.data;
+                event.target.value = '';
+                UserApi.UserPuploadAvatar({userId:_self.userId,image:response.data},function(res){
+                    if(res.code==0){
+                        _self.GetMyPcCenterInfo();
+                    }
+                })
+            });
+        },
+        orderListPath:function(index){
+            window.location.href='/user/order/list.html?state='+index;
+        },
+        showBadge:function(n){//处理标签
+            var num ='';
+            if(n>100){num = 99}else{num = n;}
+            return num;
+        },
+        toFixedFn:function(text){//处理小数点后两位数
+            return Number(text).toFixed(2);
+        },
+    },
+    mounted: function () {
+        if(globalUserData){
+            this.userId = globalUserData.userId;
+            this.GetMyPcCenterInfo();
+        }
+    }
+});

+ 192 - 0
src/main/resources/static/js/user-center/account/beans.js

@@ -0,0 +1,192 @@
+;
+var orderPage = new Vue({
+    el: "#beansPage",
+    data: {
+        isRequset:true,
+        noMore: false,
+        tabsListIndex:0,
+        tabsList: [
+            {value: 0,text: '全部'},
+            {value: 1,text: '获取'},
+            {value: 2,text: '消耗'}
+        ],
+        listQuery:{
+            userId: 0,
+            year:'',
+            month:'',
+            type:0,
+            pageNum:1,
+            pageSize:10
+        },
+        beansList:[],
+        listRecord: 0,
+        pageInput: '1',
+        userBeans:0,
+        confirmedCount:'',//待確認數量
+        paymentCount:'',//待付款
+        waitShipmentsCount:'',//待发货
+        shipmentsCount:'',//已发货
+        salesReturnCount:'',//退货款
+        modelType:0,
+        orderIdentificationId:0,
+        payModelData:{},
+        hanldOrderData:{},//监听点击的单个订单项的按钮
+        confrimsBtn:true,
+    },
+    filters: {
+        NumFormat:function(text) {//处理金额
+            return Number(text).toFixed(2);
+        },
+        NumBadge:function(n){//处理
+            var num ='';
+            if(n>100){num = 99}else{num = n;}
+            return num;
+        },
+        stateTypeText:function(type){
+            var stateText = '',
+                stateTextObject={
+                    1:'获取',
+                    2:'消耗'
+                };
+            Object.keys(stateTextObject).forEach(function(key){
+                if(key == type){
+                    stateText = stateTextObject[key]
+                }
+            });
+            return stateText;
+        },
+        stateText:function (state){ //采美豆类型文字
+            var stateText = '',
+                stateTextObject={
+                    1:'注册机构',
+                    2:'升级会员机构',
+                    3:'普通机构完善资料',
+                    4:'会员机构完善资料',
+                    5:'下单',
+                    6:'线上支付订单',
+                    7:'确认收货',
+                    8:'系统发放',
+                    9:'抵用退回',
+                    10:'抵用运费',
+                    11:'退款回收'
+                };
+            Object.keys(stateTextObject).forEach(function(key){
+                if(key == state){
+                    stateText = stateTextObject[key]
+                }
+            });
+            return stateText;
+        }
+    },
+    computed: {
+        pageTotal: function () {
+            var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
+            return total > 0 ? total : 1;
+        },
+        showPageBtn: function () {
+            var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
+            total = total > 0 ? total : 1;
+            var index = this.listQuery.pageNum, arr = [];
+            if (total <= 6) {
+                for (var i = 1; i <= total; i++) {
+                    arr.push(i);
+                }
+                return arr;
+            }
+            if (index <= 3) return [1, 2, 3, 4, 5, 0, total];
+            if (index >= total - 2) return [1, 0, total - 4, total - 3, total - 2, total - 1, total];
+            return [1, 0, index - 2, index - 1, index, index + 1, index + 2, 0, total];
+        }
+    },
+    methods: {
+        tabClick:function(index){//点击Tab切换查询列表
+            var  _self = this;
+            _self.tabsListIndex = index;
+            _self.listQuery.type = index;
+            _self.GetQueryBeansListData();
+        },
+        initDate:function(){//初始化获取当前年月
+            var _self = this;
+            var _Date = new Date();
+            _self.listQuery.year = _Date.getFullYear();
+            _self.listQuery.month = _Date.getMonth()+1;
+            console.log('当前年份==========>', _self.listQuery.year);
+            console.log('当前月份==========>', _self.listQuery.month);
+        },
+        reduceMonth:function(){//减月份
+            var _self = this;
+            _self.listQuery.month--;
+            if(_self.listQuery.month == 0){
+                _self.listQuery.year--;
+                _self.listQuery.month = 12;
+            }
+            _self.GetQueryBeansListData();
+            console.log('年==========>', _self.listQuery.year);
+            console.log('月==========>', _self.listQuery.month);
+        },
+        addMonth:function(){//加月份
+            var _self = this;
+            _self.listQuery.month++;
+            if(_self.listQuery.month > 12){
+                _self.listQuery.year++;
+                _self.listQuery.month = 1;
+            }
+            _self.GetQueryBeansListData();
+        },
+        toPagination: function (pageNum) {//点击切换分页
+            if (pageNum <= this.pageTotal) {
+                this.listQuery.pageNum = pageNum;
+                this.GetQueryBeansListData();
+            }
+        },
+        checkNum: function () {//输入跳转分页
+            if (this.pageInput > this.pageTotal) {
+                this.pageInput = this.pageTotal;
+            } else if (this.pageInput < 1) {
+                this.pageInput = 1;
+            }
+        },
+        changeOrderFn:function(index,status){
+            var  _self = this;
+            _self.orderTabBarIndex = index;
+            _self.listQuery.orderState = status;
+            _self.listQuery.searchNo = '';
+            _self.listQuery.beginTime = '';
+            _self.listQuery.endTime = '';
+            _self.listQuery.pageNum = 1;
+            _self.isRequset = true;
+            _self.GetQueryBeansListData()
+        },
+        GetQueryBeansListData:function(){//查询订单列表
+            var _self = this;
+            UserApi.GetUserClubBeansList(_self.listQuery,function (response) {
+                if(response.code == 0){
+                    var data = response.data;
+                    var pageInfo = data.pageInfo;
+                    _self.userBeans = data.userBeans;
+                    if( pageInfo.list && pageInfo.list.length>0) {
+                        _self.beansList = [];
+                        _self.beansList = pageInfo.list;
+                        _self.listRecord = pageInfo.total;
+                    }else{
+                        _self.beansList = [];
+                        _self.beansList = pageInfo.list;
+                        _self.listRecord = pageInfo.total;
+                    }
+                    _self.isRequset = false;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        }
+    },
+    mounted: function () {
+        var _self = this;
+        if(globalUserData){
+            _self.userId = globalUserData.userId;
+            _self.listQuery.userId = this.userId;
+            _self.initDate();
+            _self.GetQueryBeansListData();
+        }
+    }
+});

+ 35 - 2
src/main/resources/static/js/user-center/dashboard.js

@@ -16,6 +16,10 @@ var helpSuggestion = new Vue({
         salesReturnCount:'',//退货款
         productList:[],//推荐商品
         newsList:[],//新闻动态
+        isShowBeansAlet:false,
+        bgImagePath:'',//根据类型显示图片标记
+        beanNumber:100,
+        beansType:1
     },
     methods: {
         GetMyPcCenterInfo:function(){
@@ -66,11 +70,40 @@ var helpSuggestion = new Vue({
         toFixedFn:function(text){//处理小数点后两位数
             return Number(text).toFixed(2);
         },
+        GetInitBeansInfo:function(){//初始化采美豆信息
+            var _self = this;
+            UserApi.GetUserObtainBeans({userId:_self.userId},function(response){
+                if(response.code==0){
+                    _self.beansType = response.data.beansType;
+                    _self.beanNumber = response.data.num;
+                    _self.isShowBeansAlet = true;
+                    _self.handInitType(_self.beansType);
+                }else{
+                    console.log('@=========>用户暂无采美豆推送~')
+                }
+            });
+        },
+        handInitType:function(type){//根据类型判断弹窗背景
+            var _self = this;
+            if(isPC){
+                _self.bgImagePath ='/img/account/icon-beans-'+type+'@2x.png';
+            }else {
+                _self.bgImagePath ='/img/account/icon-beans-h5-'+type+'@2x.png';
+            }
+            console.log(this.bgImagePath)
+        },
+        handleClickCancel:function () {//关闭弹窗
+            var _self = this;
+            _self.isShowBeansAlet = false;
+        }
     },
     mounted: function () {
+        var _self = this;
         if(globalUserData){
-            this.userId = globalUserData.userId;
-            this.GetMyPcCenterInfo();
+            _self.userId = globalUserData.userId;
+            _self.GetMyPcCenterInfo();
+            _self.GetInitBeansInfo();
+            _self.isShowBeansAlet = false;
         }
     }
 });

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

@@ -13,7 +13,11 @@ var orderPage = new Vue({
         returnedPurchaseList:[],//订单退款信息
         orderIdentificationId:'',//订单标识
         modelType:0,
-        isFiexd:true
+        isFiexd:true,
+        isShowBeansAlet:false,
+        bgImagePath:'',//根据类型显示图片标记
+        beanNumber:100,
+        beansType:7
     },
     filters: {
         NumFormat:function(text) {//处理金额
@@ -67,7 +71,7 @@ var orderPage = new Vue({
     methods: {
         GetQueryOrderDetailsInfo:function(){//查询订单详情
             var _self = this;
-            OrderApi.QueryOrderDetailsInfo({orderID:_self.orderId},function (response) {
+            OrderApi.QueryOrderDetailsInfo({orderID:_self.orderId , userId:_self.userId},function (response) {
                 if(response.code == 0){
                     var data = response.data;
                     _self.orderInfo = data.order;
@@ -79,7 +83,9 @@ var orderPage = new Vue({
                     _self.orderIdentificationId = '#'+ _self.orderInfo.orderID+'#';
                     _self.isRequset = false;
                 }else{
-                    CAIMEI.Alert(response.msg, '确定', false);
+                    CAIMEI.Alert(response.msg, '确定', true,function () {
+                        location.href = '/user/dashboard.html';
+                    });
                 }
             })
         },
@@ -146,9 +152,11 @@ var orderPage = new Vue({
             CAIMEI.Modal('是否确认收货?','取消','确定',function () {
                 OrderApi.GetAffirmOrder({orderID:_self.orderId},function(response){
                     if(response.code == 0){
-                        CAIMEI.dialog('操作成功',true,function () {
-                            _self.GetQueryOrderDetailsInfo();
-                        });
+                        _self.beansType = 7;
+                        _self.beanNumber = 10;
+                        _self.isShowBeansAlet = true;
+                        _self.handInitType(_self.beansType);
+                        _self.GetQueryOrderDetailsInfo();
                     }else{
                         CAIMEI.Alert(response.msg, '确定', false);
                     }
@@ -296,13 +304,26 @@ var orderPage = new Vue({
             $(el).parents('.priceTag').find('.tag').removeClass("on").siblings('.mFixed').hide();
             if(!isPC){looseBody();}
         },
+        handInitType:function(type){//根据类型判断弹窗背景
+            var _self = this;
+            if(isPC){
+                _self.bgImagePath ='/img/account/icon-beans-'+type+'@2x.png';
+            }else {
+                _self.bgImagePath ='/img/account/icon-beans-h5-'+type+'@2x.png';
+            }
+            console.log(this.bgImagePath)
+        },
+        handleClickCancel:function () {//关闭弹窗
+            var _self = this;
+            _self.isShowBeansAlet = false;
+        }
     },
     mounted: function () {
         var _self = this;
         if(globalUserData){
-            this.userId = globalUserData.userId;
-            this.orderId = CAIMEI.getUrlParam('orderId');
-            this.GetQueryOrderDetailsInfo();
+            _self.userId = globalUserData.userId;
+            _self.orderId = CAIMEI.getUrlParam('orderId');
+            _self.GetQueryOrderDetailsInfo();
         }
         $(window).scroll(function (event) {
             var supportPageOffset = window.pageXOffset !== undefined; // 判断是否支持pageXOffset

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

@@ -36,6 +36,10 @@ var orderPage = new Vue({
         payModelData:{},
         hanldOrderData:{},//监听点击的单个订单项的按钮
         confrimsBtn:true,
+        isShowBeansAlet:false,
+        bgImagePath:'',//根据类型显示图片标记
+        beanNumber:100,
+        beansType:7
     },
     filters: {
         NumFormat:function(text) {//处理金额
@@ -216,9 +220,11 @@ var orderPage = new Vue({
             CAIMEI.Modal('是否确认收货?','取消','确定',function () {
                 OrderApi.GetAffirmOrder({orderID:orderId},function(response){
                     if(response.code == 0){
-                        CAIMEI.dialog('操作成功',true,function () {
-                            _self.GetQueryOrderListData();
-                        });
+                        _self.beansType = 7;
+                        _self.beanNumber = 10;
+                        _self.isShowBeansAlet = true;
+                        _self.handInitType(_self.beansType);
+                        _self.GetQueryOrderListData();
                     }else{
                         CAIMEI.Alert(response.msg, '确定', false);
                     }
@@ -347,19 +353,32 @@ var orderPage = new Vue({
             document.body.removeChild(oInput);
             CAIMEI.dialog('复制成功');
         },
+        handInitType:function(type){//根据类型判断弹窗背景
+            var _self = this;
+            if(isPC){
+                _self.bgImagePath ='/img/account/icon-beans-'+type+'@2x.png';
+            }else {
+                _self.bgImagePath ='/img/account/icon-beans-h5-'+type+'@2x.png';
+            }
+            console.log(this.bgImagePath)
+        },
+        handleClickCancel:function () {//关闭弹窗
+            var _self = this;
+            _self.isShowBeansAlet = false;
+        }
     },
     mounted: function () {
+        var _self = this;
         if(globalUserData){
-            this.userId = globalUserData.userId;
-            this.listQuery.orderState = CAIMEI.getUrlParam('state');
-            this.listQuery.userId = this.userId;
-            this.orderTabBarIndex = this.listQuery.orderState;
-            this.GetQueryOrderListData();
-            this.GetQueryOrderNumInfo();
+            _self.userId = globalUserData.userId;
+            _self.listQuery.orderState = CAIMEI.getUrlParam('state');
+            _self.listQuery.userId = this.userId;
+            _self.orderTabBarIndex = this.listQuery.orderState;
+            _self.GetQueryOrderListData();
+            _self.GetQueryOrderNumInfo();
         }
         $('.navLayout').find('.navList').removeClass("on").find('.con').hide().find('a').removeClass("on");
         $('.navLayout').find('.navList').eq(0).addClass("on").find('.con').show().find('a').eq(0).addClass("on");
-        var _self = this;
         var startDate = getDateStr(new Date(), -365), endDate = getDateStr(new Date(),0);
         $('#orderDate').dateRangePicker({
             language: 'cn',

+ 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('您的升级申请已提交审核','确定',true,function () {
+                        CAIMEI.Alert('升级信息提交成功,审核通过后您的身份即成为会员机构并且获得20采美豆的奖励','知道了',true,function () {
                             _self.clubLoginIndex();
                             _self.loginLoading = false;
                         });

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

@@ -61,7 +61,7 @@
                         <a href="/help/1013.html" target="_blank">《隐私权政策》</a>
                     </p>
                     <span class="errTips icon mIcon show" v-if="isShowAgree">请阅读并同意协议</span>
-                    <div class="btn" :class="loginLoading ? 'disabled':''"  @click="clubRegister()">注册</div>
+                    <div class="btn" :class="loginLoading ? 'disabled':''"  @click="clubRegister()" onclick="_czc.push(['_trackEvent','注册页面','点击','确认注册','','Um_Event_ConfirmRegister'])">注册</div>
                 </div>
             </form>
         </div>
@@ -79,14 +79,14 @@
                     <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="30" @blur="blurHandle($event)" needverify>
                     <i class="checked icon mIcon"></i>
                     <span class="errTips icon mIcon" tips="请输入机构名称"></span>
                 </div>
                 <div class="formLine">
-                    <p>机构简称:</p>
-                    <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入机构简称" maxlength="10" >
+                    <p>机构简称(<span>示例:美丽人生</span>):</p>
+                    <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入姓名或常用名" maxlength="10" >
                 </div>
                 <div class="formLine">
                     <p><em>*</em>联系地址:</p>

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

@@ -65,7 +65,7 @@
                     </div>
                     <h6 class="tit">基本信息</h6>
                     <div class="formLine">
-                        <p><em>*</em>公司名称:</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>
@@ -83,7 +83,7 @@
                     </div>
                     <h6 class="tit">详细信息</h6>
                     <div class="formLine">
-                        <p>公司简称:</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/supplier-information.html

@@ -21,7 +21,7 @@
                 <form>
                     <h6 class="tit">基本信息</h6>
                     <div class="formLine">
-                        <p><em>*</em>公司名称:</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>
@@ -39,7 +39,7 @@
                     </div>
                     <h6 class="tit">详细信息</h6>
                     <div class="formLine">
-                        <p>公司简称:</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>机构名称:</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>机构简称:</p>
+                    <p>机构简称(<span>示例:美丽人生</span>):</p>
                     <input type="text" v-model.trim="clubUser.name" placeholder="请输入机构简称" :rule="rule.name" maxlength="50" needverify>
                 </div>
                 <div class="formLine">

+ 1 - 1
src/main/resources/templates/article/list.html

@@ -15,7 +15,7 @@
     <a href="/" target="_blank">首页</a>&gt; <a  th:each="type: ${articleType}" th:if="${typeId}==${type.id}" th:text="${type.name}" href="javascript:void(0);" class="title newTitle"></a>
 </div>
 <!--主体内容-->
-<div class="content clearfix">
+<div class="content clearfix" id="ArticleContent">
     <div class="mainData">
         <div class="new-list" id="articleList" v-cloak>
             <div v-if="params.keyword" class="search">

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

@@ -48,7 +48,7 @@
                     </div>
                 </li>
                 <template v-else>
-                    <li><a href="/register.html" rel="nofollow">注册</a></li>
+                    <li><a href="/register.html" rel="nofollow" onclick="_czc.push(['_trackEvent','顶部导航','注册','点击','','Um_Event_Regirster'])">注册</a></li>
                     <li><a href="/login.html" rel="nofollow">登录</a></li>
                 </template>
             </ul>
@@ -81,7 +81,7 @@
                         </select>
                     </div>
                     <input class="keyword" type="text" placeholder="请输入搜索关键词" maxlength="30"/>
-                    <a class="searchBtn icon mIcon" href="javascript:void(0);"></a>
+                    <a class="searchBtn icon mIcon" href="javascript:void(0);" onclick="_czc.push(['_trackEvent','顶部导航','搜索按钮','点击','','Um_Event_SearchButton'])"></a>
                 </div>
                 <!-- 热门搜索关键词 -->
                 <div class="hotKey">
@@ -194,6 +194,7 @@
             </div>
         </div>
     </div>
-    <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>

+ 1 - 1
src/main/resources/templates/error/404.html

@@ -80,7 +80,7 @@
 <div style="text-align:center;background: #fff">
 <!--    <iframe id="errorContent" src="/search_children.html"></iframe>-->
         <div id="errorContent">
-            <img src="https://admin-b.caimei365.com/userfiles/1/images/photo/2020/11/404.png">
+            <img src="/img/base/404.png">
             <p>您访问的页面不存在,建议您......</p>
             <a href="/index.html">返回首页</a>
         </div>

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

@@ -57,7 +57,7 @@
                         <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" >登录查看价格></a></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-else class="fave-text">¥<span class="big">{{detail.price}}</span></span>
                         </p>

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

@@ -34,7 +34,7 @@
                             <a href="/flea-market/intro.html">二手市场介绍</a>
                         <li/>
                         <li class="fabu">
-                            <a href="/flea-market/form.html">我要发布</a>
+                            <a href="/flea-market/form.html" onclick="_czc.push(['_trackEvent','二手市场列表','我要发布','点击','','Um_Event_SecondReleaseSubmit'])">我要发布</a>
                         <li/>
                     </div>
 
@@ -70,7 +70,7 @@
                         </a>
                         <div class="targetprice">
                             <span v-if="item.detailTalkFlag ==2 && userID==null">价格详聊</span>
-                            <span v-else-if="userID==null" class="priceparam" @click="toLogin">登录查看价格></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>
                         </div>

+ 9 - 9
src/main/resources/templates/index.html

@@ -44,12 +44,12 @@
                     <div class="section_right_item" th:if="${sideJson.get('liveList')}!=null and ${sideJson.get('liveList').size}>0">
                         <div class="right_item_title">
                             <p>精彩直播</p>
-                            <a href="https://wx.vzan.com/plug-ins/?v=637429463853329710#/FixupIndex/399803126?shareuid=0" target="_blank"  rel="nofollow">
+                            <a href="https://wx.vzan.com/plug-ins/?v=637429463853329710#/FixupIndex/399803126?shareuid=0" target="_blank"  rel="nofollow" onclick="_czc.push(['_trackEvent','商城首页','精彩直播','点击','','Um_Event_HomeLiveTemplateClick'])">
                                 <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
                             </a>
                         </div>
                         <div class="right_item_main" th:each="live,stat : ${sideJson.get('liveList')}" th:object="${live}">
-                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{liveTitle}" class="item_banner" target="_blank" rel="nofollow">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{liveTitle}" class="item_banner" target="_blank" rel="nofollow" onclick="_czc.push(['_trackEvent','商城首页','精彩直播','点击','','Um_Event_HomeLiveTemplateClick'])">
                                 <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{liveTitle}">
                                 <div class="name" th:text="*{liveTitle}"></div>
                                 <div class="statu">
@@ -58,7 +58,7 @@
                                     <template th:if="*{liveStatus}==3"><i class="mIcon icon-end"></i><p>看回放</p></template>
                                 </div>
                             </a>
-                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{liveTitle}" class="item_text" target="_blank" rel="nofollow">
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{liveTitle}" class="item_text" target="_blank" rel="nofollow" onclick="_czc.push(['_trackEvent','商城首页','精彩直播','点击','','Um_Event_HomeLiveTemplateClick'])">
                                 <p class="item_text_name" th:text="*{liveTitle}"></p>
                             </a>
                         </div>
@@ -66,16 +66,16 @@
                     <div id="fixed-wrap" class="section_right_item" th:if="${sideJson.get('cmImageList')}!=null and ${sideJson.get('cmImageList').size}>0">
                         <div class="right_item_title">
                             <p>最新活动</p>
-                            <a href="https://www.caimei365.com/promotions.html" target="_blank">
+                            <a href="https://www.caimei365.com/promotions.html" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','最新活动','点击','','Um_Event_HomeActivityTemplateClick'])">
                                 <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
                             </a>
                         </div>
                         <div class="right_item_main" th:each="image,stat : ${sideJson.get('cmImageList')}" th:object="${image}">
-                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','最新活动','点击','','Um_Event_HomeActivityTemplateClick'])">
                                 <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{title}">
                                 <div class="name" th:text="*{title}"></div>
                             </a>
-                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank">
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','最新活动','点击','','Um_Event_HomeActivityTemplateClick'])">
                                 <p class="item_text_name" th:text="*{title}"></p>
                             </a>
                         </div>
@@ -83,16 +83,16 @@
                     <div class="section_right_item" th:if="${sideJson.get('infoList')}!=null and ${sideJson.get('infoList').size}>0">
                         <div class="right_item_title">
                             <p>热门文章</p>
-                            <a href="https://www.caimei365.com/info/center-3-1.html" target="_blank">
+                            <a href="https://www.caimei365.com/info/center-3-1.html" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','热门文章','点击','','Um_Event_HomeArticleTemplateClick'])">
                                 <template v-if="isPC">更多&gt;</template><template v-else>&gt;</template>
                             </a>
                         </div>
                         <div class="right_item_main" th:each="info,stat : ${sideJson.get('infoList')}" th:object="${info}">
-                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank">
+                            <a th:if="${stat.index}==0" th:href="*{link}" th:title="*{title}" class="item_banner" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','热门文章','点击','','Um_Event_HomeArticleTemplateClick'])">
                                 <img src="/img/base/placeholder.png" th:attr="data-original=*{homePageImage}" th:alt="*{title}">
                                 <div class="name" th:text="*{title}"></div>
                             </a>
-                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank">
+                            <a th:if="${stat.index}>0" th:href="*{link}" th:title="*{title}" class="item_text" target="_blank" onclick="_czc.push(['_trackEvent','商城首页','热门文章','点击','','Um_Event_HomeArticleTemplateClick'])">
                                 <p class="item_text_name info" th:text="*{title}"></p>
                                 <p class="item_text_time" v-if="isPC" th:text="*{createDate}"></p>
                             </a>

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

@@ -137,10 +137,10 @@
     <div class="pay-button-main" v-if="tabIndex == 0">
         <div class="inner">
             <div class="pay-button" v-if="mobileTabIndex === 2 || mobileTabIndex === 3">
-                <a v-show="isPC" href="javascript:void(0);" id="paySubmit" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''">立即支付</a>
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付','点击','网银支付','','Um_Event_CopyUnionPay'])">立即支付</a>
             </div>
             <div class="pay-button" v-else>
-                <a href="javascript:void(0);" id="payMobileSubmit" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''">立即支付</a>
+                <a href="javascript:void(0);" id="payMobileSubmit" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付','点击','移动支付','','Um_Event_ConfirmMobilePay'])">立即支付</a>
             </div>
         </div>
     </div>

+ 5 - 5
src/main/resources/templates/product/detail.html

@@ -166,16 +166,16 @@
                 <div v-if="!isPC" class="wechatH5 btnBox"><img src="/img/base/wechat.h5.png" style="padding: 2.7vw 0"></div>
                 <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
                     <div  class="btnBox" v-if="priceObj.priceFlag==2 && priceObj.userIdentity==4">
-                        <a class="upgrade" href="/user/setting/upgrade.html">升级会员查看价格</a>
+                        <a class="upgrade" href="/user/setting/upgrade.html" onclick="_czc.push(['_trackEvent','商品详情','点击','升级查看价格','','Um_Event_ProductUpgrade'])">升级会员查看价格</a>
                     </div>
                     <div class="btnBox" v-else-if="(priceObj.priceFlag==0 && priceObj.userIdentity!=3) || (priceObj.priceFlag==2 && priceObj.userIdentity==2)">
-                        <a href="javascript:void(0);" class="cart icon" @click='addShopCart()' v-if="!isNoneDisabled">加入购物车</a>
-                        <a href="javascript:void(0);" class="buy" @click="buyNowSubmit()" v-if="!isNoneDisabled">立即购买</a>
+                        <a href="javascript:void(0);" class="cart icon" @click='addShopCart()' v-if="!isNoneDisabled" onclick="_czc.push(['_trackEvent','商品详情','点击','加入购物车','','Um_Event_ProductAddCart'])">加入购物车</a>
+                        <a href="javascript:void(0);" class="buy" @click="buyNowSubmit()" v-if="!isNoneDisabled" onclick="_czc.push(['_trackEvent','商品详情','点击','立即购买','','Um_Event_ProductBuyConfirm'])">立即购买</a>
                     </div>
                 </template>
                 <template v-else>
                     <div  class="btnBox">
-                        <a href="javascript:void(0);" class="upgrade" @click="toLogin" v-if="!isNoneDisabled">登录查看价格</a>
+                        <a href="javascript:void(0);" class="upgrade" @click="toLogin" v-if="!isNoneDisabled" onclick="_czc.push(['_trackEvent','商品详情','点击','登录查看价格','','Um_Event_ProductLoginPrice'])">登录查看价格</a>
                     </div>
                 </template>
             </div>
@@ -273,7 +273,7 @@
                         <div class="con" th:text="${product.shopAddress}"></div>
                     </template>
                     <div class="tit">满意度:<i th:each="i:${#numbers.sequence(1,5)}" class="icon heart"></i></div>
-                    <a th:href="@{'/supplier-'+ ${product.shopId} +'.html'}" class="btn">查看主页</a>
+                    <a th:href="@{'/supplier-'+ ${product.shopId} +'.html'}" class="btn" onclick="_czc.push(['_trackEvent','商品详情','点击','查看主页','','Um_Event_ProductShopHome'])">查看主页</a>
                 </div>
             </div>
             <div class="contact">

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

@@ -298,6 +298,14 @@
             <p v-if="reducedPrice>0">促销满减: <span><em>- ¥{{reducedPrice | NumFormat}}</em></span></p>
             <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>
+                    <label class="check">
+                        <input v-model="balance.isFreight" name="useBalance" type="checkbox" @change="changeDeductibleFreight()">
+                    </label>
+                </span>
+            </p>
         </div>
     </div>
 
@@ -310,7 +318,7 @@
             </div>
             <div class="right mfbt">
                 <div class="item">总价:<em>¥{{payInfo.orderShouldPayFee | NumFormat}}</em></div>
-                <a :class="submitLoading?'submit dis':'submit'" href="javascript:void(0);" @click="submitOrder()">提交订单</a>
+                <a :class="submitLoading?'submit dis':'submit'" href="javascript:void(0);" @click="submitOrder()" onclick="_czc.push(['_trackEvent','确认订单','点击','用户提交订单','','Um_Event_ConfirmOrder'])">提交订单</a>
             </div>
         </div>
     </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>公司名称:</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>公司简称:</p>
+                                <p>公司简称(<span>示例:华熙生物</span>):</p>
                                 <input  class="massageBtn"  type="text" v-model.trim="params.shortName"  placeholder="请与营业执照的注册名称保持一致"  maxlength="10" >
                                 <span class="errTips"></span>
                             </div>

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

@@ -55,7 +55,7 @@
                     </template>
                     <li v-else-if="isPC" v-for="i in 3"></li>
                 </ul>
-                <a v-if="isPC" :href="'/supplier-'+shop.shopId+'.html'" target="_blank" class="four">进入本店铺>>></a>
+                <a v-if="isPC" :href="'/supplier-'+shop.shopId+'.html'" target="_blank" class="four" onclick="_czc.push(['_trackEvent','搜索供应商','点击','查看主页','','Um_Event_SearchShopListHome'])">进入本店铺>>></a>
             </div>
         </li>
     </ul>

+ 172 - 0
src/main/resources/templates/user-center/account/account.html

@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <title>采美365网</title>
+    <template th:replace="components/head-link"></template>
+    <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/user-center/dashboard.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+
+<!-- 我的采美 -->
+<div id="dashboard">
+    <div class="navLayout" v-cloak>
+        <div v-if="isPC" class="crumbs">
+            <span>我的采美</span>
+        </div>
+        <div class="wrap clear">
+            <!--左侧导航-->
+            <template th:replace="user-center/components/tableft"></template>
+            <div class="right">
+                <!--loading-->
+                <div v-if="isRequset" class="loading">
+                    <img src="/img/base/loading.gif">
+                </div>
+                <template v-else>
+                    <div class="user-header mfbt">
+                        <div class="logo">
+                            <input ref="clubUseLogo"  class="logo-file" type="file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadUserPuploadAvatar">
+                            <i class="file icon mIcon" v-if="userInfo.image == null"></i>
+                            <img v-else :src="userInfo.image == null ? '' : userInfo.image" alt="">
+                        </div>
+                        <div class="account">
+                            <div class="name">
+                                <span>{{userInfo.name}}</span>
+                                <a href="/user/setting/upgrade.html" v-if="userInfo.userIdentity === 4">
+                                    去升级会员机构
+                                    <div class="name-tips">采美豆</div>
+                                </a>
+                            </div>
+                            <div class="msg"><span>资料完整度:<em class="red">{{degree}}</em></span><a href="/user/setting/information.html">立即完善</a></div>
+                        </div>
+                        <div class="message">
+                            <a href="/user/message/list.html">
+                                <i class="icon mIcon">
+                                    <span  v-if="unReadMessageCount>0" :class="[unReadMessageCount < 10 ? 'circular':'ellipse']">{{unReadMessageCount >= 99 ? '99+' : unReadMessageCount}}</span>
+                                </i>
+                            </a>
+                        </div>
+                    </div>
+                    <div class="user-content clear">
+                        <div class="title order">我的资产</div>
+                        <div class="section">
+                            <div class="user-main account">
+                                <a href="javascript:void(0);" class="account-cell">
+                                    <span>账户余额:</span>
+                                    <span class="red">{{toFixedFn(userInfo.ableUserMoney)}}</span>
+                                </a>
+                                <a href="" class="account-cell">
+                                    <span>采美豆:</span>
+                                    <span class="red">30000</span>
+                                </a>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="user-content clear">
+                        <div class="title order">我的订单</div>
+                        <div class="section">
+                            <div class="user-main tabs">
+                                <div class="tabs-left mfw">
+                                    <div v-if="!isPC" class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(0)">
+                                            <span class="p">全部订单</span>
+                                        </a>
+                                    </div>
+                                    <div class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(1)">
+                                            <i class="icon icon-1">
+                                                <span v-if="confirmedCount>0" :class="[confirmedCount < 10 ? 'circular':'ellipse']">{{confirmedCount >= 99 ? '99+' : confirmedCount}}</span>
+                                            </i>
+                                            <span class="p">待确认</span>
+                                        </a>
+                                    </div>
+                                    <div class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(2)">
+                                            <i class="icon icon-2">
+                                                <span v-if="paymentCount>0" :class="[paymentCount < 10 ? 'circular':'ellipse']">{{paymentCount >= 99 ? '99+' : paymentCount}}</span>
+                                            </i>
+                                            <span class="p">待付款</span>
+                                        </a>
+                                    </div>
+                                    <div class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(3)">
+                                            <i class="icon icon-3">
+                                                <span v-if="waitShipmentsCount>0" :class="[waitShipmentsCount < 10 ? 'circular':'ellipse']">{{waitShipmentsCount >= 99 ? '99+' : waitShipmentsCount}}</span>
+                                            </i>
+                                            <span class="p">待发货</span>
+                                        </a>
+                                    </div>
+                                    <div class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(4)">
+                                            <i class="icon icon-4">
+                                                <span v-if="shipmentsCount>0" :class="[shipmentsCount < 10 ? 'circular':'ellipse']">{{shipmentsCount >= 99 ? '99+' : shipmentsCount}}</span>
+                                            </i>
+                                            <span class="p">已发货</span>
+                                        </a>
+                                    </div>
+                                    <div class="item">
+                                        <a href="javascript:void(0);" @click="orderListPath(5)">
+                                            <i class="icon icon-5">
+                                                <span v-if="salesReturnCount>0" :class="[salesReturnCount < 10 ? 'circular':'ellipse']">{{salesReturnCount >= 99 ? '99+' : salesReturnCount}}</span>
+                                            </i>
+                                            <span class="p">退货/款</span>
+                                        </a>
+                                    </div>
+                                </div>
+                                <div v-if="isPC" class="tabs-right"><a href="javascript:void(0);" @click="orderListPath(0)">全部订单<span class="icon mIcon"></span></a></div>
+                            </div>
+                        </div>
+                    </div>
+                    <!--美博会活动标题-->
+<!--                    <div class=" user-content coupon">-->
+<!--                        <a href="/user/beautyfair.html" id="meibohui" onclick="_czc.push(['_trackEvent','美博会','点击','用户访问','','meibohui'])">-->
+<!--                            <img src="https://static.caimei365.com/app/meibohui/www/activity-in-pc.jpg" class="coupon_img" v-if="isPC"/>-->
+<!--                            <img src="https://static.caimei365.com/app/meibohui/www/activity-in-h5.jpg" class="coupon_img" v-else>-->
+<!--                        </a>-->
+<!--		            </div>-->
+                    <div class="user-content">
+                        <div class="title">今日推荐</div>
+                        <div class="section">
+                            <div class="user-main product clear">
+                                <a class="product-item" v-for="(item, index) in productList" :key="index" :href="item.link" target="_blank">
+                                    <div class="product-img">
+                                        <img :src="item.image" :alt="item.title">
+                                    </div>
+                                    <div class="product-name"><p>{{item.title}}</p></div>
+                                </a>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="user-content">
+                        <div class="title">最新动态<a href="/info/center-3-1.html" target="_blank">全部动态<i class="icon mIcon"></i></a></div>
+                        <div class="section">
+                            <div class="user-main news">
+                                <a class="new-list" v-for="(item, index) in newsList" :key="index" :href="item.link" target="_blank">
+                                    <p class="text">{{item.title}}</p>
+                                    <p class="time">{{item.addTime}}</p>
+                                </a>
+                            </div>
+                        </div>
+                    </div>
+                </template>
+            </div>
+        </div>
+    </div>
+    <!--loading-->
+    <div v-else class="loading">
+        <img src="/img/base/loading.gif">
+    </div>
+</div>
+
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/dashboard.js(v=${version})}"></script>
+</body>
+</html>

+ 109 - 0
src/main/resources/templates/user-center/account/beans.html

@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <title>采美365网</title>
+    <template th:replace="components/head-link"></template>
+    <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/user-center/account/beans.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+<!-- 采美豆明细 -->
+<div id="beansPage" v-cloak>
+    <div class="navLayout" v-cloak>
+        <div v-if="isPC" class="crumbs">
+            <span>我的采美</span>
+            <span>&gt;</span>
+            <span>采美豆</span>
+        </div>
+        <div class="wrap clear">
+            <!--左侧导航-->
+            <template th:replace="user-center/components/tableft"></template>
+            <div class="right">
+                <div class="beans-header">
+                    <div class="beans-header-l">
+                        <span>可用数量:</span>
+                        <span class="big">{{ userBeans }}</span>
+                    </div>
+                    <div class="beans-header-r">
+                        <a href="/help/1031.html">查看采美豆说明<i class="icon mIcon"></i></a>
+                    </div>
+                </div>
+                <!--loading-->
+                <div v-if="isRequset" class="loading">
+                    <img src="/img/base/loading.gif">
+                </div>
+                <div class="beans-container clear" v-else>
+                    <div class="beans-content-tabs clearfix">
+                        <div class="tabs-main">
+                            <div class="time-template">
+                                <div class="time-pre" @click="reduceMonth">
+                                    <i class="icon mIcon"></i>
+                                </div>
+                                <div class="time-text">
+                                    {{ ( listQuery.year ||'') +'年'+( listQuery.month ||'') +'月'}}
+                                </div>
+                                <div class="time-next" @click="addMonth">
+                                    <i class="icon mIcon"></i>
+                                </div>
+                            </div>
+                            <div class="time-tabs">
+                                <div   class="time-tabs-cell"
+                                       v-for="(tabs, index) in tabsList"
+                                       :key="index"
+                                       :class="tabsListIndex == index ? 'active' : ''"
+                                       @click="tabClick(index)"
+                                >
+                                    {{ tabs.text }}
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!--数据为空-->
+                    <div class="beans-content-list" v-if="beansList.length > 0">
+                        <div class="beans-list-cell" v-for="(beans, index) in beansList" :key="index">
+                            <div class="list-cell-left">
+                                <p class="black">{{ beans.beansType | stateText }}</p>
+                                <p class="none">{{ beans.addTime }}</p>
+                            </div>
+                            <div class="list-cell-right">
+                                <p class="black">{{ beans.type | stateTypeText }}</p>
+                                <p class="blod" :style="{color:beans.type == 1 ? '#ff2a2a' : '#15C47A'}"><span>{{beans.type =='1'? '+' : '-'}}</span>{{ beans.num }}</p>
+                            </div>
+                        </div>
+                    </div>
+                    <div v-else class="empty">
+                        <img src="/img/account/icon-emptybeans@2x.png">
+                        <div class="msg"><p>暂无数据</p></div>
+                    </div>
+                </div>
+                <!--分页-->
+                <div v-if="(!isPC) && noMore" class="noMore">---- 没有更多了 ----</div>
+                <div v-if="isPC && pageTotal>1" class="pageWrap clear">
+                    <a v-if="listQuery.pageNum>1" class="prev" @click="toPagination(listQuery.pageNum*1-1)" href="javascript:void(0);"></a>
+                    <template v-for="n in showPageBtn">
+                        <a v-if="n" :class="{'on':(n==listQuery.pageNum)}" @click="toPagination(n)" href="javascript:void(0);" v-text="n"></a>
+                        <span v-else>···</span>
+                    </template>
+                    <a v-if="listQuery.pageNum<pageTotal" class="next" @click="toPagination(listQuery.pageNum*1+1)" href="javascript:void(0);"></a>
+                    <span>共<b v-text="pageTotal>1?pageTotal:1"></b>页</span>
+                    <span>跳至</span>
+                    <input v-model="pageInput" @blur="checkNum()"/>
+                    <span>页</span>&nbsp;
+                    <a class="btn" href="javascript:void(0);" @click="toPagination(pageInput)">点击跳转</a>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/account/beans.js(v=${version})}"></script>
+</body>
+</html>

+ 49 - 3
src/main/resources/templates/user-center/dashboard.html

@@ -34,9 +34,20 @@
                             <img v-else :src="userInfo.image == null ? '' : userInfo.image" alt="">
                         </div>
                         <div class="account">
-                            <div class="name"><span>{{userInfo.name}}</span><a href="/user/setting/upgrade.html" v-if="userInfo.userIdentity === 4">去升级会员机构</a></div>
-                            <div class="money">余额: <em>{{toFixedFn(userInfo.ableUserMoney)}}</em> 元</div>
+                            <div class="name">
+                                <span>{{userInfo.name}}</span>
+                                <a href="/user/setting/upgrade.html" v-if="userInfo.userIdentity === 4 && isPC" onclick="_czc.push(['_trackEvent','个人中心','升级入口','点击','','Um_Event_ClubUpgrade'])">
+                                    去升级会员机构
+                                    <div class="name-tips">采美豆</div>
+                                </a>
+                            </div>
                             <div class="msg"><span>资料完整度:<em class="red">{{degree}}</em></span><a href="/user/setting/information.html">立即完善</a></div>
+                            <div class="upgrade">
+                                <a href="/user/setting/upgrade.html" v-if="userInfo.userIdentity === 4 && !isPC" onclick="_czc.push(['_trackEvent','个人中心','升级入口','点击','','Um_Event_ClubUpgrade'])">
+                                    去升级会员机构
+                                    <div class="name-tips">采美豆</div>
+                                </a>
+                            </div>
                         </div>
                         <div class="message">
                             <a href="/user/message/list.html">
@@ -47,7 +58,22 @@
                         </div>
                     </div>
                     <div class="user-content clear">
-                        <div v-show="isPC" class="title">我的订单</div>
+                        <div class="title order">我的资产</div>
+                        <div class="section">
+                            <div class="user-main account">
+                                <a href="javascript:void(0);" class="account-cell">
+                                    <span>账户余额:</span>
+                                    <span class="red">{{toFixedFn(userInfo.ableUserMoney)}}</span>
+                                </a>
+                                <a href="/user/beans.html" class="account-cell">
+                                    <span>采美豆:</span>
+                                    <span class="red">{{ userInfo.userBeans }}</span>
+                                </a>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="user-content clear">
+                        <div class="title order">我的订单</div>
                         <div class="section">
                             <div class="user-main tabs">
                                 <div class="tabs-left mfw">
@@ -135,6 +161,26 @@
                 </template>
             </div>
         </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>
+                        </div>
+                    </div>
+                </div>
+                <div class="cmbeans-alert-content-tips">
+                    <div class="tips">采美豆可抵扣运费</div>
+                </div>
+                <i class="icon mIcon" @click.stop="handleClickCancel"></i>
+            </div>
+        </div>
     </div>
     <!--loading-->
     <div v-else class="loading">

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

@@ -69,6 +69,7 @@
                                     <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>
@@ -228,7 +229,10 @@
                                 <a class="btn primary" href="javascript: void(0);" v-if="['0'].indexOf(orderInfo.status)!=-1"  @click="hanldConfirmOrderFn()">确认订单</a>
 <!--                                <a class="btn cancel" href="javascript: void(0);" v-if="['6'].indexOf(orderInfo.status)!=-1" @click="hanldDeleteOrderFn()">删除订单</a>-->
                                 <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(orderInfo.status)!=-1 && orderInfo.secondHandOrderFlag!=1" @click="hanldQueryExpressFn()">查看物流</a>
-                                <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(orderInfo.status)!=-1" @click="hanldReceivingOrderFn()">确认收货</a>
+                                <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(orderInfo.status)!=-1" @click="hanldReceivingOrderFn()">
+                                    确认收货
+                                    <div class="tips">采美豆</div>
+                                </a>
                                 <div class="shopinfo" v-if="['11','12','13','21','22','23','111'].indexOf(orderInfo.status)!=-1">
                                     <p class="price-total" v-if="orderInfo.pendingPayments!=0">待付金额:<span class="red">¥{{orderInfo.pendingPayments | NumFormat}}</span> </p>
                                 </div>
@@ -239,6 +243,26 @@
             </div>
         </div>
     </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>
+                    </div>
+                </div>
+            </div>
+            <div class="cmbeans-alert-content-tips">
+                <div class="tips">采美豆可抵扣运费</div>
+            </div>
+            <i class="icon mIcon" @click.stop="handleClickCancel"></i>
+        </div>
+    </div>
 </div>
 
 <!-- 引入底部 -->

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

@@ -107,7 +107,10 @@
                                     <a class="btn primary" href="javascript: void(0);" v-if="['0'].indexOf(order.status)!=-1"  @click="hanldConfirmOrderFn(order.orderID)">确认订单</a>
 <!--                                    <a class="btn cancel" href="javascript: void(0);" v-if="['6'].indexOf(order.status)!=-1" @click="hanldDeleteOrderFn(order.orderID)">删除订单</a>-->
                                     <a class="btn cancel" href="javascript: void(0);"  v-if="['4','5','12','13','33','22','23','32','77'].indexOf(order.status)!=-1 && order.secondHandOrderFlag !=1" @click="hanldQueryExpressFn(order.orderID)">查看物流</a>
-                                    <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(order.status)!=-1 && order.secondHandOrderFlag !=1" @click="hanldReceivingOrderFn(order.orderID)">确认收货</a>
+                                    <a class="btn primary" href="javascript: void(0);"  v-if="['33'].indexOf(order.status)!=-1 && order.secondHandOrderFlag !=1" @click="hanldReceivingOrderFn(order.orderID)">
+                                        确认收货
+                                        <div class="tips">采美豆</div>
+                                    </a>
                                 </div>
                             </div>
                         </div>
@@ -135,6 +138,26 @@
             </div>
         </div>
     </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>
+                    </div>
+                </div>
+            </div>
+            <div class="cmbeans-alert-content-tips">
+                <div class="tips">采美豆可抵扣运费</div>
+            </div>
+            <i class="icon mIcon" @click.stop="handleClickCancel"></i>
+        </div>
+    </div>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

+ 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>机构名称:</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>机构简称:</p>
+                                <p>机构简称(<span>示例:美丽人生</span>):</p>
                                 <input type="text" v-model.trim="clubUpgradeUser.shortName" placeholder="请输入机构简称" maxlength="10" >
                             </div>
                             <div class="formLine">

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

@@ -169,7 +169,7 @@
                                 <span class="errTips icon mIcon" tips="" :class="userMainProflag?'show':''">请选择或添加主营产品</span>
                             </div>
                             <div class="subLine">
-                                <button class="btn" type="button" @click="SubComfirUpgradeFn()">确认升级并提交审核</button>
+                                <button class="btn" type="button" @click="SubComfirUpgradeFn()" onclick="_czc.push(['_trackEvent','升级页面','点击','用户确认升级','','Um_Event_ConfirmClubUpgrade'])">确认升级并提交审核</button>
                             </div>
                         </form>
                     </div>