Procházet zdrojové kódy

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

zhengjinyi před 3 roky
rodič
revize
0132eede4b
82 změnil soubory, kde provedl 1232 přidání a 854 odebrání
  1. 11 11
      src/main/resources/config/dev/application-dev.yml
  2. 1 1
      src/main/resources/static/css/base/floor.css
  3. 1 1
      src/main/resources/static/css/pay/caimei-pay.css
  4. 2 2
      src/main/resources/static/css/pay/caimei-paycash.css
  5. 1 1
      src/main/resources/static/css/shopping/shopping.css
  6. 42 51
      src/main/resources/static/css/user-center/member/member-page.css
  7. 3 4
      src/main/resources/static/css/user-center/member/member-product.css
  8. 2 2
      src/main/resources/static/css/user-center/member/member-record.css
  9. 1 1
      src/main/resources/static/css/user-center/order/detail.css
  10. binární
      src/main/resources/static/img/member/h5-cm-svip-bg-01.png
  11. binární
      src/main/resources/static/img/member/h5-cm-svip-bg-02.png
  12. binární
      src/main/resources/static/img/member/h5-cm-svip-bg-03.png
  13. binární
      src/main/resources/static/img/member/h5-cm-svip-coupon-able.png
  14. binární
      src/main/resources/static/img/member/h5-cm-svip-coupon-unable.png
  15. binární
      src/main/resources/static/img/member/h5-cm-svip-icon1.png
  16. binární
      src/main/resources/static/img/member/h5-cm-svip-icon2.png
  17. binární
      src/main/resources/static/img/member/h5-cm-svip-icon3.png
  18. binární
      src/main/resources/static/img/member/h5-cm-svip-icon4.png
  19. binární
      src/main/resources/static/img/member/h5-cm-svip-icon5.png
  20. binární
      src/main/resources/static/img/member/h5-cm-svip-icon6.png
  21. binární
      src/main/resources/static/img/member/h5-cm-svip-icon7.png
  22. binární
      src/main/resources/static/img/member/h5-cm-svip-icon8.png
  23. binární
      src/main/resources/static/img/member/pc-cm-svip-bg-01.png
  24. binární
      src/main/resources/static/img/member/pc-cm-svip-bg-02.png
  25. binární
      src/main/resources/static/img/member/pc-cm-svip-bg-03.png
  26. binární
      src/main/resources/static/img/member/pc-cm-svip-coupon-able.png
  27. binární
      src/main/resources/static/img/member/pc-cm-svip-coupon-unable.png
  28. binární
      src/main/resources/static/img/member/pc-cm-svip-icon1.png
  29. binární
      src/main/resources/static/img/member/pc-cm-svip-icon2.png
  30. binární
      src/main/resources/static/img/member/pc-cm-svip-icon3.png
  31. binární
      src/main/resources/static/img/member/pc-cm-svip-icon4.png
  32. binární
      src/main/resources/static/img/member/pc-cm-svip-icon5.png
  33. binární
      src/main/resources/static/img/member/pc-cm-svip-icon6.png
  34. binární
      src/main/resources/static/img/member/pc-cm-svip-icon7.png
  35. binární
      src/main/resources/static/img/member/pc-cm-svip-icon8.png
  36. 24 1
      src/main/resources/static/js/account/register-club.js
  37. 41 0
      src/main/resources/static/js/common/serviceapi/pay.service.js
  38. 45 0
      src/main/resources/static/js/common/serviceapi/user.service.js
  39. 4 0
      src/main/resources/static/js/index.js
  40. 56 15
      src/main/resources/static/js/pay/caimei-pay.js
  41. 134 22
      src/main/resources/static/js/pay/caimei-paycash.js
  42. 27 7
      src/main/resources/static/js/pay/caimei-paymobile.js
  43. 30 11
      src/main/resources/static/js/pay/caimei-success.js
  44. 55 18
      src/main/resources/static/js/pay/caimei-wechatpay.js
  45. 5 1
      src/main/resources/static/js/product/detail.js
  46. 5 0
      src/main/resources/static/js/product/instruement.js
  47. 4 0
      src/main/resources/static/js/product/list.js
  48. 5 1
      src/main/resources/static/js/product/produce-list.js
  49. 1 1
      src/main/resources/static/js/product/promotions.js
  50. 1 1
      src/main/resources/static/js/supplier-center/setting/information.js
  51. 20 1
      src/main/resources/static/js/supplier/index.js
  52. 1 4
      src/main/resources/static/js/user-center/dashboard.js
  53. 241 58
      src/main/resources/static/js/user-center/member/memberPage.js
  54. 26 20
      src/main/resources/static/js/user-center/member/memberProduct.js
  55. 85 8
      src/main/resources/static/js/user-center/member/memberRecord.js
  56. 23 8
      src/main/resources/static/js/user-center/setting/information.js
  57. 18 5
      src/main/resources/static/js/user-center/setting/upgrade.js
  58. 8 6
      src/main/resources/templates/account/register-club.html
  59. 7 2
      src/main/resources/templates/components/footer.html
  60. 2 2
      src/main/resources/templates/components/header.html
  61. 19 27
      src/main/resources/templates/index.html
  62. 5 4
      src/main/resources/templates/pay/caimei-pay.html
  63. 2 2
      src/main/resources/templates/pay/caimei-paycash.html
  64. 6 6
      src/main/resources/templates/pay/caimei-paymobile.html
  65. 3 2
      src/main/resources/templates/pay/caimei-success.html
  66. 10 10
      src/main/resources/templates/product/detail.html
  67. 30 70
      src/main/resources/templates/product/instruelist.html
  68. 19 26
      src/main/resources/templates/product/instrument.html
  69. 27 72
      src/main/resources/templates/product/list.html
  70. 2 2
      src/main/resources/templates/product/promotions.html
  71. 2 2
      src/main/resources/templates/shopping/cart.html
  72. 2 2
      src/main/resources/templates/shopping/confirm.html
  73. 1 1
      src/main/resources/templates/supplier-center/order/logistics-add.html
  74. 1 1
      src/main/resources/templates/supplier-center/shop/release.html
  75. 60 176
      src/main/resources/templates/supplier/index.html
  76. 2 2
      src/main/resources/templates/user-center/dashboard.html
  77. 6 8
      src/main/resources/templates/user-center/member/member-product.html
  78. 13 38
      src/main/resources/templates/user-center/member/member-record.html
  79. 75 127
      src/main/resources/templates/user-center/member/member.html
  80. 6 5
      src/main/resources/templates/user-center/order/detail.html
  81. 5 3
      src/main/resources/templates/user-center/setting/information.html
  82. 4 2
      src/main/resources/templates/user-center/setting/upgrade.html

+ 11 - 11
src/main/resources/config/dev/application-dev.yml

@@ -4,14 +4,14 @@ spring:
   #数据源连接--start
   datasource:
     #本地连接数据库
-    driverClassName: com.mysql.jdbc.Driver
-    url: jdbc:mysql://192.168.2.100:3306/caimei?characterEncoding=UTF8&serverTimezone=Asia/Shanghai
-    username: developer
-    password: 05bZ/OxTB:X+yd%1
-    #测试连接数据库
-    #url: jdbc:mysql://120.79.25.27:3306/caimei?characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+    #driverClassName: com.mysql.jdbc.Driver
+    #url: jdbc:mysql://192.168.2.100:3306/caimei?characterEncoding=UTF8&serverTimezone=Asia/Shanghai
     #username: developer
-    #password: J5p3tgOVazNl4ydf
+    #password: 05bZ/OxTB:X+yd%1
+    #测试连接数据库
+    url: jdbc:mysql://120.79.25.27:3306/caimei?characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+    username: developer
+    password: J5p3tgOVazNl4ydf
     #type: com.zaxxer.hikari.HikariDataSource
     hikari:
       minimum-idle: 5
@@ -54,10 +54,10 @@ logging:
 # 服务域名
 caimei:
   siteEnv: 0 #网站环境,(2:正式环境,1:测试环境,0:开发环境)
-  #spiServer: https://spi-b.caimei365.com
-  spiServer: http://192.168.2.68:8008
-  #coreServer: https://core-b.caimei365.com
-  coreServer: http://192.168.2.68:18002
+  spiServer: https://spi-b.caimei365.com
+  #spiServer: http://192.168.2.68:8008
+  coreServer: https://core-b.caimei365.com
+  #coreServer: http://192.168.2.68:18002
   imageDomain: https://img-b.caimei365.com
   wwwDomain: http:localhost:8009
   destPath: D:/_PLAN_WORKSPACE/test/static

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

@@ -58,7 +58,7 @@
 .section_page .page_main_price .price_text_tag .svip-tag{width:100%;height:22px;letter-spacing:0}
 .section_page .page_main_price .price_text_tag .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:22px;text-align:center;line-height:22px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
 .section_page .page_main_price .price_text_tag .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
-.section_page .page_main_price .price_text_tag .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:22px;padding-right:4px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:12px}
+.section_page .page_main_price .price_text_tag .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:24px;padding-right:2px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:12px}
 .section_page .page_main_price .price_text_tag .svip-tag .svip-price span{color: #333}
 
 .section_page .section_page_more{width:100%;height:32px;margin-top:16px;float:left;display:none}

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

@@ -25,7 +25,7 @@
     .pay-svip{margin-top:24px}
     .pay-svip+.pay-method .method-title{background:#F5F5F5 !important}
     .pay-svip .pay-svip-title{padding:0 0 16px 16px;font-size:16px;font-weight:400;color:#2D3036}
-    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:1184px;height:78px;padding-left:112px;padding-right:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-bg-03.png) no-repeat center;background-size:1184px 78px}
+    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:1184px;height:78px;padding-left:112px;padding-right:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(/img/member/pc-cm-svip-bg-03.png) no-repeat center;background-size:1184px 78px}
     .pay-svip .pay-svip-detail{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}
     .pay-svip .pay-svip-detail .tit{font-size:16px;font-weight:400;color:#4E4539;padding-bottom:4px}
     .pay-svip .pay-svip-detail .pay-amount{margin-left:18px;font-size:28px;font-weight:bold;color:#4E4539}

+ 2 - 2
src/main/resources/static/css/pay/caimei-paycash.css

@@ -40,7 +40,7 @@ input::-webkit-outer-spin-button {
     .pay-svip{margin-top:24px}
     .pay-svip+.pay-method .method-title{background:#F5F5F5 !important}
     .pay-svip .pay-svip-title{padding:0 0 16px 16px;font-size:16px;font-weight:400;color:#2D3036}
-    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:1184px;height:78px;padding-left:112px;padding-right:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-bg-03.png) no-repeat center;background-size:1184px 78px}
+    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:1184px;height:78px;padding-left:112px;padding-right:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(/img/member/pc-cm-svip-bg-03.png) no-repeat center;background-size:1184px 78px}
     .pay-svip .pay-svip-detail{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}
     .pay-svip .pay-svip-detail .tit{font-size:16px;font-weight:400;color:#4E4539;padding-bottom:4px}
     .pay-svip .pay-svip-detail .pay-amount{margin-left:18px;font-size:28px;font-weight:bold;color:#4E4539}
@@ -138,7 +138,7 @@ input::-webkit-outer-spin-button {
     .pay-title .pay-input input{outline:none;box-sizing:border-box;width:100%;height:7vw;line-height:5vw;padding:1vw 0;text-indent:1.2em;font-size:3.4vw;text-align:left;background-color:#ffffff;border-radius:2px;border:solid 1px #b8bfca}
     .pay-svip{padding-top:4vw;background:#fff}
     .pay-svip .pay-svip-title{padding:0 0 2.7vw 3.3vw;font-size:3.7vw;font-weight:400;color:#2D3036}
-    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100vw;height:20.6vw;padding-left:17vw;padding-right:3.2vw;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(https://static.caimei365.com/app/img/svip/h5-cm-svip-bg-03.png) no-repeat center;background-size:100vw 20.6vw}
+    .pay-svip .content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100vw;height:20.6vw;padding-left:17vw;padding-right:3.2vw;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(/img/member/h5-cm-svip-bg-03.png) no-repeat center;background-size:100vw 20.6vw}
     .pay-svip .pay-svip-detail{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}
     .pay-svip .pay-svip-detail .tit{font-size:2.6vw;font-weight:400;color:#4E4539;padding-bottom:0.4vw}
     .pay-svip .pay-svip-detail .pay-amount{margin-left:1.7vw;font-size:5.6vw;font-weight:bold;color:#4E4539}

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

@@ -235,7 +235,7 @@ li{list-style:none}
     .listWrap .cartItem .priceTag .svip-tag{width:100%;height:22px;letter-spacing:0}
     .listWrap .cartItem .priceTag .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:22px;text-align:center;line-height:22px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
     .listWrap .cartItem .priceTag .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
-    .listWrap .cartItem .priceTag .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:22px;padding-right:4px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:14px}
+    .listWrap .cartItem .priceTag .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:24px;padding-right:2px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:14px}
     .listWrap .cartItem .priceTag .svip-tag .svip-price span{color: #333}
 
 }

+ 42 - 51
src/main/resources/static/css/user-center/member/member-page.css

@@ -10,7 +10,7 @@
 .section .section-title a:hover{ color: #E4AA43}
 .section .content{padding:30px 24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-box-shadow:0px 3px 6px rgba(0,0,0,0.07);box-shadow:0px 3px 6px rgba(0,0,0,0.07)}
 /*会标标记*/
-.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:968px;height:68px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:104px;padding-right:24px;line-height:68px;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-bg-02.png) no-repeat center;background-size:968px 68px;font-weight:400}
+.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:968px;height:68px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:104px;padding-right:24px;line-height:68px;background:url(/img/member/pc-cm-svip-bg-02.png) no-repeat center;background-size:968px 68px;font-weight:400}
 .vip-bar>div>span:first-child{font-size:16px;line-height:21px;color:#55331D}
 .vip-bar>div>span:last-child{font-size:14px;color:#55331D;opacity:1;margin-left:16px}
 .vip-bar>div>span.error{color:#FF2A2A}
@@ -41,50 +41,42 @@
 .service-list>div .sub-tit{font-size:14px;font-weight:400;color:#B8BFCA}
 /*优惠券*/
 .coupon-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}
-.coupon-list>div{position:relative;width:219px;height:96px;padding-left:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-coupon-unable.png) no-repeat center;background-size:219px 96px}
-.coupon-list>div.un-received{background-image:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-coupon-able.png)}
+.coupon-list>div{position:relative;width:219px;height:96px;padding-left:24px;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(/img/member/pc-cm-svip-coupon-unable.png) no-repeat center;background-size:219px 96px}
+.coupon-list>div.un-received{background-image:url(/img/member/pc-cm-svip-coupon-able.png)}
 .coupon-list>div .type{position:absolute;left:0;top:0;z-index:9;width:46px;height:18px;font-size:12px;text-align:center;line-height:18px;background:#E4AA43;border-radius:2px 0px 2px 0px}
 .coupon-list>div .amount{padding-top:20px;font-size:26px;font-weight:bold;color:#55331D}
 .coupon-list>div .amount>i{font-size:14px;font-weight:400;color:#55331D;font-style:unset}
 .coupon-list>div .condition{font-size:12px;font-weight:400;color:#55331D}
 .coupon-list>div .receive-btn{width:48px;height:100%;position:absolute;right:0;top:0;z-index:9;font-size:14px;font-weight:400;color:#55331D;-webkit-writing-mode:vertical-lr;-ms-writing-mode:tb-lr;writing-mode:vertical-lr;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer}
 /*商品列表*/
-.goods-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}
+.goods-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}
 .goods-list .goods a:hover{color:unset}
-.goods-list .goods{width:173px}
-.goods-list .goods .page_main_price{width:100%;height:54px;float:left;box-sizing:border-box;padding:0 8px}
-.goods-list .goods .page_main_price .main_price_text{width:100%;height:54px;float:left;box-sizing:border-box}
-.goods-list .goods .page_main_price .main_price_unde{width:100%;height:31px;line-height:31px;font-size:14px;color:#4a4f58;text-align:left;float:left}
-.goods-list .goods .page_main_price .main_price_show{width:100%;height:30px;line-height:30px;font-size:14px;color:#f94b4b;text-align:left;float:left}
-.goods-list .goods .page_main_price .main_price_show.none{color:#999999;text-decoration:line-through}
-.goods-list .goods .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
-.goods-list .goods .page_main_price .price_text_tag{width:100%;height:22px;box-sizing:border-box;float:left;margin-top:0px}
-.goods-list .goods .page_main_price .price_text_tag .couponTag{float:left;margin-right: 4px;}
-.goods-list .goods .page_main_price .price_text_tag .listTag{margin:0;float:left}
-.goods-list .goods .page_main_price .main_price_none{width:100%;height:24px;box-sizing:border-box;float:left;margin-top:2px}
-.goods-list .goods .page_main_price .main_price_none.sec{margin-top:25px}
-.goods-list .goods .page_main_price .main_price_none .listTag{margin:0}
-.goods-list .goods .page_main_price .price_grade,.section_page .page_main_price .price_grade_shop,.section_page .page_main_price .price_grade_club{float:left;margin:0;height:22px;line-height:22px;color:#4A4F58;font-style:normal;font-size:14px}
-.goods-list .goods .page_main_price .price_grade span,.section_page .page_main_price .price_grade_shop span,.section_page .page_main_price .price_grade_club span{display:inline-block;float:left}
-.goods-list .goods .page_main_price .icon:before{width:67px;height:22px}
-.goods-list .goods .page_main_price .price_grade_1:before{background-position:0 -714px}
-.goods-list .goods .page_main_price .price_grade_2:before{background-position:0 -744px}
-.goods-list .goods .page_main_price .price_grade_3:before{background-position:0 -774px}
-.goods-list .goods .page_main_price .price_grade_4:before{background-position:0 -804px}
-.goods-list .goods .page_main_price .price_grade_5:before{background-position:0 -834px}
-.goods-list .goods img{display:block;width:173px;height:173px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px dashed #E2E7EF}
-.goods-list .goods .goods-title{width:169px;height:41px;margin-top:12px;font-size:14px;font-weight:400;line-height:22px;color:#4A4F58}
-.goods-list .goods .goods-tag{height:20px;padding:8px 0}
+.goods-list .goods{width:173px;margin-right: 14px;}
+.goods-list .goods:last-child{margin-right: 0;}
+
+.goods-list .goods img{display:block;width:184px;height:184px;-webkit-box-sizing:border-box;box-sizing:border-box;border: 1px dashed #f1f1f1;}
+.goods-list .goods .goods-price,
+.goods-list .goods .goods-title,
+.goods-list .goods .goods-tag{padding: 0 8px;}
+
+.goods-list .goods .goods-title{height:41px;margin-top:12px;font-size:14px;font-weight:400;line-height:22px;color:#4A4F58;text-align:justify-all;word-break:break-all}
+.goods-list .goods .goods-tag{height:22px;padding:8px 8px}
 .goods-list .goods .goods-tag .tag{line-height:20px;font-size:12px;padding:0 2px}
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
-.goods-list .goods .svip-price{position:relative;height:20px;-webkit-box-sizing:border-box;box-sizing:border-box}
-.goods-list .goods .svip-price>span{display:block}
-.goods-list .goods .svip-price .amount{display:inline-block;font-size:14px;font-weight:400;line-height:20px;color:#333333;background:#F0CB72;padding-left:40px;padding-right:6px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2px}
-.goods-list .goods .svip-price .svip-icon{position:absolute;left:0;top:0;width:36px;height:20px;background:#333333;font-size:12px;line-height:20px;color:#F0CB72;border-radius:2px;text-align:center}
+
+.goods-list .goods .svip-tag{height:18px;letter-spacing:0;display: inline-block;}
+.goods-list .goods .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:18px;text-align:center;line-height:18px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.goods-list .goods .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+.goods-list .goods .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:22px;padding-right:4px;margin-left:-24px;line-height:18px;background:#F0CB72;opacity:1;border-radius:2px;font-size:12px}
+.goods-list .goods .svip-tag .svip-price span{color: #333}
+
+.goods-list .good .goods-price del{color: #B8BFCA}
+
 /*底部支付按钮*/
 .pay-amount-bottom a:hover{color:unset}
-.pay-amount-bottom{position:absolute;bottom:-104px;width:100%;background:#fff}
+.pay-amount-bottom{position:fixed;bottom:0;width:100%;background:#fff;z-index: 9999;}
+.pay-amount-bottom.absolute{position:absolute;bottom: -104px;}
 .pay-amount-bottom>div{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:1184px;height:72px;margin:0 auto}
 .pay-amount-bottom .pay-btn{width:336px;height:50px;background:-webkit-gradient(linear,left top,right top,from(#FEE9BA),to(#F0CB72));background:-o-linear-gradient(left,#FEE9BA 0%,#F0CB72 100%);background:linear-gradient(90deg,#FEE9BA 0%,#F0CB72 100%);border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;font-weight:500;line-height:22px;margin-left:15px}
 .pay-amount-bottom .pay-btn.plain{border:1px solid #F0CB72;background:#fff}
@@ -116,7 +108,7 @@
 .section .section-title a{font-size: 3.2vw;color: #E4AA43;float: right;margin-right: 3.3vw}
 .section .content{-webkit-box-sizing:border-box;box-sizing:border-box}
 /*会员标记*/
-.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100vw;height:20.6vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:17.1vw;padding-right:3.3vw;background:url(https://static.caimei365.com/app/img/svip/h5-cm-svip-bg-02.png) no-repeat center;background-size:100vw 20.6vw;font-weight:400}
+.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100vw;height:20.6vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:17.1vw;padding-right:3.3vw;background:url(/img/member/h5-cm-svip-bg-02.png) no-repeat center;background-size:100vw 20.6vw;font-weight:400}
 .vip-bar .row2,.vip-bar .right-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}
 .vip-bar .left-box span:first-child{font-size:3.4vw;color:#55331D}
 .vip-bar .left-box span:last-child{font-size:3vw;color:#55331D;opacity:1;margin-top:2.4vw}
@@ -148,8 +140,8 @@
 .service-list>div .sub-tit{font-size:2.8vw;font-weight:400;color:#B8BFCA}
 /*优惠券*/
 .coupon-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 3.3vw}
-.coupon-list>div{position:relative;width:45vw;height:19.8vw;padding-left:4.9vw;margin-bottom:3.4vw;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-coupon-unable.png) no-repeat center;background-size:45vw 19.8vw}
-.coupon-list>div.un-received{background-image:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-coupon-able.png)}
+.coupon-list>div{position:relative;width:45vw;height:19.8vw;padding-left:4.9vw;margin-bottom:3.4vw;-webkit-box-sizing:border-box;box-sizing:border-box;background:url(/img/member/pc-cm-svip-coupon-unable.png) no-repeat center;background-size:45vw 19.8vw}
+.coupon-list>div.un-received{background-image:url(/img/member/pc-cm-svip-coupon-able.png)}
 .coupon-list>div .type{position:absolute;left:0;top:0;z-index:9;width:11vw;height:3.9vw;font-size:2.4vw;text-align:center;line-height:3.9vw;background:#E4AA43;border-radius:2px 0px 2px 0px}
 .coupon-list>div .amount{padding-top:3.6vw;font-size:5.2vw;font-weight:bold;color:#55331D}
 .coupon-list>div .amount>i{font-size:2.8vw;font-weight:400;color:#55331D;font-style:unset}
@@ -158,26 +150,25 @@
 /*商品列表*/
 .goods-list{width:100vw;overflow-x:scroll;white-space:nowrap;padding-bottom:4.8vw}
 .goods-list .goods a:hover{color:unset}
-.goods-list .goods{display:inline-block;width:26.9vw;margin-right:2.4vw}
+.goods-list .goods{display:inline-block;width:34.9vw;margin-right:2.4vw}
 .goods-list .goods:first-child{margin-left:3.3vw}
-.goods-list .goods .page_main_price{width:100%;box-sizing:border-box;padding:0 3.2vw}
-.goods-list .goods .page_main_price .price_text_tag{width:100%;box-sizing:border-box;float:left}
-.goods-list .goods .page_main_price .main_price_show{color:#f94b4b}
-.goods-list .goods .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
-.goods-list .goods .page_main_price .main_price_unde{width:100%;height:6.5vw;line-height:6.5vw;font-size:3.4vw;color:#4a4f58;text-align:left;float:left}
-.goods-list .goods .page_main_price .price_text_tag .couponTag{padding:0 2vw;border:.27vw solid #f94b4b;background:#fff1eb;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;color: #f94b4b;border-radius: 0.2vw;margin-right: 1vw;}
-.goods-list .goods .page_main_price .price_text_tag .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;border-radius: 0.2vw;}
-.goods-list .goods img{display:block;width:26.9vw;height:26.9vw;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px dashed #E2E7EF}
-.goods-list .goods .goods-title{white-space:pre-wrap;height:9.2vw;font-size:3.4vw;font-weight:400;line-height:4.7vw;color:#627386}
+
+.goods-list .goods img{border: 1px dashed #f1f1f1; box-sizing: border-box;}
+
+.goods-list .goods .goods-title{white-space:pre-wrap;height:9.2vw;margin-top:0.8vw;font-size:3.4vw;font-weight:400;line-height:4.7vw;color:#627386}
 .goods-list .goods .goods-tag{margin:1.6vw 0}
 .goods-list .goods .goods-tag .tag{line-height:4.2vw;font-size:2.8vw;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 0.5vw}
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
-.goods-list .goods .svip-price{position:relative;height:4.8vw;-webkit-box-sizing:border-box;box-sizing:border-box}
-.goods-list .goods .svip-price>span{display:block}
-.goods-list .goods .svip-price .amount{display:inline-block;font-size:3.4vw;font-weight:400;line-height:4.8vw;color:#333333;background:#F0CB72;padding-left:8vw;padding-right:0.8vw;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2px}
-.goods-list .goods .svip-price .svip-icon{position:absolute;left:0;top:0;width:8vw;height:4.8vw;background:#333333;font-size:3vw;line-height:4.8vw;color:#F0CB72;border-radius:2px;text-align:center}
-/*底部按钮隐藏*/
+/*会员标签*/
+.svip-tag{height:4.2vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;}
+.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:7.8vw;height:4.2vw;text-align:center;line-height:4.2vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:6.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.2vw;height: 4.2vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
+.svip-tag .svip-price span{color: #333}
+.svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
+.goods-list .good .goods-price del{color: #B8BFCA}
+
 .pay-amount-bottom{display: none; opacity: 0}
 /*续费弹窗*/
 .renew-popup{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:74.6vw;height:72.8vw;background:#fff;-webkit-box-shadow:0px 10px 20px rgba(0,0,0,0.16);box-shadow:0px 10px 20px rgba(0,0,0,0.16);opacity:1;border-radius:1.2vw;z-index:9999}

+ 3 - 4
src/main/resources/static/css/user-center/member/member-product.css

@@ -37,7 +37,6 @@
 
 .goods-list .good .goods-price del{color: #B8BFCA}
 
-
 .goods-list .goods:hover{-webkit-transform:translateY(-6px);-ms-transform:translateY(-6px);transform:translateY(-6px);-webkit-box-shadow:0 0 16px rgba(0,0,0,.2);box-shadow:0 0 16px rgba(0,0,0,.2)}
 .goods-list .goods:hover .goods-title{color:#E15616}
 }/*h5端*/
@@ -69,10 +68,10 @@
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
 /*会员标签*/
-.svip-tag{height:4.74vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;}
-.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:9.8vw;height:4.74vw;text-align:center;line-height:4.74vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.svip-tag{height:4.2vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;border-radius: 2px;}
+.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:7.8vw;height:4.2vw;text-align:center;line-height:4.2vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
 .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
-.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:5.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.74vw;height: 4.74vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
+.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:6.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.2vw;height: 4.2vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
 .svip-tag .svip-price span{color: #333}
 .svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
 .goods-list .good .goods-price del{color: #B8BFCA}

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

@@ -5,7 +5,7 @@
 .right{width:968px;overflow:hidden}
 .pageWrap{width: 968px}
 /*会标标记*/
-.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:968px;height:68px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:104px;padding-right:24px;line-height:68px;background:url(https://static.caimei365.com/app/img/svip/pc-cm-svip-bg-02.png) no-repeat center;background-size:968px 68px;font-weight:400}
+.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:968px;height:68px;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:104px;padding-right:24px;line-height:68px;background:url(/img/member/pc-cm-svip-bg-02.png) no-repeat center;background-size:968px 68px;font-weight:400}
 .vip-bar>div>span:first-child{font-size:16px;line-height:21px;color:#55331D}
 .vip-bar>div>span:last-child{font-size:14px;color:#55331D;opacity:1;margin-left:16px}
 .vip-bar>div>span.error{color:#FF2A2A}
@@ -42,7 +42,7 @@
 /*h5*/
 @media screen and (max-width:768px){
 /*会员标记*/
-.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100vw;height:20.6vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:17.1vw;padding-right:3.3vw;background:url(https://static.caimei365.com/app/img/svip/h5-cm-svip-bg-02.png) no-repeat center;background-size:100vw 20.6vw;font-weight:400}
+.vip-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;width:100vw;height:20.6vw;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:17.1vw;padding-right:3.3vw;background:url(/img/member/h5-cm-svip-bg-02.png) no-repeat center;background-size:100vw 20.6vw;font-weight:400}
 .vip-bar .row2,.vip-bar .right-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}
 .vip-bar .left-box span:first-child{font-size:3.4vw;color:#55331D}
 .vip-bar .left-box span:last-child{font-size:3vw;color:#55331D;opacity:1;margin-top:2.4vw}

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

@@ -52,7 +52,7 @@ li{list-style:none}
     .order-container .section-shopinfo .product-t .info>.col .svip-tag{width:100%;height:22px;letter-spacing:0;display: inline;margin-left: 10px;}
     .order-container .section-shopinfo .product-t .info>.col .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:22px;text-align:center;line-height:22px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
     .order-container .section-shopinfo .product-t .info>.col .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
-    .order-container .section-shopinfo .product-t .info>.col .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:22px;padding-right:4px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:14px}
+    .order-container .section-shopinfo .product-t .info>.col .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:25px;padding-right:4px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:14px}
     .order-container .section-shopinfo .product-t .info>.col .svip-tag .svip-price span{color: #333}
 
     .order-container .section-shopinfo .product-t .price>p{line-height:24px;font-size:14px;color:#627386;text-align:left;display:inline-block;width:30%}

binární
src/main/resources/static/img/member/h5-cm-svip-bg-01.png


binární
src/main/resources/static/img/member/h5-cm-svip-bg-02.png


binární
src/main/resources/static/img/member/h5-cm-svip-bg-03.png


binární
src/main/resources/static/img/member/h5-cm-svip-coupon-able.png


binární
src/main/resources/static/img/member/h5-cm-svip-coupon-unable.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon1.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon2.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon3.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon4.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon5.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon6.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon7.png


binární
src/main/resources/static/img/member/h5-cm-svip-icon8.png


binární
src/main/resources/static/img/member/pc-cm-svip-bg-01.png


binární
src/main/resources/static/img/member/pc-cm-svip-bg-02.png


binární
src/main/resources/static/img/member/pc-cm-svip-bg-03.png


binární
src/main/resources/static/img/member/pc-cm-svip-coupon-able.png


binární
src/main/resources/static/img/member/pc-cm-svip-coupon-unable.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon1.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon2.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon3.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon4.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon5.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon6.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon7.png


binární
src/main/resources/static/img/member/pc-cm-svip-icon8.png


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

@@ -47,6 +47,7 @@ var registerPage = new Vue({
             {value:1,name:'整形'},
             {value:2,name:'轻医美'},
             {value:3,name:'皮肤科'},
+            {value:4,name:'产后修复'},
         ],
         medicaCampNullList: [
             {name:'美容'},
@@ -75,12 +76,23 @@ var registerPage = new Vue({
             license: '^[a-zA-Z0-9_]{18}$',
             email: '^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$',
             password: "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$"
-        }
+        },
+        medicalPracticeLicenseFlag: false
     },
     computed: {
 
+    },
+    watch: {
+        userMainPros: function(){
+            $('#business').parent().find('.errTips').removeClass("show");
+        }
     },
     methods: {
+        handleChangeType: function(type){
+            if(type === parseInt(this.clubUpgradeUser.firstClubType)) return;
+            this.userMainPros = [];
+            this.clubUpgradeUser.secondClubType = (type === 1 ? 1 : 5);
+        },
         clubRegister: function(){ //机构注册提交
             var _self = this;
             var pass = verifyForm();
@@ -205,6 +217,11 @@ var registerPage = new Vue({
                     $('#firstClubType').siblings('.errTips').text('请选择机构类型').addClass("show");
                     return  false;
                 }
+                if(!_self.clubUpgradeUser.firstClubType){
+                    $('#firstClubType').parent().addClass("error");
+                    $('#firstClubType').siblings('.errTips').text('请选择机构类型').addClass("show");
+                    return  false;
+                }
                 if(Number(_self.clubUpgradeUser.firstClubType) == 1){
                     if(!_self.clubUpgradeUser.medicalPracticeLicense){
                         $('#formmedicalPracticeLicenseImage').parent().addClass("error").find('.checked').removeClass("show");
@@ -212,6 +229,10 @@ var registerPage = new Vue({
                         return  false;
                     }
                 }
+                if(_self.userMainPros.length === 0){
+                    $('#business').siblings('.errTips').text('请选择或添加主营产品').addClass("show");
+                    return false;
+                }
                 _self.clubUpgradeUser.mainProduct = _self.userMainPros.join("/");
                 _self.loginLoading = true;
                 UserApi.ClubUpgrade(_self.clubUpgradeUser,function (response) {
@@ -339,6 +360,8 @@ var registerPage = new Vue({
             var file = inputDOM.files;
             _this.formData.append('file', file[0]);
             PublicApi.uploadimg(_this.formData,function(response){
+                $('#formmedicalPracticeLicenseImage').parent().removeClass("error");
+                $('#formmedicalPracticeLicenseImage').siblings('.errTips').removeClass("show");
                 _this.clubUpgradeUser.medicalPracticeLicense = response.data;
                 event.target.value = '';
             });

+ 41 - 0
src/main/resources/static/js/common/serviceapi/pay.service.js

@@ -147,5 +147,46 @@ var PayApi = {
             .then(function(res){
                 callback(res);
             });
+        },
+
+
+        /*---------------------支付vip接口---------------------------*/
+
+        PayVipPcMallPay: function(params, callback){ // vip网银支付
+            Http.AjaxService({
+                url:'/order/pay/vip/union',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+
+        PayVipAliPay: function(params, callback){ // vip支付宝支付
+            Http.AjaxService({
+                url:'/order/pay/vip/alipay',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayVipMiniWxPay: function(params, callback){ // 微信支付宝支付
+            Http.AjaxService({
+                url:'/order/pay/vip/wechat',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
         }
 };

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

@@ -318,4 +318,49 @@ var UserApi = {
                 callback(res);
             });
         },
+        RegisterSuperByBeans: function (params, callback) {//会员中心采美豆抵扣开通svip会员
+            Http.AjaxService({
+                url: '/user/register/super/beans',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        SuperHistory: function (params, callback) {//会员开通记录
+            Http.AjaxService({
+                url: '/user/super/history',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        // user/super/package
+        FetchSuperPackage: function (params, callback) {//获取会员套餐
+            Http.AjaxService({
+                url: '/user/super/package',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        RegisterSuperPay: function(params, callback){ // 在线支付超级会员预处理
+            Http.AjaxService({
+                url: '/user/register/super/pay',
+                type: 'get',
+                data: params,
+                json: false,
+                isHost: true
+            }).then(function (res) {
+                callback(res);
+            });
+        }
 };

+ 4 - 0
src/main/resources/static/js/index.js

@@ -18,6 +18,10 @@ var homeData = new Vue({
         },
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
         popupPage:function(){  // 弹窗点击跳转链接
             var _self = this;
             this.popupFlag=false;

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

@@ -46,7 +46,11 @@ var payContainer = new Vue({
         organizeId:'',  //组织机构id
         orderNo:'',      //订单号
         orderTotalFee:'',
-        unpaidAmount:''  //真正的付款金额
+        unpaidAmount:'',  //真正的付款金额
+        comboInfo: [], // 会员套餐
+        type: 1,
+        vipMonth: 0,
+        vipRecordId: undefined
     },
     filters: {
         NumFormat :function(value) {
@@ -81,11 +85,20 @@ var payContainer = new Vue({
                     _self.payInfo.payLinkTypeText =  _self.payInfo.payLinkType == 1 ? '企业网银' : '个人网银';
                     _self.payInfo.payUserType =  _self.payInfo.payLinkType == 1 ? 'ENTERPRISE' : 'USER';
                     _self.unpaidAmount = _data.orderPayLink.unpaidAmount;
+                    _self.type = _data.type;
                     if(_data.code == 0){
                         setTimeout(function () {  //支付倒计时
                             _self.countTime(_self.payInfo.payTime)
                         }, 1000);
-                        _self.infoPayOrderCheckoutCounter();
+                        if(_self.type === 1){
+                            _self.infoPayOrderCheckoutCounter();
+                        }else{
+                            console.log('本次支付链接是支付超级会员');
+                            _self.userName = _data.userName;
+                            _self.vipMonth = _data.orderPayLink.vipMonth;
+                            _self.vipRecordId = _data.orderPayLink.vipRecordId;
+                            _self.isRequest = true;
+                        }
                     }else{
                         _self.isErrorShow = true;
                         _self.isRequest = true;
@@ -154,15 +167,45 @@ var payContainer = new Vue({
                 CAIMEI.dialog('请选择银行!');
                 return;
             }
-            var params = {
-                    payWay:'UNIONPAY',
-                    payAmount: _self.payInfo.payUnpaidAmount*100,
-                    bankCode:_self.payInfo.payBankNum,
-                    returnUrl:'https://www.caimei365.com/',
-                    orderId:_self.payInfo.payOrderId,
-                    userType:_self.payInfo.payUserType
+            if (_self.type === 2){
+                // 支付超级会员
+                console.log('支付超级会员');
+                var params = {
+                    bankCode: this.payInfo.payBankNum,
+                    returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount,
+                    userType: _self.payInfo.payUserType,
+                    vipRecordId: _self.vipRecordId,
+                };
+                _self.PayVipPcMallPay(params);
+            }else {
+                // 普通订单
+                console.log('支付普通订单');
+                var params = {
+                    payWay: 'UNIONPAY',
+                    payAmount: _self.payInfo.payUnpaidAmount * 100,
+                    bankCode: _self.payInfo.payBankNum,
+                    returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount,
+                    orderId: _self.payInfo.payOrderId,
+                    userType: _self.payInfo.payUserType
                 };
-            _self.PayOrderPcMallPay(params);
+                _self.PayOrderPcMallPay(params);
+            }
+        },
+        // 网银支付超级会员
+        PayVipPcMallPay: function(params){
+            var _self = this;
+            _self.isSubMitStatus=true;
+            PayApi.PayVipPcMallPay(params, function(response){
+                if (response.code == 0) {
+                    _self.isPayAlert = true;
+                    _self.mbOrderId = response.data.data.mbOrderId;
+                    window.open(response.data.data.payUrl);
+                    _self.isSubMitStatus = false;
+                } else {
+                    CAIMEI.Alert(response.msg, '确定', false);
+                    _self.isSubMitStatus = false;
+                }
+            });
         },
         PayOrderPcMallPay:function(params){//订单网银支付请求
             var _self = this;
@@ -185,11 +228,9 @@ var payContainer = new Vue({
             PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
                 _self.isPayAlert = false;
                 var data = response.data.data;
-                if(data.status === '1'){
-                    window.location.href = '/pay/success.html?pageType=wechat&type=success&payAmount='+ _self.payInfo.payUnpaidAmount;
-                }else{
-                    window.location.href = '/pay/success.html?pageType=wechat&type=error&payAmount='+ _self.payInfo.payUnpaidAmount;
-                }
+                var pageType = _self.type === 1 ? 'www' : 'vip&payFlag=1'; // 1 普通订单 2 vip订单
+                var type = data.status === '1' ? 'success' : 'error'; // 成功 or 失败
+                window.location.href = '/pay/success.html?pageType='+ pageType +'&type='+ type +'&payAmount=' + _self.payInfo.payUnpaidAmount;
             });
         },
         changeTab:function(index,item){// 选择银行

+ 134 - 22
src/main/resources/static/js/pay/caimei-paycash.js

@@ -50,7 +50,9 @@ var payContainer = new Vue({
         onlinePayFlag:'',
         payStatusText:'使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
         productID:'',//发布商品的ID
-        is_Wechat_bowcr:false
+        is_Wechat_bowcr:false,
+        comboInfo: null, //选中的svip套餐信息
+        vipRecordId: undefined,
     },
     filters: {
         NumFormat:function(value) {
@@ -173,6 +175,8 @@ var payContainer = new Vue({
                             window.open("/pay/caimei-paymobile.html?pageType=1");
                             _self.isPayAlert = true;
                         }
+                    }else if(_self.pageType === '2'){ // 微信支付会员
+                        _self.payVipMiniWxPay();
                     }else{
                         if(!isPC){
                             var orderInfo = {//普通订单微信二维码参数
@@ -201,12 +205,14 @@ var payContainer = new Vue({
                                 productId:_self.productID,
                             };
                         _self.PayOrdersecondAliPay(params);
+                    }else if(_self.pageType === '2'){ // 支付宝支付会员
+                        _self.payVipAliPay();
                     }else{
                         var params = {//正常订单
-                                payAmount:parseInt(_self.payAmount*100),
-                                returnUrl:'https://www.caimei365.com/',
-                                orderId:_self.payInfo.payOrderId
-                            };
+                            payAmount: parseInt(_self.payAmount * 100),
+                            returnUrl: 'https://www.caimei365.com/',
+                            orderId: _self.payInfo.payOrderId
+                        };
                         _self.PayOrderPcMallAlipay(params);
                     }
                 }else{// 网银支付
@@ -217,6 +223,8 @@ var payContainer = new Vue({
                             productId:_self.productID,
                         };
                         _self.PayOrdersecondUnion(params,_self.payInfo.payBankNum);
+                    }else if(_self.pageType === '2'){ // 网银支付会员
+                        console.log('网银支付会员');
                     }else{
                         var params = {//正常订单
                             payWay:_self.payInfo.payBankNum,
@@ -245,16 +253,18 @@ var payContainer = new Vue({
                 if(_self.pageType === '1'){
                     var params = {//二手
                             bankCode:_self.payInfo.payBankNum,
-                            returnUrl:'https://www.caimei365.com/',
+                            returnUrl:'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount,
                             productId:_self.productID,
                             userType:_self.payInfo.payUserType,
                     };
                     _self.PayOrdersecondUnion(params);
-                }else{
+                } else if (_self.pageType === '2') { // 网银付会员
+                    _self.payVipPcMallPay();
+                } else {
                     var params = {//正常订单
                             payAmount: parseInt(_self.payAmount*100),
                             bankCode:_self.payInfo.payBankNum,
-                            returnUrl:'https://www.caimei365.com/',
+                            returnUrl:'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount,
                             orderId:_self.payInfo.payOrderId,
                             userType:_self.payInfo.payUserType
                     };
@@ -418,13 +428,23 @@ var payContainer = new Vue({
                     CAIMEI.dialog('企业网银支付的金额必须大于¥10.00');
                     return;
                 }
-                PayApi.PayOrderPayLink(
-                    {
+
+                var params = {};
+
+                if(_self.pageType == 2){
+                    params = {
+                        unpaidAmount:_self.payAmount,
+                        vipRecordId: _self.vipRecordId,
+                        payType:_self.payInfo.payType,
+                    }
+                }else{
+                    params = {
                         unpaidAmount:_self.payAmount,
                         orderId:_self.payInfo.payOrderId,
                         payType:_self.payInfo.payType
-                    },
-                    function(response){
+                    }
+                }
+                PayApi.PayOrderPayLink(params,function(response){
                         _self.bankPayLink_url = response.data;
                         var oInput = document.createElement("textarea");
                         oInput.value = _self.bankPayLink_url;
@@ -453,6 +473,19 @@ var payContainer = new Vue({
         },
         RefreshBody:function(){//刷新页面
             var _self = this;
+            // 验证支付(支付会员)
+            if(_self.pageType == 2){
+                PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
+                    _self.isPayAlert = false;
+                    var data = response.data.data;
+                    if(data.status === '1'){
+                        _self.windowLocationHref('success');
+                    }else{
+                        _self.windowLocationHref('error');
+                    }
+                });
+                return;
+            }
             if(_self.payInfo.payBankNum == 'WEIXIN'){
                 PayApi.PayOrderPayWhetherSuccess({orderId: _self.payInfo.payOrderId, paySuccessCounter:_self.paySuccessCounter},function(response){
                     _self.isPayAlert = false;
@@ -478,6 +511,8 @@ var payContainer = new Vue({
             var _self = this;
             if( _self.pageType === '1'){
                 window.location.href = '/pay/success.html?pageType=second&type='+state+'&payAmount='+_self.payAmount;
+            }else if(_self.pageType === '2'){
+                window.location.href = '/pay/success.html?pageType=vip&type='+state+'&payAmount='+_self.payAmount;
             }else{
                 window.location.href = '/pay/success.html?pageType=www&type='+state+'&payAmount='+_self.payAmount;
             }
@@ -507,25 +542,102 @@ var payContainer = new Vue({
                 _self.payStatusText = '使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
                 _self.isReceiptStatus = true;
             });
-        }
+        },
+        // 网银支付会员
+        payVipPcMallPay: function(){
+            console.log('网银支付会员');
+            var _self = this;
+            var params = {
+                bankCode: this.payInfo.payBankNum,
+                returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount,
+                userType: _self.payInfo.payUserType,
+                vipRecordId: _self.vipRecordId
+            };
+            PayApi.PayVipPcMallPay(params, function (response) {
+                if (response.code == 0) {
+                    _self.isPayAlert = true;
+                    _self.isSubMitStatus = false;
+                    _self.mbOrderId = response.data.data.mbOrderId;
+                    window.open(response.data.data.payUrl);
+                } else {
+                    _self.isSubMitStatus = false;
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            });
+        },
+        // 支付宝支付会员
+        payVipAliPay: function(){
+            console.log('支付宝支付会员');
+            var _self = this;
+            var params = {
+                bankCode: _self.payInfo.payBankNum,
+                returnUrl: 'https://www.caimei365.com/',
+                userType: _self.payInfo.payUserType,
+                vipRecordId: _self.vipRecordId
+            };
+            console.log(params);
+            PayApi.PayVipAliPay(params, function(response){
+                console.log(response);
+                if (response.code === 0) {
+                    _self.mbOrderId = response.data.data.mbOrderId;
+                    _self.payInfo.payMobileUrl = response.data.data.payUrl;
+                    _self.payInfo.payData = {
+                        mbOrderId: _self.mbOrderId,
+                        type: _self.payInfo.payBankNum,
+                        amount: _self.payAmount,
+                        url: _self.payInfo.payMobileUrl,
+                    };
+                    CAIMEI.Storage.setItem('payData', JSON.stringify(_self.payInfo.payData));
+                    if (!isPC) {
+                        location.href = _self.payInfo.payMobileUrl;
+                    } else {
+                        window.open("/pay/caimei-paymobile.html?pageType=2&duration=" + _self.comboInfo.duration);
+                    }
+                } else {
+                    CAIMEI.Alert(response.msg, '确定', false);
+                    _self.isSubMitStatus = false;
+                }
+            });
+        },
+        // 微信支付会员
+        payVipMiniWxPay: function(){
+            this.payInfo.payData = {//二手
+                type: this.payInfo.payBankNum,
+                vipId: this.comboInfo.id,
+                vipRecordId: this.vipRecordId,
+                amount: this.payAmount,
+                duration: this.comboInfo.duration,
+            };
+            CAIMEI.Storage.setItem('payData', JSON.stringify(this.payInfo.payData));
+            window.open("/pay/caimei-paymobile.html?pageType=2");
+            this.isPayAlert = true;
+        },
     },
     mounted: function () {
         var _self = this;
+        // 判断当前支付是订单支付
         _self.pageType = CAIMEI.getUrlParam('pageType');
-        if( _self.pageType === '1'){//二手
+        _self.vipRecordId = parseInt(CAIMEI.getUrlParam('vipRecordId'));
+        if (_self.pageType === '1') {//二手
             _self.productID = CAIMEI.getUrlParam('productID');
             _self.payAmount = _self.toFixedFn(100);
             _self.isRequest = true;
             _self.payStatusText = '';
-        }else{
-             var HrefType = CAIMEI.getUrlParam('type');
-            if(HrefType == 'payfirm'){
-                _self.payInfo.payOrderId =  CAIMEI.getUrlParam('orderId');
-                _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
-            }else{
-                var data =JSON.parse(localStorage.getItem("confirmOrderInfo"));
+        } else if (_self.pageType === '2') { // 支付会员
+            // 从本地获取选中的svip套餐信息后删除本地信息
+            this.comboInfo = JSON.parse(CAIMEI.Storage.getItem('comboInfo'));
+            // CAIMEI.Storage.removeItem('comboInfo');
+            // 设置支付金额
+            this.payAmount = _self.toFixedFn(this.comboInfo.price);
+        } else {
+            var HrefType = CAIMEI.getUrlParam('type');
+            if (HrefType == 'payfirm') {
+                _self.payInfo.payOrderId = CAIMEI.getUrlParam('orderId');
+                _self.orderIdentificationId = '#' + _self.payInfo.payOrderId + '#';
+            } else {
+                var data = JSON.parse(localStorage.getItem("confirmOrderInfo"));
                 _self.payInfo.payOrderId = data.data.orderId;
-                _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
+                _self.orderIdentificationId = '#' + _self.payInfo.payOrderId + '#';
             }
             _self.infoPayOrderCheckoutCounter();//正常订单初始化
         }

+ 27 - 7
src/main/resources/static/js/pay/caimei-paymobile.js

@@ -26,7 +26,10 @@ var payContainer = new Vue({
         isRefresh:false,
         maxtime:300,
         pageType:'',//页面跳转类型
-        productID:''//商品ID
+        productID:'',//商品ID
+        duration: 0, // 购买的会员期限
+        vipId: null, // vip套餐id
+        vipRecordId: undefined
     },
     filters: {
         NumFormat:function(value) {
@@ -50,7 +53,7 @@ var payContainer = new Vue({
     methods: {
         infoPayOrderCheckoutCounter:function(){//初始化订单数据
             var _self = this;
-            if( _self.pageType === '1'){
+            if( _self.pageType === '1' || _self.pageType === '2'){
                 setTimeout(function(){
                     switch (_self.payInfo.payType) {
                         case 'WEIXIN':
@@ -60,8 +63,8 @@ var payContainer = new Vue({
                             _self.getAliPayQrcodeInfo();
                             break;
                     }
-                },2000);
-            }else{
+                }, 2000);
+            } else {
                 PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.payOrderId},function(response){
                     if(response.code == 0){
                         // console.log(response);
@@ -115,7 +118,15 @@ var payContainer = new Vue({
                     productId:_self.productID,
                     payAmount:_self.payAmount
                 };
-            }else{
+            } else if (_self.pageType === '2') { // 微信支付会员
+                console.log('微信支付会员');
+                orderInfo = {
+                    pageType: 2,
+                    payAmount: _self.payAmount,
+                    vipId: _self.vipId,
+                    vipRecordId: _self.vipRecordId
+                };
+            } else {
                 orderInfo = {//普通订单微信二维码参数
                     pageType:0,
                     orderID:_self.payInfo.payOrderId,
@@ -123,6 +134,7 @@ var payContainer = new Vue({
                 };
             }
             _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxea43a0f9ebce9e66&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+            console.log(_self.payInfo.payMobileUrl);
             var qrcode = new QRCode(document.getElementById("wx_pay_container"), {
                 render: "canvas", //也可以替换为table
                 text: _self.payInfo.payMobileUrl,
@@ -192,8 +204,7 @@ var payContainer = new Vue({
         var _self = this;
         var payData = JSON.parse(CAIMEI.Storage.getItem('payData'));
         _self.pageType = CAIMEI.getUrlParam('pageType');
-        console.log(payData);
-        console.log(_self.pageType);
+        _self.duration = CAIMEI.getUrlParam('duration');
         if( _self.pageType === '1'){
             console.log('二手商品');
             _self.payInfo.payType = payData.type;
@@ -201,6 +212,15 @@ var payContainer = new Vue({
             _self.payInfo.payMobileUrl = payData.url;
             _self.mbOrderId = payData.mbOrderId;
             _self.payAmount = _self.payableAmount = payData.amount;
+        }else if(_self.pageType === '2'){
+            _self.payInfo.payType = payData.type;
+            _self.payAmount = _self.payableAmount = payData.amount;
+            _self.payInfo.payMobileUrl = payData.url;
+            _self.vipId = payData.vipId;
+            _self.vipRecordId = payData.vipRecordId;
+            if(!_self.duration) { // 微信支付获取会员开通月份
+                _self.duration = payData.duration;
+            }
         }else{
             console.log('订单支付');
             _self.payInfo.payType = payData.type;

+ 30 - 11
src/main/resources/static/js/pay/caimei-success.js

@@ -13,7 +13,9 @@ var payContainer = new Vue({
         maxtime:10,
         linkText:'立即跳转',
         openLink:'/myaccount/orderlist--1-1.html',
-        isSuccessText:''
+        isSuccessText:'',
+        refreshType: false,
+        payFlag: '',
     },
     filters: {
         NumFormat:function(value) {
@@ -49,21 +51,34 @@ var payContainer = new Vue({
                         _self.openLink = '/flea-market/form.html';
                     }
                     break;
+                case 'vip':
+                    if (_self.payFlag) {
+                        _self.linkText = '采美商城首页';
+                        _self.openLink = '/index.html';
+                    } else {
+                        _self.linkText = '会员中心';
+                        _self.openLink = '/user/member.html';
+                    }
+                    break;
                 default:
                     _self.linkText = '采美商城首页';
                     _self.openLink = '/index.html';
             }
             _self.isRequest = true;
-            //自动跳转
-            // var timeClock = setInterval(function(){
-            //     _self.maxtime--;
-            //     if (_self.maxtime == 0) {
-            //         window.location.href = _self.openLink;
-            //         clearInterval(timeClock);
-            //         _self.maxtime = 10;
-            //         _self.isRefresh = true;
-            //     }
-            // },1000);
+
+            if(_self.pageType === 'vip'){
+                //自动跳转
+                var timeClock = setInterval(function () {
+                    _self.maxtime--;
+                    if (_self.maxtime == 1) {
+                        window.location.href = _self.openLink;
+                        clearInterval(timeClock);
+                        _self.maxtime = 10;
+                        _self.isRefresh = true;
+                        _self.refreshType = false;
+                    }
+                }, 1000);
+            }
         },
         toFixedFn:function(text){//处理小数点后两位数
             return Number(text).toFixed(2);
@@ -72,8 +87,12 @@ var payContainer = new Vue({
     mounted: function () {
         var _self = this;
         _self.pageType = CAIMEI.getUrlParam('pageType');
+        _self.payFlag = CAIMEI.getUrlParam('payFlag');
         _self.type = CAIMEI.getUrlParam('type');
         _self.payAmount = CAIMEI.getUrlParam('payAmount');
+        if(_self.pageType === 'vip' && !_self.payFlag){
+            _self.refreshType = true;
+        }
         _self.infoRequestBody();
     }
 });

+ 55 - 18
src/main/resources/static/js/pay/caimei-wechatpay.js

@@ -11,6 +11,8 @@ var payContainer = new Vue({
         state:0,//随机数
         isRequest:false,
         productId:'',//二手商品ID
+        vipId: null, // vip套餐id
+        vipRecordId: undefined
     },
     computed: {
 
@@ -25,26 +27,61 @@ var payContainer = new Vue({
             _this.isRequest = true;
             if( _this.pageType == 1){
                 _this.productId = _this.state.productId;
+            }else if(_this.pageType == 2){
+                _this.vipId = _this.state.vipId;
+                _this.vipRecordId = _this.state.vipRecordId;
             }else{
                 _this.orderID = _this.state.orderID;
             }
         },
         WxPaySubmit:function(){
-            var _this = this;
-            if(_this.pageType == 1){
-                _this.WxRequestsecondHandPay();
-            }else{
-                _this.WxRequestPaymentFn();
+            if (this.pageType == 1) {
+                this.WxRequestsecondHandPay();
+            } else if (this.pageType == 2) {
+                this.WxRequestPaymentVipFn();
+            } else {
+                this.WxRequestPaymentFn();
             }
         },
-        WxRequestsecondHandPay:function(){
+        // 会员支付
+        WxRequestPaymentVipFn: function(){
             var _this = this;
             var params = {
-                    code:_this.wechatcode,
-                    state:_this.rand(1000,9999),
-                    productId:_this.productId,
-                    returnUrl:'https://www.caimei365.com/',
-                };
+                code: _this.wechatcode,
+                state: _this.rand(1000, 9999),
+                vipId: _this.vipId,
+                vipRecordId: _this.vipRecordId,
+                returnUrl: 'https://www.caimei365.com/',
+            };
+            PayApi.PayVipMiniWxPay(params,function(response){
+                if(response.code == 0){
+                    var PayInfo = JSON.parse(response.data.data.payInfo);
+                    if (typeof WeixinJSBridge == "undefined"){
+                        if( document.addEventListener ){
+                            document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
+                        }else if (document.attachEvent){
+                            document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
+                            document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
+                        }
+                    }else{
+                        _this.onBridgeReady(PayInfo);
+                    }
+                }else{
+                     CAIMEI.dialog("支付链接已失效,请重新扫码支付");
+                    setTimeout(function(){
+                        WeixinJSBridge.call('closeWindow');
+                    },3000);
+                }
+            });
+        },
+        WxRequestsecondHandPay:function(){ // 二手商品支付
+            var _this = this;
+            var params = {
+                code: _this.wechatcode,
+                state: _this.rand(1000, 9999),
+                productId: _this.productId,
+                returnUrl: 'https://www.caimei365.com/',
+            };
             PayApi.PayOrdersecondWechat(params,function(response){
                 if(response.code == 0){
                     var PayInfo = JSON.parse(response.data.data.payInfo);
@@ -66,14 +103,14 @@ var payContainer = new Vue({
                 }
             });
         },
-        WxRequestPaymentFn:function(){
+        WxRequestPaymentFn:function(){ // 普通订单支付
             var _this = this;
-            var params={
-                    payAmount:_this.payAmount*100,
-                    code:_this.wechatcode,
-                    state:_this.rand(1000,9999),
-                    orderId:_this.orderID,
-                    returnUrl:'https://www.caimei365.com/',
+            var params = {
+                payAmount: _this.payAmount * 100,
+                code: _this.wechatcode,
+                state: _this.rand(1000, 9999),
+                orderId: _this.orderID,
+                returnUrl: 'https://www.caimei365.com/',
             };
             PayApi.PayOrderMiniWxPay(params,function(response){
                 if(response.code == 0){

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

@@ -386,7 +386,7 @@ var productDetail = new Vue({
                     }
                 });
         },
-        queryProductDetilsCoupons() {// 初始化商品详情优惠券信息
+        queryProductDetilsCoupons: function() {// 初始化商品详情优惠券信息
             var _self = this;
             ProductApi.QueryProductDetilsCoupons(_self.couponParam, function (response) {
                 if (response.code == 0) {
@@ -467,6 +467,10 @@ var productDetail = new Vue({
                     _self.initPreviewImage()
                 })
             }
+        },
+        // 是否显示vip标签价格
+        showVipPriceTag(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
         }
     },
     created: function () {

+ 5 - 0
src/main/resources/static/js/product/instruement.js

@@ -22,6 +22,11 @@
          }
      },
      methods:{
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
+
         closeup:function(){
             this.showflag = false;
             document.body.style.overflow='';

+ 4 - 0
src/main/resources/static/js/product/list.js

@@ -54,6 +54,10 @@ var productList = new Vue({
         }
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
         toPagination: function (pageNum) {
             if (pageNum <= this.pageTotal) {
                 var params = {pageNum: pageNum};

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

@@ -36,7 +36,11 @@ var productList = new Vue({
         },
     },
     methods:{
-       getproductList:function(){//商品列表
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
+        getproductList:function(){//商品列表
            var _self=this;
            ProductApi.GetSearchProduct(_self.params,function (res) {
                if( res.code==0){

+ 1 - 1
src/main/resources/static/js/product/promotions.js

@@ -77,7 +77,7 @@ var promotionsList = new Vue({
                     var resultData = res.data.list;
                     var productIdArr = [];
                     resultData.map(function (item) {
-                        productIdArr.push(item.id)
+                        productIdArr.push(item.productId)
                     });
                     setProductPrice(resultData, productIdArr.join(","), _self.userId, function () {
                         _self.$forceUpdate();

+ 1 - 1
src/main/resources/static/js/supplier-center/setting/information.js

@@ -87,7 +87,7 @@
             license: '^[a-zA-Z0-9_]{18}$',
             email: '^(([^<>()\\[\\]\\\\.,;:\\s@&quot;]+(\\.[^<>()\\[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$',
             password: "^[^\\u4e00-\\u9fa5]{8,16}$",
-            num:'^[1-9]+(.[0-9]{2})?$'
+            num:'^[0-9]+(.[0-9]{2})?$'
         },
         provinceArray:[],
         cityArray: [],//市

+ 20 - 1
src/main/resources/static/js/supplier/index.js

@@ -17,7 +17,22 @@ var supplierHome = new Vue({
         addhtml:'<span class="tag">美博会</span>'
     },
     computed: {
-
+        floorData: function() {
+            return [
+                {
+                    type: 1,
+                    title: '主推商品',
+                    productList: this.mainProducts,
+                    showEmpty: false
+                },
+                {
+                    type: 2,
+                    title: '供应商产品',
+                    productList: this.productLists,
+                    showEmpty: true
+                }
+            ]
+        }
     },
     filters: {
         NumFormat:function(value) {
@@ -25,6 +40,10 @@ var supplierHome = new Vue({
         }
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
         getShopInfo: function(){
             var _self = this;
             $.getJSON(spiServer + "/supplier/home/detail",{supplierId: this.params.id}).done(function (r) {

+ 1 - 4
src/main/resources/static/js/user-center/dashboard.js

@@ -45,10 +45,7 @@ var helpSuggestion = new Vue({
                 3: '供应商',
                 4: '个人机构'
             };
-            var type = '';
-            if (userIdentity === 2){
-                type = 'vip';
-            }
+            var type = 'vip';
             if (vipFlag === 1) {
                 type = 'svip';
             }

+ 241 - 58
src/main/resources/static/js/user-center/member/memberPage.js

@@ -32,68 +32,27 @@ var serviceList = [
         subTitle: '更多特权'
     }
 ];
-// 会员套餐
-var comboInfo = [
-    {
-        id: 1,
-        durationTime: 12,
-        price: 4800,
-        recommend: false,
-    }, {
-        id: 2,
-        durationTime: 3,
-        price: 1500,
-        recommend: true,
-    }, {
-        id: 3,
-        durationTime: 1,
-        price: 600,
-        recommend: false,
-    }
-];
-
 var memberPage = new Vue({
     el: '#memberPage',
     data: {
         serviceList: serviceList, // 服务列表
-        comboInfo: comboInfo, // svip套餐信息
+        comboInfo: [], // svip套餐信息
         showMask: false, // 遮罩层
         showRenewPopup: false, // 续费弹窗
         showConfirmPopup: false, // 支付确认弹窗
+        showBottomBtns: false,
         // 优惠券列表
-        couponList: [
-            {
-                type: 1,
-                amount: 1000,
-                condition1: '满5000可用',
-                condition2: '全商城商品通用',
-                received: false,
-            },
-            {
-                type: 2,
-                amount: 1000,
-                condition1: '满5000可用',
-                condition2: '全商城商品通用',
-                received: false,
-            },
-            {
-                type: 2,
-                amount: 1000,
-                condition1: '满5000可用',
-                condition2: '全商城商品通用',
-                received: false,
-            },
-            {
-                type: 2,
-                amount: 1000,
-                condition1: '满5000可用',
-                condition2: '全商城商品通用',
-                received: true,
-            }
-        ],
+        couponList: [],
         comboCurrent: 0,  // 当前选择的套餐
-        vipInfo: [], // 用户svip信息
-        currentIndex: 1
+        vipInfo: {}, // 用户svip信息
+        currentIndex: 1,
+        productList: [],
+        listQuery: {
+            userId: GLOBAL_USER_ID,
+            source: 1,
+            pageNum: 1,
+            pageSize: 6
+        },
     },
     computed: {
         svipTips: function () {
@@ -109,15 +68,26 @@ var memberPage = new Vue({
         },
     },
     mounted: function () {
-        this.initCenter()
+        this.fetchSuperPackage();
+        this.initCenter();
+        this.getSvipProductList();
+        this.setBottomBtnsVisiable();
+
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
+
         // 初始化会员中心
         initCenter: function () {
             var _self = this;
             UserApi.GetSuperCenterInfo({userId: GLOBAL_USER_ID, source: 1}, function (res) {
                 if (res.code === 0) {
                     _self.vipInfo = res.data.vip;
+                    window.localStorage.setItem('vipInfo', JSON.stringify(_self.vipInfo));
+                    _self.couponList = _self.initCouponInfo(res.data.coupon.splice(0, 4));
                 } else {
                     CAIMEI.Alert(response.msg, '确定', false);
                     _self.isRequset = false;
@@ -145,13 +115,226 @@ var memberPage = new Vue({
         // RMB支付
         payByRMB: function (packageId) {
             console.log('RMB支付');
-            //本地保存一下选中的会员套餐信息
-            window.localStorage.setItem('comboInfo', comboInfo[this.currentIndex]);
-            window.open('/pay/caimei-paycash.html?payname=svip')
+            var currentCombo = this.comboInfo[this.currentIndex];
+            var _self = this;
+            UserApi.RegisterSuperPay({userId: GLOBAL_USER_ID, packageId: currentCombo.id}, function (response) {
+                if (response.code === 0) {
+                    console.log(response);
+                    //本地保存一下选中的会员套餐信息
+                    window.localStorage.setItem('comboInfo', JSON.stringify(currentCombo));
+                    window.open('/pay/caimei-paycash.html?pageType=2&vipRecordId=' + response.data);
+                    _self.showRenewPopup = false;
+                    _self.showMask = false;
+                    // this.showConfirmPopup = true;
+                } else {
+                    CAIMEI.dialog(response.data, false);
+                }
+            });
         },
         // 采美豆支付
         payByBeans: function (packageId) {
-            console.log('采美豆支付');
+            var _self = this;
+            var currentPackage = _self.comboInfo[this.currentIndex];
+            var popupParams = {
+                content: '确认使用' + (currentPackage.price * currentPackage.proportion) + '采美豆开通' + (currentPackage.duration) + '个月会员?',
+                confitmBtnText: '确认开通',
+                cancelBtnText: '取消',
+            };
+            CAIMEI.Popup(popupParams, function () {
+                console.log('采美豆支付');
+                var params = {
+                    userId: GLOBAL_USER_ID,
+                    packageId: currentPackage.id
+                };
+                UserApi.RegisterSuperByBeans(params, function (res) {
+                    if (res.code) {
+                        CAIMEI.dialog(res.msg, false)
+                    } else {
+                        CAIMEI.dialog('开通会员成功', true, function () {
+                            var userInfo = JSON.parse(localStorage.getItem('userInfo'));
+                            userInfo.vipFlag = 1;
+                            window.localStorage.setItem('userInfo', JSON.stringify(userInfo));
+                            window.location.reload();
+                        })
+                    }
+                    _self.handleCloseRenewPopup()
+                })
+            });
+        },
+        // 获取套餐
+        fetchSuperPackage: function () {
+            var _self = this;
+            UserApi.FetchSuperPackage({}, function (response) {
+                if (response.code === 0) {
+                    _self.comboInfo = response.data;
+                }
+            })
+        },
+        // 初始化优惠券信息
+        initCouponInfo: function (couponList) {
+            var typeText = {
+                0: '活动券',
+                1: '品类券',
+                2: '用户专享券',
+                3: '店铺券',
+                4: '新用户券'
+            };
+            return couponList.map(function (item, index) {
+                item.typeText = typeText[item.couponType];
+                return item;
+            })
+        },
+        // 点击去使用跳转路由处理
+        toUseCoupon: function (coupon) {
+            var resultUrl = '';
+            switch (coupon.couponType) {
+                case 0:// 活动券跳转到商城首页 / 或者活动页(看是否指定了商品)
+                    if (coupon.productType === 1) {
+                        resultUrl = '/index.html';
+                    } else {
+                        resultUrl = '/product/product-coupon.html?couponId=' + coupon.couponId;
+                    }
+                    break;
+                case 1:// 品类券:跳转到产品 / 仪器页
+                    if (coupon.categoryType === 1) {
+                        resultUrl = '/product/type-287.html';
+                    } else {
+                        resultUrl = '/product/type-286.html';
+                    }
+                    break;
+                case 2:// 专享券:跳转到商城首页
+                    resultUrl = '/index.html';
+                    break;
+                case 3:// 店铺券:跳转到店铺首页
+                    resultUrl = '/supplier-' + coupon.shopId + '.html';
+                debugger
+                    break;
+                case 4:// 新用户券:跳转到商城首页
+                    resultUrl = '/index.html';
+                    break;
+            }
+            window.open(resultUrl, '_blank');
+        },
+
+        // 领取专属优惠券
+        receiveCoupon: function (id) {
+            var _self = this;
+            if(_self.vipInfo.vipFlag !== 1){
+               return CAIMEI.dialog('您还未开通超级会员,不能领取', false);
+            }
+            ProductApi.ReceiveCoupon({
+                userId: GLOBAL_USER_ID,
+                couponId: id,
+                source: 1
+            }, function (response) {
+                if (!response.code) {
+                    _self.couponList = _self.couponList.map(function (item, i) {
+                        if (item.couponId === id) {
+                            item.getFlag = 1
+                        }
+                        return item;
+                    });
+                    CAIMEI.dialog(response.data, false);
+                }
+            })
+        },
+        // 续费弹窗
+        handleShowRenewPopup: function () {
+            if(this.comboInfo.length === 0){
+                return CAIMEI.dialog('暂无可选套餐~', false);
+            }
+            this.fetchSuperPackage();
+            this.currentIndex = 1;
+            this.showMask = true;
+            this.showRenewPopup = true;
+        },
+        // 关闭续费弹窗
+        handleCloseRenewPopup: function () {
+            this.showMask = false;
+            this.showRenewPopup = false;
+        },
+        // 获取页面优惠商品
+        getSvipProductList: function () {
+            var _self = this;
+            ProductApi.GetSvipProductList(this.listQuery, function (res) {
+                if (res.code) return;
+                var resultData = res.data;
+                if (isPC) {
+                    _self.productList = resultData.svipProductPage.results.splice(0, 5);
+                } else {
+                    _self.productList = resultData.svipProductPage.results.splice(0, 6);
+                }
+                setTimeout(function () {
+                    $("img[data-original]").lazyload();
+                });
+            })
+        },
+        makePrice: function (product) {
+            if (!product) return;
+            // 普通商品
+            var priceFlag = parseInt(product.priceFlag);  //商品可见度 0公开价格 1不公开价格 2仅对会员机构公开
+            var userIdentity = parseInt(product.userIdentity);  //用户身份 0、个人  1、协销 2、资质机构 3、供应商 4,个人机构
+            var shopID = parseInt(product.shopID); // 所属供应商id
+            var originalPrice = parseFloat(product.originalPrice).toFixed(2);  //商品原价
+            var price = parseFloat(product.price).toFixed(2); // 商品价格
+            var priceGrade = parseInt(product.priceGrade); // 价格等级
+
+            // 二手商品价格标识 2 :价格详聊
+            var detailTalkFlag = parseInt(detailTalkFlag);
+
+            // 标签
+            var promotions = product.promotions; // 促销标签内容
+            var svipProductFlag = product.svipProductFlag; // SVIP标识 1 是 2 不是
+            var isSvip = true;
+
+            if (product.productCategory === '1') {
+                // 登录后查看
+                if (!GLOBAL_USER_ID) {
+                    return '¥登录后查看'
+                }
+                if (priceFlag === 1) {
+                    return '¥价格未公开'
+                }
+                if ((priceFlag === 2 && GLOBAL_USER_IDENTITY !== 2) && GLOBAL_VIP_FLAG !== 1) {
+                    return '¥会员可见'
+                }
+                // 价格可见
+                if ((priceFlag === 0 && userIdentity !== 3) || (GLOBAL_USER_IDENTITY === 2) || (userIdentity === 3 && GLOBAL_SHOP_ID === shopID) || GLOBAL_VIP_FLAG === 1) {
+                    if (promotions || (svipProductFlag === 1 && GLOBAL_VIP_FLAG === 1)) {
+                        return '<del>¥' + originalPrice + '</del>'
+                    }
+                    return '¥' + price;
+                }
+                return '<span>¥</span><span class=\"p-icon i' + priceGrade + '\"></span>'
+            } else {
+                // 二手商品
+                if (detailTalkFlag === 2) {
+                    return '¥价格详聊'
+                }
+                return '¥' + price;
+            }
+        },
+
+        setBottomBtnsVisiable: function () {
+            var _self = this;
+            if (isPC && _self.comboInfo.length > 0 && _self.vipInfo.vipFlag !== 1 && _self.showBottomBtns) {
+                setTimeout(function () {
+                    $(window).scroll(function () {
+                        var vipPackage = document.querySelector('#vipPackage').getBoundingClientRect();
+                        var memberPage = document.querySelector('#memberPage').getBoundingClientRect();
+                        var clientHeight = $(window).height();
+                        if (clientHeight - memberPage.bottom > 104) {
+                            _self.showBottomBtns = true;
+                            $('#pay-amount-bottom').addClass('absolute');
+                        } else {
+                            $('#pay-amount-bottom').removeClass('absolute');
+                            if (vipPackage.bottom > 0) {
+                                _self.showBottomBtns = false;
+                            }
+                        }
+                    })
+                })
+            }
         }
     }
 });

+ 26 - 20
src/main/resources/static/js/user-center/member/memberProduct.js

@@ -33,29 +33,32 @@ var memberProduct = new Vue({
         }
     },
     mounted: function () {
+        this.productList = [];
         this.getSvipProductList();
-        this.$nextTick(function () {
-            setTimeout(function () {
-                $("img[data-original]").lazyload();
-            });
-        });
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
         // 获取商品列表
         getSvipProductList() {
             var _self = this;
             ProductApi.GetSvipProductList(this.listQuery, function (res) {
                 if (res.code) return;
-                var resutlData = res.data;
-                _self.listQuery.pageNum = resutlData.svipProductPage.pageNum;
-                _self.listQuery.pageSize = resutlData.svipProductPage.pageSize;
-                _self.totalPage = resutlData.svipProductPage.totalPage;
-                _self.hasNextPage = resutlData.svipProductPage.hasNextPage;
-                _self.bannerImage = resutlData.adsImage;
+                var resultData = res.data;
+                _self.listQuery.pageNum = resultData.svipProductPage.pageNum;
+                _self.listQuery.pageSize = resultData.svipProductPage.pageSize;
+                _self.totalPage = resultData.svipProductPage.totalPage;
+                _self.hasNextPage = resultData.svipProductPage.hasNextPage;
+                _self.bannerImage = resultData.adsImage;
+                setTimeout(function () {
+                    $("img[data-original]").lazyload();
+                });
                 if (isPC){
-                    _self.productList = resutlData.svipProductPage.results;
+                    _self.productList = resultData.svipProductPage.results;
                 }else {
-                    _self.productList = _self.productList.concat(resutlData.svipProductPage.results);
+                    _self.productList = _self.productList.concat(resultData.svipProductPage.results);
                 }
             })
         },
@@ -65,8 +68,8 @@ var memberProduct = new Vue({
             var priceFlag = parseInt(product.priceFlag);  //商品可见度 0公开价格 1不公开价格 2仅对会员机构公开
             var userIdentity = parseInt(product.userIdentity);  //用户身份 0、个人  1、协销 2、资质机构 3、供应商 4,个人机构
             var shopID = parseInt(product.shopID); // 所属供应商id
-            var originalPrice = parseInt(product.originalPrice).toFixed(2);  //商品原价
-            var price = parseInt(product.price).toFixed(2); // 商品价格
+            var originalPrice = parseFloat(product.originalPrice).toFixed(2);  //商品原价
+            var price = parseFloat(product.price).toFixed(2); // 商品价格
             var priceGrade = parseInt(product.priceGrade); // 价格等级
 
             // 二手商品价格标识 2 :价格详聊
@@ -77,7 +80,7 @@ var memberProduct = new Vue({
             var svipProductFlag = product.svipProductFlag; // SVIP标识 1 是 2 不是
             var isSvip = true;
 
-            if (product.productCategory == 1) {
+            if (product.productCategory === '1') {
                 // 登录后查看
                 if (!GLOBAL_USER_ID) {
                     return '¥登录后查看'
@@ -85,11 +88,11 @@ var memberProduct = new Vue({
                 if (priceFlag === 1) {
                     return '¥价格未公开'
                 }
-                if (priceFlag === 2 && GLOBAL_USER_IDENTITY !== 2) {
+                if ((priceFlag === 2 && GLOBAL_USER_IDENTITY === 4) && GLOBAL_VIP_FLAG !== 1) {
                     return '¥会员可见'
                 }
                 // 价格可见
-                if ((priceFlag === 0 && userIdentity !== 3) || (GLOBAL_USER_IDENTITY === 2) || (userIdentity === 3 && GLOBAL_SHOP_ID === shopID)) {
+                if ((priceFlag === 0 && userIdentity !== 3) || (GLOBAL_USER_IDENTITY === 2) || (userIdentity === 3 && GLOBAL_SHOP_ID === shopID) || GLOBAL_VIP_FLAG === 1) {
                     if (promotions || (svipProductFlag === 1 && GLOBAL_VIP_FLAG === 1)) {
                         return '<del>¥' + originalPrice + '</del>'
                     }
@@ -110,11 +113,14 @@ var memberProduct = new Vue({
                 return this.jumpPageSize = '';
             }
             this.listQuery.pageNum = parseInt(pageNum);
-            // this.getList(); //获取列表
+            this.getSvipProductList(); //获取列表
         },
         //h5查看更多
         showMore() {
-
+            if(this.hasNextPage){
+                this.listQuery.pageNum ++;
+                this.getSvipProductList();
+            }
         }
     }
 });

+ 85 - 8
src/main/resources/static/js/user-center/member/memberRecord.js

@@ -1,16 +1,38 @@
+// 会员套餐
+var comboInfo = [
+    {
+        id: 1,
+        duration: 12,
+        price: 4800,
+        recommend: false,
+    }, {
+        id: 2,
+        duration: 3,
+        price: 1500,
+        recommend: true,
+    }, {
+        id: 3,
+        duration: 1,
+        price: 600,
+        recommend: false,
+    }
+];
+
 var memberRecord = new Vue({
     el: '#memberRecord',
     data: {
         listQuery: {
-            keyword: '', //查询关键词
-            productType: 0, //商品类型 0 全部 1 仪器 2 产品
+            userId: GLOBAL_USER_ID,
             pageNum: 1,
             pageSize: 10
         },
-        hasMore: true,
-        totalPage: 10,
+        vipInfo:{},
+        hasMore: false,
+        totalPage: 0,
         jumpPageSize: 1,
-        total: 10,
+        total: 0,
+        recordList: [],
+        comboInfo: []
     },
     computed: {
         pagination: function () {
@@ -28,7 +50,23 @@ var memberRecord = new Vue({
                 return [1, 0, this.totalPage - 4, this.totalPage - 3, this.totalPage - 2, this.totalPage - 1, this.totalPage];
             }
             return [1, 0, index - 2, index - 1, index, index + 1, index + 2, 0, this.totalPage];
-        }
+        },
+        svipTips: function () {
+            var vipFlag = this.vipInfo.vipFlag;
+            var endTime = moment(this.vipInfo.endTime).format('yyyy.MM.DD');
+            if (vipFlag === 1) {
+                return '<span>已开通采美超级会员</span><span class="time">有效期至' + endTime + '</span>'
+            } else if (vipFlag === -1) {
+                return '<span class="error">采美·超级会员已过期</span><span class="time">有效期至' + endTime + '</span>';
+            } else {
+                return '<span>采美·超级会员</span><span>享专属特权</span>'
+            }
+        },
+    },
+    mounted: function(){
+        this.vipInfo = JSON.parse(window.localStorage.getItem('vipInfo'));
+        this.fetchSuperPackage();
+        this.getHistoryList();
     },
     methods: {
         //页码跳转
@@ -37,10 +75,49 @@ var memberRecord = new Vue({
                 return this.jumpPageSize = '';
             }
             this.listQuery.pageNum = parseInt(pageNum);
-            // this.getList(); //获取列表
+            this.getHistoryList(); //获取列表
+        },
+        // 获取会员开通记录
+        getHistoryList: function(){
+            var _self = this;
+            UserApi.SuperHistory(this.listQuery, function(res){
+                if(res.code === 0){
+                    _self.totalPage = res.data.pages;
+                    _self.total = res.data.total;
+                    _self.hasMore = res.data.hasNextPage;
+                    _self.listQuery.pageNum = res.data.pageNum;
+                    if(isPC){
+                        _self.recordList = res.data.list;
+                    }else{
+                        _self.recordList = _self.recordList.concat(res.data.list);
+                    }
+                }
+            })
+        },
+        // 获取套餐
+        fetchSuperPackage: function () {
+            var _self = this;
+            UserApi.FetchSuperPackage({}, function (response) {
+                if (response.code === 0) {
+                    _self.comboInfo = response.data;
+                }
+            })
+        },
+        duration: function(id){
+            var duration = 0;
+            this.comboInfo.forEach(function(item){
+                if(id === item.id){
+                    return duration = item.duration;
+                }
+            });
+            return duration;
         },
         //h5查看更多
-        showMore() {
+        showMore: function() {
+            if (this.total > this.recordList.length) {
+                this.listQuery.pageNum++;
+                this.getHistoryList()
+            }
         }
     }
 });

+ 23 - 8
src/main/resources/static/js/user-center/setting/information.js

@@ -52,7 +52,7 @@ var informationPage = new Vue({
             {value:'1',name:'整形'},
             {value:'2',name:'轻医美'},
             {value:'3',name:'皮肤科'},
-            {value:'3',name:'产后修复'},
+            {value:'4',name:'产后修复'},
         ],
         medicaCampNullList: [
             {name:'美容'},
@@ -89,11 +89,20 @@ var informationPage = new Vue({
         secondtypeflag:false,
         mproflag:false,
         userMainProflag:false,
+        medicalPracticeLicenseFlag: false
     },
     computed: {
 
+    },
+    watch: {
+
     },
     methods: {
+        handleChangeType: function(type){
+            if(type === parseInt(this.clubUpgradeUser.firstClubType)) return;
+            this.userMainPros = [];
+            this.clubUpgradeUser.secondClubType = (type === 1 ? 1 : 5);
+        },
         infoInformationData:function(){
             var _self = this;
             UserApi.GetApplicationData({userId:_self.userId},function (response) {
@@ -117,7 +126,7 @@ var informationPage = new Vue({
                     _self.clubUpgradeUser.firstClubType = data.club.firstClubType ? data.club.firstClubType : null;
                     _self.clubUpgradeUser.secondClubType = data.club.secondClubType ? data.club.secondClubType :null;
                     _self.clubUpgradeUser.address = data.club.address ? data.club.address : null;
-                    console.log('1111111111111111111');
+                    _self.firstClubType = _self.clubUpgradeUser.firstClubType;
                     if( _self.clubUpgradeUser.firstClubType == 1){
                         if(data.club.mainProduct){
                             _self.userMainPros = _self.setNewMainpro(data.club.mainProduct);
@@ -149,20 +158,20 @@ var informationPage = new Vue({
             var _self = this;
             var params ={};
             var pass = verifyForm();
-             if (!pass) {return false;}
+            if (!pass) {return false;}
             if(_self.userIdentity === 2) {
                 if (_self.clubUpgradeUser.townId == 0 || _self.clubUpgradeUser.address == '') {
                     _self.flagshow = true;
                     setTimeout(function () {
                         _self.flagshow = false;
-                    }, 2000)
+                    }, 2000);
                     return;
                 }
                 if (_self.clubUpgradeUser.businessLicense == '' || _self.clubUpgradeUser.businessLicense == null) {
                     _self.businessflag = true;
                     setTimeout(function () {
                         _self.businessflag = false;
-                    }, 2000)
+                    }, 2000);
                     return;
                 }
                 if (_self.clubUpgradeUser.firstClubType == '' || _self.clubUpgradeUser.firstClubType == null) {
@@ -180,6 +189,13 @@ var informationPage = new Vue({
                         }, 2000);
                         return;
                     }
+                    if (!_self.clubUpgradeUser.medicalPracticeLicense) {
+                        _self.medicalPracticeLicenseFlag = true;
+                        setTimeout(function () {
+                            _self.medicalPracticeLicenseFlag = false;
+                        }, 2000);
+                        return;
+                    }
                     if (_self.userMainPros == '') {
                         _self.mproflag = true;
                         setTimeout(function () {
@@ -279,12 +295,14 @@ var informationPage = new Vue({
                             CAIMEI.dialog('主营内容已存在!',false);
                         }else {
                             _self.mentuzCampNullList.push(obj);
+                            _self.mainProEdit = '';
                         }
                     }else{
                         if(_self.checkedArray(_self.mainProEdit,_self.medicaCampNullList)){
                             CAIMEI.dialog('主营内容已存在!',false);
                         }else {
                             _self.medicaCampNullList.push(obj);
+                            _self.mainProEdit = '';
                         }
                     }
                 }
@@ -431,9 +449,6 @@ var informationPage = new Vue({
         showViewerImageFn2:function(){//预览资质图片
             var viewer = new Viewer(document.getElementById('medicalPracticeLicenseImg'));
         },
-    },
-    created: function () {
-
     },
     mounted: function () {
         var _self = this;

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

@@ -65,11 +65,17 @@ var upgradePage = new Vue({
         secondtypeflag:false,
         mproflag:false,
         userMainProflag:false,
+        medicalPracticeLicenseFlag: false
     },
     computed: {
 
     },
     methods: {
+        handleChangeType: function(type){
+            if(type === parseInt(this.clubUpgradeUser.firstClubType)) return;
+            this.userMainPros = [];
+            this.clubUpgradeUser.secondClubType = (type === 1 ? 1 : 5);
+        },
         infoInformationData:function(){//机构资料初始化
             var _self = this;
             UserApi.GetApplicationData({userId:_self.clubUpgradeUser.userId},function (response) {
@@ -149,22 +155,29 @@ var upgradePage = new Vue({
                _self.typeflag = true;
                setTimeout(function () {
                     _self.typeflag = false;
-                },2000)
+                },2000);
                return;
             }
             if(_self.clubUpgradeUser.firstClubType==1){
-                if(_self.clubUpgradeUser.secondClubType==''||_self.clubUpgradeUser.secondClubType==null){
+                if (_self.clubUpgradeUser.secondClubType == '' || _self.clubUpgradeUser.secondClubType == null) {
                     _self.secondtypeflag = true;
                     setTimeout(function () {
-                    _self.secondtypeflag = false;
-                },2000)
+                        _self.secondtypeflag = false;
+                    }, 2000);
+                    return;
+                }
+                if(!_self.clubUpgradeUser.medicalPracticeLicense){
+                    _self.medicalPracticeLicenseFlag = true;
+                    setTimeout(function () {
+                        _self.medicalPracticeLicenseFlag = false;
+                    }, 2000);
                     return;
                 }
                 if(_self.userMainPros==''){
                       _self.mproflag = true;
                      setTimeout(function () {
                         _self.mproflag = false;
-                    },2000)
+                    },2000);
                     return;
                 }
             }

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

@@ -144,8 +144,8 @@
                 </div>
                 <div class="formLine">
                     <p id="firstClubType"><em>*</em>机构类型:</p>
-                    <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1"  @change="ChangeFirstClubType"><i class="icon mIcon">医美</i></label>
-                    <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked  @change="ChangeFirstClubType"><i class="icon mIcon">生美</i></label>
+                    <label class="diyBox" @click="handleChangeType(1)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1"  @change="ChangeFirstClubType"><i class="icon mIcon">医美</i></label>
+                    <label class="diyBox" @click="handleChangeType(2)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked  @change="ChangeFirstClubType"><i class="icon mIcon">生美</i></label>
                     <span class="errTips icon mIcon" tips="请选择公司类型"></span>
                 </div>
                 <!-- 医美 -->
@@ -165,7 +165,7 @@
                 </div>
                 <div v-show="clubUpgradeUser.firstClubType == 1" class="formLine">
                     <div class="form-upload">
-                        <p>资质:</p>
+                        <p><em>*</em>资质:</p>
                         <div class="form-upload-image" v-if="clubUpgradeUser.medicalPracticeLicense!=''">
                             <img class="upload-img" :src="clubUpgradeUser.medicalPracticeLicense" alt="" id="medicalPracticeLicenseImg" @click="showViewerImageFn2()">
                             <i class="icon mIcon" @click="deleteMedicalImage()"></i>
@@ -187,7 +187,7 @@
                 </div>
                 <div class="formLine clear" v-if="clubUpgradeUser.firstClubType == 1">
                     <p><em>*</em>主营内容:</p>
-                    <p class="business clear">
+                    <p class="business clear" id="business">
                         <label v-for="pro in medicaCampNullList" class="diyBox second" >
                             <input type="checkbox" name="secondClubType" v-model="userMainPros" :value="pro.name" >
                             <i class="icon mIcon">{{pro.name}}</i>
@@ -197,12 +197,13 @@
                         <input type="text" placeholder="请输入其他自定义品项目" v-model.trim="mainProEdit">
                         <a href="javascript:void(0);" @click="mainProAdd()">确认添加</a>
                     </p>
+                    <div style="clear:both;"></div>
                     <span class="errTips icon mIcon" tips="请选择或添加主营产品"></span>
                 </div>
                 <div class="formLine clear" v-if="clubUpgradeUser.firstClubType == 2">
                     <p><em>*</em>主营内容:</p>
-                    <p class="business clear">
-                        <label v-for="pro in mentuzCampNullList" class="diyBox second">
+                    <p class="business clear" id="business">
+                        <label v-for="pro in mentuzCampNullList" class="diyBox second" @click>
                             <input type="checkbox" name="secondClubType" v-model="userMainPros" :value="pro.name" >
                             <i class="icon mIcon">{{pro.name}}</i>
                         </label>
@@ -211,6 +212,7 @@
                         <input type="text" placeholder="请输入其他自定义品项目" v-model.trim="mainProEdit">
                         <a href="javascript:void(0);" @click="mainProAdd()">确认添加</a>
                     </p>
+                    <div style="clear:both;"></div>
                     <span class="errTips icon mIcon" tips="请选择或添加主营产品"></span>
                 </div>
                 <div class="subLine">

+ 7 - 2
src/main/resources/templates/components/footer.html

@@ -76,8 +76,13 @@
                 <p>
                     <span>Copyright © 2015-2021 CAIMEI365.com All Rights Reserved.</span><span>深圳市采美网络信息有限公司</span>
                     <span>
-                        <!-- CNZZ统计 start -->
-                        <script type="text/javascript">document.write(unescape("%3Cspan id='cnzz_stat_icon_1279558759'%3E%3C/span%3E%3Cscript src='https://s9.cnzz.com/z_stat.php%3Fid%3D1279558759%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));</script>
+                        <!-- CNZZ统计 start 只www.caimei365.com下初始化-->
+                        <script type="text/javascript">
+                        if (window.location.href.indexOf('www.caimei365.com') !== -1) {
+                            document.write(unescape("%3Cspan id='cnzz_stat_icon_1279558759'%3E%3C/span%3E%3Cscript src='https://s9.cnzz.com/z_stat.php%3Fid%3D1279558759%26show%3Dpic' type='text/javascript'%3E%3C/script%3E"));
+                        }
+                        var _czc = _czc || []; // 防止脚本未加载时报错
+                        </script>
                         <!-- CNZZ统计 start -->
                     </span>
                 </p>

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

@@ -11,7 +11,7 @@
                         <div v-if="headCart.cartCount>0">
                             <div class="cartMain">
                                 <div class="cartItem" v-for="cart in headCart.cartList">
-                                    <a href="javascript:void(0)" @click="productDetailsFn(cart.id)">
+                                    <a href="javascript:void(0)" @click="productDetailsFn(cart.productId)">
                                         <img :src="cart.image" >
                                         <span class="name" v-text="cart.name"></span>
                                         <span class="unit" v-text="'包装规格:'+cart.unit"></span>
@@ -34,7 +34,7 @@
                         </div>
                     </div>
                 </li>
-                <li><a href="/user/member.html">超级会员</a></li>
+                <li><a :href="GLOBAL_USER_ID === 0 ? '/login.html' : '/user/member.html'">超级会员</a></li>
                 <li v-if="loginStatus" id="mGlobalMenu" @click="hideGlobalMenu()">
                     <a class="cTab" href="javascript:void(0);" v-if="userIdentity == 3" v-text="userData.name"></a>
                     <a class="cTab" href="javascript:void(0);" v-else v-text="userData.name"></a>

+ 19 - 27
src/main/resources/templates/index.html

@@ -169,9 +169,9 @@
                                                         <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
                                                         <template v-if="pros.product.svipProductFlag === 1">
                                                             <div class="svip-tag">
-                                                                <div class="svip-icon" :class="{ btr: pros.product.priceFlag != 1 && pros.product.userIdentity === 2 }">SVIP</div>
+                                                                <div class="svip-icon">SVIP</div>
                                                                 <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
-                                                                <template v-if="pros.product.priceFlag != 1 && (pros.product.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || pros.product.userIdentity === 2">
+                                                                <template v-if="showVipPriceTag(pros.product)">
                                                                     <div class="svip-price">
                                                                         <span v-html="pros.product.svipPriceTag"></span>
                                                                     </div>
@@ -189,36 +189,28 @@
                                                         </template>
                                                     </div>
                                                     <div class="main_price_login">
-                                                        <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                                                        <!--priceFlag 0公开价格 1不公开价格 2仅对会员机构公开-->
                                                         <template v-if="pros.product.priceFlag == 1">
                                                             <em class="price_grade"><span>¥</span>价格未公开</em>
                                                         </template>
+                                                        <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
+                                                        <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (pros.product.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && pros.product.shopID==GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                                            <div class="main_price_show" :class="{none: showVipPriceTag(pros.product) || PromotionsFormat(pros.product.promotions)}">
+                                                                ¥<span class="price_num" v-if="showVipPriceTag(pros.product)">{{ pros.product.originalPrice | NumFormat }}</span>
+                                                                <span class="price_num" v-else>{{ pros.product.price | NumFormat }}</span>
+                                                            </div>
+                                                        </template>
+                                                        <!--机构价仅会员可见 && 用户是普通机构-->
+                                                        <template v-else-if="pros.product.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">
+                                                            <em class="price_grade_club"><span>¥</span>会员可见</em>
+                                                        </template>
                                                         <template v-else>
-                                                            <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                                <!--单品优惠时的划线价-->
-                                                                <div class="main_price_show none">
-                                                                    ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
-                                                                </div>
-                                                            </template>
-                                                            <template v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                                <!--机构价-->
-                                                                <!--机构价划线:有sivp优惠价格 && 开通SVIP && 价格可见-->
-                                                                <div class="main_price_show" :class="{none:pros.product.svipProductFlag == 1 && true}">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span></div>
-                                                            </template>
-                                                            <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                                <em class="price_grade_club">
-                                                                    <span>¥</span>会员可见
-                                                                </em>
-                                                            </template>
-                                                            <template v-else>
-                                                                <!--供应商除自己的商品外,也显示价格等级-->
-                                                                <em class="price_grade_shop">
-                                                                    <span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
-                                                                </em>
-                                                            </template>
+                                                            <!--供应商除自己的商品外,也显示价格等级-->
+                                                            <em class="price_grade_shop">
+                                                                <span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
+                                                            </em>
                                                         </template>
                                                     </div>
-
                                                 </template>
                                                 <!-- 二手商品 -->
                                                 <template v-else>
@@ -309,7 +301,7 @@
                                                                     <p class="couponTag" th:if="*{couponsLogo}">优惠券</p>
                                                                     <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
                                                                     <div class="svip-tag" th:if="*{svipProductFlag}==1">
-                                                                        <div class="svip-icon btr">SVIP</div>
+                                                                        <div class="svip-icon">SVIP</div>
                                                                     </div>
                                                                     <p class="listTag" th:if="*{actStatus}==1 and ${pros.get('product').get('promotions')}!=null">
                                                                         <template th:text="*{promotions.name}"></template>

+ 5 - 4
src/main/resources/templates/pay/caimei-pay.html

@@ -19,7 +19,7 @@
     <div class="container" v-if="!isErrorShow">
         <div class="pay-content clear">
             <div class="pay-title">
-                <div class="title-left"><p><span id="userName">{{userName}}</span></p></div>
+                <div class="title-left"><p><span id="userName">{{ userName }}</span></p></div>
                 <div class="title-right">
                     <div class="time">
                         <span id="downHour">{{downHour}}</span>
@@ -77,15 +77,15 @@
                 </div>
             </template>
             <!--购买会员-->
-            <template v-else-if="false">
+            <template v-else-if="type === 2">
                 <div class="pay-svip">
                     <div class="pay-svip-title">购买超级会员</div>
                     <div class="content">
                         <div class="pay-svip-detail">
                             <div class="tit">支付金额</div>
-                            <div class="pay-amount"><span>¥</span>6000.00</div>
+                            <div class="pay-amount"><span>¥</span>{{ unpaidAmount | NumFormat }}</div>
                         </div>
-                        <div class="svip-indent">套餐12个月</div>
+                        <div class="svip-indent">套餐{{ vipMonth }}个月</div>
                     </div>
                 </div>
             </template>
@@ -197,6 +197,7 @@
 <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/pay.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/lib/qrcode.min.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/pay/caimei-bank.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/pay/caimei-pay.js(v=${version})}"></script>
 </body>

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

@@ -38,9 +38,9 @@
                     <div class="content">
                         <div class="pay-svip-detail">
                             <div class="tit">支付金额</div>
-                            <div class="pay-amount"><span>¥</span>6000.00</div>
+                            <div class="pay-amount"><span>¥</span>{{ comboInfo.price | NumFormat }}</div>
                         </div>
-                        <div class="svip-indent">套餐12个月</div>
+                        <div class="svip-indent">套餐{{ comboInfo.duration }}个月</div>
                     </div>
                 </div>
             </template>

+ 6 - 6
src/main/resources/templates/pay/caimei-paymobile.html

@@ -16,15 +16,15 @@
     </div>
 </div>
 <div class="pay-container weixin clear" id="payContainer" >
-<!--    <div v-if="loginLoading" class="loading" :style="{opacity: loginLoading ? '1' :'0'}">-->
-<!--        <img src="/img/base/loading.gif">-->
-<!--    </div>-->
-    <div class="container" :class="isRequest ? 'active' : ''">
+    <div v-if="loginLoading" class="loading" :style="{opacity: loginLoading ? '1' :'0'}">
+        <img src="/img/base/loading.gif">
+    </div>
+    <div class="container" :class="{active: isRequest}" v-show="isRequest">
         <div class="pay-content weixin clearfix" v-if="payInfo.payType === 'WEIXIN'">
             <div class="pay-codecontent">
                 <div class="pay-amount">
                     <div class="pay-amount-text">
-                        <p v-if="pageType == '2'">超级会员套餐:12个月 </p>
+                        <p v-if="pageType == '2'">超级会员套餐:{{ duration }}个月 </p>
                         <p>交易金额: <span>¥{{payAmount | NumFormat}}</span> </p>
                         <p>收款方: <span>深圳市采美信息技术有限公司</span> </p>
                         <p v-if="pageType!='1' && pageType!='2'">订单号: <span>{{orderNo}}</span> </p>
@@ -52,7 +52,7 @@
             <div class="pay-codecontent">
                 <div class="pay-amount">
                     <div class="pay-amount-text">
-                        <p v-if="pageType == '2'">超级会员套餐:12个月 </p>
+                        <p v-if="pageType == '2'">超级会员套餐:{{ duration }}个月 </p>
                         <p>交易金额: <span>¥{{payAmount | NumFormat}}</span> </p>
                         <p>收款方: <span>深圳市采美信息技术有限公司</span> </p>
                         <p v-if="pageType!='1' && pageType!='2'">订单号: <span>{{orderNo}}</span> </p>

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

@@ -24,8 +24,9 @@
             </div>
             <div class="success-text"><p class="tx1">{{isSuccessText}}</p></div>
             <div class="success-text"><p class="tx2">付款金额: <span>¥{{payAmount | NumFormat}}</span> </p></div>
-            <!-- <div class="success-text"><p class="tx2"><span>{{maxtime}}s</span>后自动跳转到{{linkText}}<a :href="openLink">立即跳转</a></p></div>-->
-            <div class="success-text"><p class="tx2">点击<a :href="openLink">立即跳转</a>到{{linkText}}</p></div>
+<!--            <div class="success-text"><p class="tx2"><span>{{maxtime}}s</span>后自动跳转到{{linkText}}<a :href="openLink">立即跳转</a></p></div>-->
+            <div class="success-text" v-if="refreshType"><p class="tx2">点击<a :href="openLink">立即跳转</a>到{{linkText}}<span style="margin-left: 25px;">{{maxtime}}s后自动跳转</span></p></div>
+            <div class="success-text" v-else><p class="tx2">点击<a :href="openLink">立即跳转</a>到{{linkText}}</p></div>
     </div>
 </div>
 <!-- 引入底部 -->

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

@@ -71,26 +71,26 @@
                             <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
                             <em v-if="priceObj.priceFlag==1" v-text="'¥价格未公开'"></em>
                             <!--SVIP时的划线价格-->
-                            <!--满足条件:公开价格 && (个人机构 || 资质机构) && 开通SVIP && SVIP优惠商品-->
-                            <em v-else-if="priceObj.priceFlag != 1 && GLOBAL_VIP_FLAG === 1">
+                            <!--满足条件:只有开通会员才显示划线价格-->
+                            <em v-else-if="GLOBAL_VIP_FLAG === 1 && priceObj.svipPriceTag === 1">
                                 <del v-text="'¥'+parseFloat(priceObj.originalPrice).toFixed(2)"></del>
                             </em>
-                            <!--仅会员可见 -->
-                            <em v-else-if="priceObj.priceFlag==2 && priceObj.userIdentity==4" v-text="'¥会员可见'"></em>
                             <!--可见价格 -->
-                            <template v-else-if="(priceObj.priceFlag==0 && priceObj.userIdentity!=3) || priceObj.userIdentity==2 || (priceObj.userIdentity==3 && priceObj.shopId==GLOBAL_SHOP_ID)">
-                                <em v-if="priceObj.actStatus==1 && promotions && promotions.type==1 && promotions.mode==1"class="p">
+                            <template v-else-if="(priceObj.priceFlag==0 && priceObj.userIdentity!=3) || priceObj.userIdentity==2 || (priceObj.userIdentity==3 && priceObj.shopId==GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                <em v-if="priceObj.actStatus==1 && promotions && promotions.type==1 && promotions.mode==1" class="p">
                                     <del v-text="'¥'+parseFloat(priceObj.originalPrice).toFixed(2)"></del>
                                 </em>
                                 <em v-else class="p" v-text="'¥'+parseFloat(priceObj.price).toFixed(2)"></em>
                             </template>
+                            <!--仅会员可见 -->
+                            <em v-else-if="priceObj.priceFlag==2 && priceObj.userIdentity==4" v-text="'¥会员可见'"></em>
                             <!--隐藏价格 -->
                             <em v-else>¥<i th:attr="class=${'icon mIcon i'+product.priceGrade}"></i></em>
                             <!--SVIP会员标签-->
                             <div class="svip-tag" v-if="priceObj.svipProductFlag == 1">
                                 <div class="svip-icon">SVIP</div>
                                 <!-- !价格未公开 && ((个人机构 + SVIP) || 资质机构 ) 可查看价格 -->
-                                <div class="svip-price" v-if="priceObj.priceFlag != 1 && (priceObj.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || priceObj.userIdentity === 2">
+                                <div class="svip-price" v-if="showVipPriceTag(priceObj)">
                                     <span v-html="priceObj.svipPriceTag"></span>
                                 </div>
                             </div>
@@ -238,12 +238,12 @@
                 <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">
+                    <div class="btnBox" v-if="priceObj.priceFlag==2 && priceObj.userIdentity==4 && GLOBAL_VIP_FLAG !== 1">
                         <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)">
+                         v-else-if="(priceObj.priceFlag==0 && priceObj.userIdentity!=3) || (priceObj.priceFlag==2 && priceObj.userIdentity==2) || GLOBAL_VIP_FLAG === 1">
                         <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"
@@ -513,7 +513,7 @@
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
-<script src="https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment-2.29.min.js"></script>
+<script src="/lib/datapicker/moment-2.29.min.js"></script>
 <script charset="utf-8" type="text/javascript" src="/lib/magnifier.js"></script>
 <script charset="utf-8" type="text/javascript" src="/lib/viewer.min.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>

+ 30 - 70
src/main/resources/templates/product/instruelist.html

@@ -110,89 +110,48 @@
                             <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
                             <p class="name" v-html="p.name" v-else></p>
                             <div class="price">
+                                <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
                                 <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                    <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                    <template v-if="p.priceFlag==1">
-                                        <div class="price_text_tag">
-                                            <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                            <template v-if="p.svipProductFlag === 1">
-                                                <div class="svip-tag">
-                                                    <div class="svip-icon">SVIP</div>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </template>
-                                        </div>
-                                        <div class="main_price_unde">¥价格未公开</div>
-                                    </template>
-                                    <template v-else>
-                                        <template v-if="(p.priceFlag==0 && p.userIdentity!=3) || p.userIdentity==2 || (p.userIdentity==3 && p.shopId==GLOBAL_SHOP_ID)">
-                                           <div class="price_text_tag">
-                                                <p class="couponTag"v-if="p.couponsLogo">优惠券</p>
-                                                <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                                <template v-if="p.svipProductFlag === 1">
-                                                    <div class="svip-tag">
-                                                        <div class="svip-icon" :class="{ btr: p.priceFlag != 1 && p.userIdentity === 2 }">SVIP</div>
-                                                        <!-- !价格未公开 && ((个人机构 + SVIP) || 资质机构 ) 可查看价格 -->
-                                                        <template v-if="p.priceFlag != 1 && (p.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || p.userIdentity === 2">
-                                                            <div class="svip-price">
-                                                                <span v-html="p.svipPriceTag"></span>
-                                                            </div>
-                                                        </template>
+                                    <div class="price_text_tag">
+                                        <p class="couponTag"v-if="p.couponsLogo">优惠券</p>
+                                        <template v-if="p.svipProductFlag === 1">
+                                            <div class="svip-tag">
+                                                <div class="svip-icon">SVIP</div>
+                                                <template v-if="showVipPriceTag(p)">
+                                                    <div class="svip-price">
+                                                        <span v-html="p.svipPriceTag"></span>
                                                     </div>
                                                 </template>
-                                                <template v-else>
-                                                    <p class="listTag" v-if="p.actStatus==1">
-                                                        {{p.promotions.name}}
-                                                        <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
-                                                    </p>
-                                                </template>
-                                            </div>
-                                            <div class="main_price_show"
-                                                :class="{none: PromotionsFormat(p.promotions) || ([2, 4].includes(p.userIdentity) && true)}">
-                                                ¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}
                                             </div>
                                         </template>
-                                        <template v-else-if="p.priceFlag==2 && p.userIdentity==4">
-                                             <div class="price_text_tag">
-                                                <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                                <template v-if="p.svipProductFlag === 1">
-                                                    <div class="svip-tag">
-                                                        <div class="svip-icon">SVIP</div>
-                                                    </div>
-                                                </template>
-                                                <template v-else>
-                                                    <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                                </template>
-                                            </div>
-                                            <div class="main_price_unde">¥会员可见</div>
-                                        </template>
                                         <template v-else>
-                                         <div class="price_text_tag">
-                                            <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                            <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                            <template v-if="p.svipProductFlag === 1">
-                                                <div class="svip-tag">
-                                                    <div class="svip-icon">SVIP</div>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </template>
-                                        </div>
-                                        <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                                            <p class="listTag" v-if="p.actStatus==1">
+                                                {{p.promotions.name}}
+                                                <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
+                                            </p>
                                         </template>
+                                    </div>
+                                    <!--价格未公开-->
+                                    <div class="main_price_unde" v-if="p.priceFlag==1">¥价格未公开</div>
+                                    <!--机构价格-->
+                                    <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                        <div class="main_price_show"
+                                            :class="{none: PromotionsFormat(p.promotions) || showVipPriceTag(p)}">
+                                            <span>¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}</span>
+                                        </div>
                                     </template>
+                                    <!--会员可见-->
+                                    <div class="main_price_unde" v-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
+                                    <!--其他-->
+                                    <div class="price_grade" v-else><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                 </template>
+                                <!--
                                 <template v-else>
-                                     <div class="price_text_tag ">
+                                     <div class="price_text_tag">
                                          <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                         <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
                                          <template v-if="p.svipProductFlag === 1">
                                              <div class="svip-tag">
-                                                 <div class="svip-icon btr">SVIP</div>
+                                                 <div class="svip-icon">SVIP</div>
                                              </div>
                                          </template>
                                          <template v-else>
@@ -201,6 +160,7 @@
                                       </div>
                                       <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                 </template>
+                                -->
                             </div>
                         </a>
                     </li>

+ 19 - 26
src/main/resources/templates/product/instrument.html

@@ -115,16 +115,16 @@
                                     <div class="page_main_price" v-if="pros.listType == 1">
                                         <!-- 商品价格 -->
                                         <div class="main_price_text">
-                                        <!-- 正常商品 -->
+                                            <!-- 正常商品 -->
                                             <template v-if="pros.product.productCategory == 1">
                                                 <div class="price_text_tag">
                                                     <p class="couponTag" v-if="pros.product.couponsLogo">优惠券</p>
                                                     <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
                                                     <template v-if="pros.product.svipProductFlag === 1">
                                                         <div class="svip-tag">
-                                                            <div class="svip-icon" :class="{ btr: pros.priceFlag != 1 && pros.userIdentity === 2 }">SVIP</div>
+                                                            <div class="svip-icon">SVIP</div>
                                                             <!-- !价格未公开 && ((个人机构 + SVIP) || 资质机构 ) 可查看价格 -->
-                                                            <template v-if="pros.priceFlag != 1 && (pros.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || pros.userIdentity === 2">
+                                                            <template v-if="showVipPriceTag(pros.product)">
                                                                 <div class="svip-price">
                                                                     <span v-html="pros.product.svipPriceTag"></span>
                                                                 </div>
@@ -143,31 +143,24 @@
                                                 </div>
                                                 <div class="main_price_login">
                                                     <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                    <template v-if="pros.product.priceFlag == 1">
-                                                        <em class="price_grade"><span>¥</span>价格未公开</em>
+                                                    <em class="price_grade" v-if="pros.product.priceFlag == 1"><span>¥</span>价格未公开</em>
+                                                    <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (pros.product.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && pros.product.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                                        <!--机构价-->
+                                                        <div class="main_price_show" :class="{none: PromotionsFormat(pros.product.promotions) || showVipPriceTag(pros.product) }">
+                                                            ¥<span class="price_num" v-if="showVipPriceTag(pros.product)">{{ pros.product.originalPrice | NumFormat }}</span>
+                                                              <span class="price_num" v-else>{{ pros.product.price | NumFormat }}</span>
+                                                        </div>
+                                                    </template>
+                                                    <template v-else-if="pros.product.priceFlag === 2 && GLOBAL_USER_IDENTITY === 4">
+                                                        <em class="price_grade_club">
+                                                            <span>¥</span>会员可见
+                                                        </em>
                                                     </template>
                                                     <template v-else>
-                                                        <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                            <!--单品优惠时的划线价-->
-                                                            <div class="main_price_show none">
-                                                                ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
-                                                            </div>
-                                                        </template>
-                                                        <template v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                            <!--机构价-->
-                                                            <div class="main_price_show" :class="{none:pros.product.svipProductFlag == 1}">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span></div>
-                                                        </template>
-                                                        <template v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                            <em class="price_grade_club">
-                                                                <span>¥</span>会员可见
-                                                            </em>
-                                                        </template>
-                                                        <template v-else>
-                                                            <!--供应商除自己的商品外,也显示价格等级-->
-                                                            <em class="price_grade_shop">
-                                                                <span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
-                                                            </em>
-                                                        </template>
+                                                        <!--供应商除自己的商品外,也显示价格等级-->
+                                                        <em class="price_grade_shop">
+                                                            <span class="bold">¥</span><i :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
+                                                        </em>
                                                     </template>
                                                 </div>
                                             </template>

+ 27 - 72
src/main/resources/templates/product/list.html

@@ -113,88 +113,43 @@
                     <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
                     <p class="name" v-html="p.name" v-else></p>
                     <div class="price">
+                        <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
                         <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                            <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                            <template v-if="p.priceFlag==1">
-                                <div class="price_text_tag clear">
-                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                    <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                    <template v-if="p.svipProductFlag === 1">
-                                        <div class="svip-tag">
-                                            <div class="svip-icon">SVIP</div>
-                                        </div>
-                                    </template>
-                                    <template v-else>
-                                        <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                    </template>
-                                </div>
-                                <div class="main_price_unde">¥价格未公开</div>
-                            </template>
-                            <template v-else>
-                                <template v-if="(p.priceFlag==0 && p.userIdentity!=3) || p.userIdentity==2 || (p.userIdentity==3 && p.shopId==GLOBAL_SHOP_ID)">
-                                    <div class="price_text_tag clear">
-                                        <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                        <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                        <template v-if="p.svipProductFlag === 1">
-                                            <div class="svip-tag">
-                                                <div class="svip-icon" :class="{ btr: p.priceFlag != 1 && p.userIdentity === 2 }">SVIP</div>
-                                                <!-- !价格未公开 && ((个人机构 + SVIP) || 资质机构 ) 可查看价格 -->
-                                                <template v-if="(p.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || p.userIdentity === 2">
-                                                    <div class="svip-price">
-                                                        <span v-html="p.svipPriceTag"></span>
-                                                    </div>
-                                                </template>
-                                            </div>
-                                        </template>
-                                        <template v-else>
-                                            <p class="listTag" v-if="p.actStatus==1">
-                                                {{p.promotions.name}}
-                                                <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
-                                            </p>
-                                        </template>
-                                    </div>
-                                    <div class="main_price_show"
-                                        :class="{none: PromotionsFormat(p.promotions) || ([2, 4].includes(p.userIdentity) && true)}">
-                                        ¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}
-                                    </div>
-                                </template>
-                                <template v-else-if="p.priceFlag==2 && p.userIdentity==4">
-                                    <div class="price_text_tag clear">
-                                        <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                        <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                        <template v-if="p.svipProductFlag === 1">
-                                            <div class="svip-tag">
-                                                <div class="svip-icon">SVIP</div>
+                            <div class="price_text_tag clear">
+                                <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
+                                <template v-if="p.svipProductFlag === 1">
+                                    <div class="svip-tag">
+                                        <div class="svip-icon">SVIP</div>
+                                        <template v-if="showVipPriceTag(p)">
+                                            <div class="svip-price">
+                                                <span v-html="p.svipPriceTag"></span>
                                             </div>
                                         </template>
-                                        <template v-else>
-                                            <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                        </template>
                                     </div>
-                                    <div class="main_price_unde">¥会员可见</div>
                                 </template>
                                 <template v-else>
-                                    <div class="price_text_tag clear">
-                                        <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                        <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
-                                        <template v-if="p.svipProductFlag === 1">
-                                            <div class="svip-tag">
-                                                <div class="svip-icon">SVIP</div>
-                                            </div>
-                                        </template>
-                                        <template v-else>
-                                            <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                        </template>
-                                    </div>
-                                    <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                                    <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}
+                                        <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
+                                    </p>
                                 </template>
+                            </div>
+                            <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                            <div class="main_price_unde" v-if="p.priceFlag==1">¥价格未公开</div>
+                            <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
+                            <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                <div class="main_price_show"
+                                    :class="{none: PromotionsFormat(p.promotions) || (p.svipProductFlag === 1 && showVipPriceTag(p))}">
+                                    ¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}
+                                </div>
                             </template>
+                            <!--机构价仅会员可见 && 用户是普通机构-->
+                            <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
+                            <!--供应商除自己的商品外,也显示价格等级-->
+                            <div class="price_grade" v-else><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                         </template>
                         <template v-else>
-                            <div class="price_text_tag clear ">
+                            <div class="price_text_tag">
                                 <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                <!--超级会员价格标签 svipProductFlag 1:超级会员优惠商品 0 不是商超级会员优惠商品-->
                                 <template v-if="p.svipProductFlag === 1">
                                     <div class="svip-tag">
                                         <div class="svip-icon">SVIP</div>
@@ -204,7 +159,7 @@
                                     <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
                                 </template>
                             </div>
-                            <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                            <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                         </template>
                     </div>
                 </a>

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

@@ -37,10 +37,10 @@
         <ul class="productList clear mfw">
             <li class="productItem mfc" v-for="p in listData">
                 <div class="item">
-                    <a class="image" :href="'/product-'+p.id+'.html'" target="_blank">
+                    <a class="image" :href="'/product-'+p.productId+'.html'" target="_blank">
                         <img :src="p.image" :alt="p.name">
                     </a>
-                    <a class="name" :href="'/product-'+p.id+'.html'" target="_blank">
+                    <a class="name" :href="'/product-'+p.productId+'.html'" target="_blank">
                         <span v-html="p.name"></span>
                     </a>
                     <div class="price mfhc">

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

@@ -49,7 +49,7 @@
                     <div class="c0">
                         <input class="check" type="checkbox" @change="ckeckSupplier($event, supplier.isChecked)" v-model="supplier.isChecked">
                     </div>
-                    <a  class="shop" :href="'/supplier-'+supplier.id+'.html'" target="_blank">
+                    <a  class="shop" :href="'/supplier-'+supplier.shopId+'.html'" target="_blank">
                         <img class="img" :src="supplier.shopLogo">
                         <span class="name" v-text="supplier.shopName"></span>
                     </a>
@@ -106,7 +106,7 @@
                                 <div class="priceTag">
                                     <!--超级会员价格标签-->
                                     <div class="svip-tag">
-                                        <div class="svip-icon btr">SVIP</div>
+                                        <div class="svip-icon">SVIP</div>
                                         <div class="svip-price">
                                             <span v-html="cart.svipPriceTag"></span>
                                         </div>

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

@@ -149,10 +149,10 @@
                             <template v-if="cart.svipProductFlag == 1">
                                 <del v-text="'¥'+toFloat(cart.originalPrice)" v-if="GLOBAL_VIP_FLAG === 1"></del>
                                 <span v-text="'¥'+toFloat(cart.originalPrice)" v-else></span>
-                                <div class="priceTag">
+                                <div class="priceTag" v-if="cart.svipProductFlag == 1 && GLOBAL_VIP_FLAG === 1">
                                     <!--超级会员价格标签-->
                                     <div class="svip-tag">
-                                        <div class="svip-icon btr">SVIP</div>
+                                        <div class="svip-icon">SVIP</div>
                                         <div class="svip-price">
                                             <span v-html="cart.svipPriceTag"></span>
                                         </div>

+ 1 - 1
src/main/resources/templates/supplier-center/order/logistics-add.html

@@ -35,7 +35,7 @@
                     </p>
                     <div class="user">
                         <p>买家名称:<span>{{userInfo.name}}</span></p>
-                        <p>收货人:<span>{{userInfo.shouHuoRen}}</span></p>
+                        <p>收货人:<span>{{userInfo.receiver}}</span></p>
                         <p>联系方式:<span>{{userInfo.mobile}}</span></p>
                     </div>
                     <p class="address">收货地址:<span>{{userInfo.address}}</span></p>

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

@@ -218,7 +218,7 @@
                             </div>
                             <div class="release-from clear">
                                 <div class="release-label"><span class="star">*</span>包装规格:</div>
-                                <div class="release-input"><input class="input" v-model="releaseParams.unit" type="text" placeholder="请输入包装规格,如:台,30ml/瓶" @blur="blur_aliasUnit"></div>
+                                <div class="release-input"><input class="input" v-model="releaseParams.unit" type="text" placeholder="请输入包装规格,如:台,30ml/瓶" @blur="blur_aliasUnit" maxlength="20"></div>
                                 <div class="release-tips" v-show="vShow_Unit">{{fromMessage}}</div>
                             </div>
                             <div class="release-from clear">

+ 60 - 176
src/main/resources/templates/supplier/index.html

@@ -53,192 +53,76 @@
         </div>
         <div class="tabCon">
             <div class="item productBox">
-                <div v-if="mainProducts.length>0" class="part">
-                    <div class="title">主推商品</div>
-                    <!--主推商品列表-->
-                    <ul class="productList clear mfw">
-                        <li class="productItem " v-for="p in mainProducts">
-                            <a class="image" :href="'/product-'+p.productId+'.html'">
-                                <img src="/img/base/placeholder.png" :data-original="p.image" :alt="p.name">
-                                <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
-                                <p class="name" v-html="p.name" v-else></p>
-                                <div class="price">
-                                    <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                        <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                        <template v-if="p.priceFlag==1">
+                <template v-for="(floor,index) in floorData">
+                    <div v-if="(floor.type === 1 && floor.productList.length > 0) || floor.type === 2" class="part">
+                        <div class="title" v-html="floor.title" :id="floor.type === 2 ? 'supProduct' : ''"></div>
+                        <!--主推商品列表-->
+                        <ul class="productList clear mfw" v-if="floor.type === 2 && floor.productList.length > 0">
+                            <li class="productItem " v-for="p in floor.productList">
+                                <a class="image" :href="'/product-'+p.productId+'.html'">
+                                    <img src="/img/base/placeholder.png" :data-original="p.image" :alt="p.name">
+                                    <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
+                                    <p class="name" v-html="p.name" v-else></p>
+                                    <div class="price">
+                                        <!--已登录-->
+                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID > 0">
+                                            <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
                                             <div class="price_text_tag">
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </div>
-                                            <div class="main_price_unde">¥价格未公开</div>
-                                        </template>
-                                        <template v-else>
-                                            <template v-if="(p.priceFlag==0 && p.userIdentity!=3) || p.userIdentity==2 || (p.userIdentity==3 && p.shopId==GLOBAL_SHOP_ID)">
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                            <div class="svip-price">
-                                                                <span>¥</span><span>9999999.00</span>
-                                                            </div>
+                                                <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
+                                                <template v-if="p.svipProductFlag === 1">
+                                                    <div class="svip-tag">
+                                                        <div class="svip-icon">SVIP</div>
+                                                        <div class="svip-price" v-if="showVipPriceTag(p)">
+                                                            <span>¥</span><span v-html="p.svipPriceTag"></span>
                                                         </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <p class="listTag" v-if="p.actStatus==1">
-                                                            {{p.promotions.name}}
-                                                            <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
-                                                        </p>
-                                                    </template>
-                                                </div>
-                                                <div class="main_price_show" :class="PromotionsFormat(p.promotions) ? 'none' : ''">
+                                                    </div>
+                                                </template>
+                                                <template v-else>
+                                                    <p class="listTag" v-if="p.actStatus==1">
+                                                        {{p.promotions.name}}
+                                                        <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
+                                                    </p>
+                                                </template>
+                                            </div>
+                                            <div class="main_price_unde" v-if="p.priceFlag == 1">¥价格未公开</div>
+                                            <!--机构价格-->
+                                            <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                                <div class="main_price_show" :class="{none: PromotionsFormat(p.promotions) || showVipPriceTag(p)}">
                                                     ¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}
                                                 </div>
                                             </template>
-                                            <template v-else-if="p.priceFlag==2 && p.userIdentity==4">
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                                    </template>
-                                                </div>
-                                                <div class="main_price_unde">¥会员可见</div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                         <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                                    </template>
-                                                </div>
-                                                <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
-                                            </template>
-                                        </template>
-                                    </template>
-                                    <template v-else>
-                                        <div class="price_text_tag ">
-                                            <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                            <template v-if="true">
-                                                <div class="svip-tag">
-                                                    <div class="svip-icon btr">SVIP</div>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </template>
-                                        </div>
-                                        <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
-                                    </template>
-                                </div>
-                            </a>
-                        </li>
-                    </ul>
-                </div>
-                <div class="part">
-                    <div class="title" id="supProduct">供应商产品</div>
-                    <!--主推商品列表-->
-                    <ul v-if="productLists.length>0" class="productList clear mfw">
-                        <li class="productItem " v-for="p in productLists">
-                            <a class="image" :href="'/product-'+p.productId+'.html'">
-                                <img src="/img/base/placeholder.png" :data-original="p.image" :alt="p.name">
-                                <p class="name" v-html="addhtml + p.name" v-if="p.beautyActFlag==1"></p>
-                                <p class="name" v-html="p.name" v-else></p>
-                                <div class="price">
-                                    <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
-                                        <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
-                                        <template v-if="p.priceFlag==1">
-                                            <div class="price_text_tag">
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </div>
-                                            <div class="main_price_unde">¥价格未公开</div>
+                                            <!--机构价仅会员可见 && 用户是普通机构-->
+                                            <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
+                                            <!--供应商除自己的商品外,也显示价格等级-->
+                                            <div class="price_grade" v-else><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                         </template>
+                                        <!--未登录-->
                                         <template v-else>
-                                            <template v-if="(p.priceFlag==0 && p.userIdentity!=3) || p.userIdentity==2 || (p.userIdentity==3 && p.shopId==GLOBAL_SHOP_ID)">
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                            <div class="svip-price">
-                                                                <span>¥</span><span>9999999.00</span>
-                                                            </div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <p class="listTag" v-if="p.actStatus==1">
-                                                            {{p.promotions.name}}
-                                                            <span v-if="p.priceFlag != 1 && PromotionsFormat(p.promotions)">:¥{{p.price | NumFormat}}</span>
-                                                        </p>
-                                                    </template>
-                                                </div>
-                                                <div class="main_price_show" :class="PromotionsFormat(p.promotions) ? 'none' : ''">
-                                                    ¥{{ (PromotionsFormat(p.promotions) ? p.originalPrice : p.price ) | NumFormat }}
-                                                </div>
-                                            </template>
-                                            <template v-else-if="p.priceFlag==2 && p.userIdentity==4">
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                                    </template>
-                                                </div>
-                                                <div class="main_price_unde">¥会员可见</div>
-                                            </template>
-                                            <template v-else>
-                                                <div class="price_text_tag">
-                                                    <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                                    <template v-if="true">
-                                                        <div class="svip-tag">
-                                                            <div class="svip-icon btr">SVIP</div>
-                                                        </div>
-                                                    </template>
-                                                    <template v-else>
-                                                        <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                                    </template>
-                                                </div>
-                                                <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
-                                            </template>
+                                            <div class="price_text_tag ">
+                                                <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
+                                                <template v-if="p.svipProductFlag === 1">
+                                                    <div class="svip-tag">
+                                                        <div class="svip-icon">SVIP</div>
+                                                    </div>
+                                                </template>
+                                                <template v-else>
+                                                    <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
+                                                </template>
+                                            </div>
+                                            <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                         </template>
-                                    </template>
-                                    <template v-else>
-                                        <div class="price_text_tag ">
-                                            <p class="couponTag" v-if="p.couponsLogo">优惠券</p>
-                                            <template v-if="true">
-                                                <div class="svip-tag">
-                                                    <div class="svip-icon btr">SVIP</div>
-                                                </div>
-                                            </template>
-                                            <template v-else>
-                                                <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
-                                            </template>
-                                        </div>
-                                        <div class="price_grade "><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
-                                    </template>
-                                </div>
-                            </a>
-                        </li>
-                    </ul>
-                    <div v-else class="empty">
-                        <img src="/img/order/icon-dianpu.svg">
-                        <div class="msg">
-                            <p>该供应商暂未发布商品,去<a href="/">商城</a>,逛逛吧~</p>
+                                    </div>
+                                </a>
+                            </li>
+                        </ul>
+                        <div v-else class="empty">
+                            <img src="/img/order/icon-dianpu.svg">
+                            <div class="msg">
+                                <p>该供应商暂未发布商品,去<a href="/">商城</a>,逛逛吧~</p>
+                            </div>
                         </div>
                     </div>
-                </div>
+                </template>
             </div>
             <div class="item infoBox">
                 <div class="part">

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

@@ -38,7 +38,7 @@
                                 <span class="username">{{userInfo.name}}</span>
                                 <!-- 机构类型 -->
                                 <span class="agency" :class="[userIdentityTag.type]" v-html="userIdentityTag.name"></span>
-                                <span class="vip-icon" :class="[userIdentityTag.type]" v-html="userIdentityTag.type.toUpperCase()"></span>
+                                <span class="vip-icon" v-if="GLOBAL_USER_IDENTITY === 2" :class="[userIdentityTag.type]" v-html="userIdentityTag.type.toUpperCase()"></span>
                                 <!-- 升级 -->
                                 <a class="update" href="/user/setting/upgrade.html" v-if="userInfo.userIdentity === 4" onclick="_czc.push(['_trackEvent','个人中心','升级入口','点击','','Um_Event_ClubUpgrade'])">
                                     去升级资质机构
@@ -60,7 +60,7 @@
                         <div class="section">
                             <div v-html="svipTips"></div>
                             <a v-if="true" href="/user/member.html" :class="vipInfo.vipFlag === 0 ? 'btn' : 'link'">
-                                <span v-if="vipInfo.vipFlag === 0">立即开通</span>
+                                <span v-if="vipInfo.vipFlag === 0" onclick="_czc.push(['_trackEvent','立即开通','超级会员','跳转会员中心','','Um_Event_RegisterSuper'])">立即开通</span>
                                 <span v-else>进入会员中心&gt;</span>
                             </a>
                         </div>

+ 6 - 8
src/main/resources/templates/user-center/member/member-product.html

@@ -21,11 +21,11 @@
                 <img src="/img/base/placeholder.png" :data-original="product.image"/>
                 <div class="goods-title cm-text-ellipsis-2" v-html="product.name"></div>
                 <div class="goods-tag">
-                    <span class="tag styl1" v-if="true">优惠券</span>
-                    <div class="svip-tag">
-                        <div class="svip-icon " :class="{ btr: product.priceFlag != 1 && product.userIdentity === 2 }">SVIP</div>
+                    <span class="tag styl1" v-if="product.couponsLogo">优惠券</span>
+                    <div class="svip-tag" v-if="product.svipProductFlag === 1">
+                        <div class="svip-icon ">SVIP</div>
                         <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
-                        <template v-if="product.priceFlag != 1 && (product.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || product.userIdentity === 2">
+                        <template v-if="showVipPriceTag(product)">
                             <div class="svip-price">
                                 <span v-html="product.svipPriceTag"></span>
                             </div>
@@ -63,9 +63,7 @@
 <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/product.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript"
-        th:src="@{/js/user-center/member/memberProduct.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberProduct.js(v=${version})}"></script>
 </body>
 </html>

+ 13 - 38
src/main/resources/templates/user-center/member/member-record.html

@@ -24,52 +24,27 @@
             <!--左侧导航-->
             <template th:replace="user-center/components/tableft"></template>
             <div class="right">
+                <!--会员信息-->
                 <!--会员信息-->
                 <div class="vip-bar">
-                    <div class="left-box row2">
-                        <!--未开通-->
-                        <template v-if="true">
-                            <span>采美·超级会员</span>
-                            <span>享专属特权</span>
-                        </template>
-                        <!-- 已开通 未过期 -->
-                        <template v-if="false">
-                            <span>采美·超级会员</span>
-                            <span>有效期:2021-10-01</span>
-                        </template>
-                        <!-- 已过期 -->
-                        <template v-if="false">
-                            <span class="error">采美·超级会员已过期</span>
-                            <span>有效期:2021-10-01</span>
-                        </template>
-                    </div>
+                    <div class="left-box" :class="isPC ? 'row1' : 'row2'" v-html="svipTips"></div>
                     <div class="right-box">
-                        <template v-if="false">
-                            <a href="" class="link">购买记录</a>
-                            <a href="" class="btn">续费</a>
-                        </template>
+<!--                        <template v-if="vipInfo.vipFlag !== 0">-->
+<!--                            <a href="/user/member-record.html" class="link">购买记录</a>-->
+<!--                            <a href="javascript:void(0)" @click="handleShowRenewPopup" class="btn">续费</a>-->
+<!--                        </template>-->
                     </div>
                 </div>
                 <!--记录列表-->
                 <div class="record-list">
-                    <div class="record">
-                        <div class="desc">
-                            <span>超级会员-1个月</span>
-                            <span>2021-09-12 11:53:26</span>
-                        </div>
-                        <div class="amount">
-                            <span v-if="true">60000采美豆</span>
-                            <span v-else>¥1200</span>
-                        </div>
-                    </div>
-                    <div class="record">
+                    <div class="record" v-for="(item, index) in recordList" :key="index">
                         <div class="desc">
-                            <span>超级会员-3个月</span>
-                            <span>2021-09-12 11:53:26</span>
+                            <span>超级会员-{{ item.duration }}个月</span>
+                            <span>{{ moment(item.payTime).format('yyyy-MM-DD hh:mm:ss') }}</span>
                         </div>
                         <div class="amount">
-                            <span v-if="false">60000采美豆</span>
-                            <span v-else>¥1200</span>
+                            <span v-if="item.price">¥{{ item.price.toFixed(2) }}</span>
+                            <span v-else>{{ item.userBeans }}采美豆</span>
                         </div>
                     </div>
                 </div>
@@ -130,9 +105,9 @@
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" src="/lib/datapicker/moment-2.29.min.js"></script>
 <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/member/memberRecord.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberRecord.js(v=${version})}"></script>
 </body>
 </html>

+ 75 - 127
src/main/resources/templates/user-center/member/member.html

@@ -29,37 +29,40 @@
                     <div class="left-box" :class="isPC ? 'row1' : 'row2'" v-html="svipTips"></div>
                     <div class="right-box">
                         <template v-if="vipInfo.vipFlag !== 0">
-                            <a href="" class="link">购买记录</a>
-                            <a href="" class="btn">续费</a>
+                            <a href="/user/member-record.html" class="link">购买记录</a>
+                            <a href="javascript:void(0)" @click="handleShowRenewPopup" class="btn" onclick="_czc.push(['_trackEvent','续费超级会员','超级会员','续费按钮','','Um_Event_RenewButton'])">续费</a>
                         </template>
                     </div>
                 </div>
                 <!--套餐价格 仅未开通和到期显示-->
-                <div class="section" v-if="vipInfo.vipFlag === 0">
+                <div class="section" v-if="vipInfo.vipFlag !== 1" id="vipPackage">
                     <div class="section-title">超级会员套餐</div>
                     <div class="content combo-list">
-                        <div>
-                            <template v-for="(item, index) in comboInfo">
-                                <div class="combo" :class="{active: index === currentIndex,recommend: item.recommend}"
-                                     :key="index" @click="chooseCombo(index)">
-                                    <div class="how-mounts">{{ item.durationTime }}个月</div>
-                                    <div class="price"><i>¥</i>{{ item.price }}</div>
-                                    <div class="average">{{ item.price / item.durationTime }}元/月</div>
-                                </div>
-                            </template>
-                        </div>
-                        <div>
-                            <div class="pay-btn">
-                                <a href="javascript:void(0);" @click="payAction(1)">
-                                    立即支付{{ comboInfo[currentIndex].price }}元开通
-                                </a>
+                        <template v-if="comboInfo.length > 0">
+                            <div>
+                                <template v-for="(item, index) in comboInfo">
+                                    <div class="combo" :class="{active: index === currentIndex,recommend: item.recommend}"
+                                         :key="index" @click="chooseCombo(index)">
+                                        <div class="how-mounts">{{ item.duration }}个月</div>
+                                        <div class="price"><i>¥</i>{{ item.price }}</div>
+                                        <div class="average">{{ item.price / item.duration }}元/月</div>
+                                    </div>
+                                </template>
                             </div>
-                            <div class="pay-btn plain">
-                                <a href="javascript:void(0);" @click="payAction(2)">
-                                    抵扣{{ comboInfo[currentIndex].price * 100 }}个采美豆开通
-                                </a>
+                            <div>
+                                <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付1','','Um_Event_RegisterSuperPayOne'])">
+                                    <a href="javascript:void(0);" @click="payAction(1)">
+                                        立即支付{{ comboInfo[currentIndex].price }}元开通
+                                    </a>
+                                </div>
+                                <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣1','','Um_Event_RegisterSuperByBeansOne'])">
+                                    <a href="javascript:void(0);" @click="payAction(2)">
+                                        抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通
+                                    </a>
+                                </div>
                             </div>
-                        </div>
+                        </template>
+                        <span v-else>暂无可选套餐~</span>
                     </div>
                 </div>
                 <!--服务列表-->
@@ -67,9 +70,9 @@
                     <div class="section-title">专属特权</div>
                     <div class="content service-list">
                         <div v-for="(item, index) in serviceList" :key="index">
-                            <img :src="'https://static.caimei365.com/app/img/svip/pc-cm-svip-icon' + (index + 1) + '.png'"
+                            <img :src="'/img/member/pc-cm-svip-icon' + (index + 1) + '.png'"
                                  v-if="isPC"/>
-                            <img :src="'https://static.caimei365.com/app/img/svip/h5-cm-svip-icon' + (index + 1) + '.png'"
+                            <img :src="'/img/member/h5-cm-svip-icon' + (index + 1) + '.png'"
                                  v-else/>
                             <span class="tit" v-html="item.name"></span>
                             <span class="sub-tit" v-html="item.subTitle"></span>
@@ -80,98 +83,41 @@
                 <div class="section">
                     <div class="section-title">专属特权<span>每月可领4个</span></div>
                     <div class="content coupon-list">
-                        <template v-for="(item, index) in couponList">
-                            <div :key="index" :class="{'un-received': !item.received}">
-                                <span class="type">{{ item.type === 1 ? '新人券' : '活动券'}}</span>
-                                <div class="amount"><i>¥</i>{{ item.amount }}</div>
-                                <div class="condition" v-html="item.condition1"></div>
-                                <div class="condition" v-html="item.condition2"></div>
-                                <div class="receive-btn" v-if="!item.received">立即领取</div>
-                                <div class="receive-btn" v-else>已领取</div>
+                        <template v-if="couponList.length > 0">
+                            <div v-for="(item, index) in couponList" :key="index" class="un-received">
+                                <span class="type" v-html="item.typeText"></span>
+                                <div class="amount"><i>¥</i>{{ item.couponAmount }}</div>
+                                <div class="condition">满{{ item.touchPrice }}可用</div>
+                                <div class="condition" v-html="item.productType === 1 ? '全商城商品通用' : '指定商品可用'"></div>
+                                <div class="receive-btn" v-if="!item.getFlag" @click="receiveCoupon(item.couponId)">立即领取</div>
+                                <div class="receive-btn" v-else  @click="toUseCoupon(item)">去使用</div>
                             </div>
                         </template>
+                        <span v-else>暂无可领取优惠券~</span>
                     </div>
+
                 </div>
                 <!--优惠商品-->
-                <div class="section">
+                <div class="section" v-if="productList.length > 0">
                     <div class="section-title clear">优惠商品<a href="/user/member-product.html">查看更多&gt;</a></div>
                     <div class="content goods-list">
-                        <div class="goods" v-for="i in 5">
-                            <a href="">
-                                <img src="/img/base/placeholder.png"/>
-                                <div class="goods-title cm-text-ellipsis-2">华熙生物润百颜液体华熙生物润百颜</div>
+                        <div class="goods" v-for="(product, index) in productList" :key="index">
+                            <a :href="'/product-' + product.productId + '.html'">
+                                <img src="/img/base/placeholder.png" :data-original="product.image"/>
+                                <div class="goods-title cm-text-ellipsis-2" v-html="product.name"></div>
                                 <div class="goods-tag">
-                                    <span class="tag styl1">优惠券</span>
-                                    <span class="tag styl2">单品满赠</span>
-                                </div>
-                                <!-- v-if="pros.listType == 1" -->
-                                <div class="page_main_price" v-if="false">
-                                    <!-- 商品价格 -->
-                                    <div class="main_price_text">
-                                        <!-- 正常商品 -->
-                                        <template v-if="pros.product.productCategory == 1">
-                                            <div class="price_text_tag">
-                                                <!-- <p class="couponTag" v-if="pros.product.couponsLogo">优惠券</p>-->
-                                                <p class="listTag"
-                                                   v-if="pros.product.actStatus ==1 && pros.product.promotions">
-                                                    <span v-text="pros.product.promotions.name"></span>
-                                                    <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                        <!--单品优惠:优惠价-->
-                                                        <span class="price_unit">:¥</span><span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                    </template>
-                                                </p>
-                                            </div>
-                                            <div class="main_price_login">
-                                                <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                <template v-if="pros.product.priceFlag == 1">
-                                                    <em class="price_grade"><span>¥</span>价格未公开</em>
-                                                </template>
-                                                <template v-else>
-                                                    <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                        <!--单品优惠时的划线价-->
-                                                        <div class="main_price_show none">
-                                                            ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
-                                                        </div>
-                                                    </template>
-                                                    <template
-                                                            v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <!--机构价-->
-                                                        <div class="main_price_show">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                        </div>
-                                                    </template>
-                                                    <template
-                                                            v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <em class="price_grade_club">
-                                                            <span>¥</span>会员可见
-                                                        </em>
-                                                    </template>
-                                                    <template v-else>
-                                                        <!--供应商除自己的商品外,也显示价格等级-->
-                                                        <em class="price_grade_shop">
-                                                            <span class="bold">¥</span><i
-                                                                :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
-                                                        </em>
-                                                    </template>
-                                                </template>
-                                            </div>
-                                        </template>
-                                        <!-- 二手商品 -->
-                                        <template v-else>
-                                            <div class="main_price_login">
-                                                <div class="price_text_tag"></div>
-                                                <div v-if="pros.product.detailTalkFlag==2" class="main_price_show">¥价格祥聊
-                                                </div>
-                                                <div v-else class="main_price_show">
-                                                    ¥<span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                </div>
+                                    <span class="tag styl1" v-if="product.couponsLogo">优惠券</span>
+                                    <div class="svip-tag" v-if="product.svipProductFlag === 1">
+                                        <div class="svip-icon ">SVIP</div>
+                                        <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
+                                        <template v-if="showVipPriceTag(product)">
+                                            <div class="svip-price">
+                                                <span v-html="product.svipPriceTag"></span>
                                             </div>
                                         </template>
                                     </div>
                                 </div>
-                                <div class="svip-price">
-                                    <span class="svip-icon">SVIP</span>
-                                    <span class="amount">¥99999</span>
-                                </div>
+                                <div class="goods-price" v-html="makePrice(product)"></div>
                             </a>
                         </div>
                     </div>
@@ -180,15 +126,15 @@
         </div>
     </div>
     <!--底部支付按钮 仅未开通和到期显示-->
-    <div class="pay-amount-bottom">
+    <div class="pay-amount-bottom" id="pay-amount-bottom" v-if="comboInfo.length > 0 && vipInfo.vipFlag !== 1 && showBottomBtns">
         <div>
-            <div class="pay-btn plain">
-                <a href="javascript:void(0);" @click="payAction(1)">
-                    抵扣{{ comboInfo[currentIndex].price * 100 }}个采美豆开通
+            <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','采美豆抵扣2','','Um_Event_RegisterSuperByBeansTwo'])">
+                <a href="javascript:void(0);" @click="payAction(2)">
+                    抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通
                 </a>
             </div>
-            <div class="pay-btn">
-                <a href="javascript:void(0);" @click="payAction(2)">
+            <div class="pay-btn" onclick="_czc.push(['_trackEvent','开通超级会员','超级会员','支付2','','Um_Event_RegisterSuperPayTwo'])">
+                <a href="javascript:void(0);" @click="payAction(1)">
                     立即支付{{ comboInfo[currentIndex].price }}元开通
                 </a>
             </div>
@@ -198,32 +144,33 @@
     <div class="mask" v-if="showMask"></div>
     <!--续费弹窗-->
     <div class="renew-popup" v-if="showRenewPopup">
-        <div class="popup-title">超级会员套餐<span class="close">&times;</span></div>
+        <div class="popup-title">续费超级会员套餐<span class="close" @click="handleCloseRenewPopup">&times;</span></div>
         <div class="content combo-list">
-            <div>
+            <template v-if="comboInfo.length > 0">
                 <div>
                     <template v-for="(item, index) in comboInfo">
                         <div class="combo" :class="{active: index === currentIndex,recommend: item.recommend}"
                              :key="index" @click="chooseCombo(index)">
-                            <div class="how-mounts">{{ item.durationTime }}个月</div>
+                            <div class="how-mounts">{{ item.duration }}个月</div>
                             <div class="price"><i>¥</i>{{ item.price }}</div>
-                            <div class="average">{{ item.price / item.durationTime }}元/月</div>
+                            <div class="average">{{ item.price / item.duration }}元/月</div>
                         </div>
                     </template>
                 </div>
-            </div>
-            <div>
-                <div class="pay-btn">
-                    <a href="javascript:void(0);" @click="payAction(1)">
-                        立即支付{{ comboInfo[currentIndex].price }}元开通
-                    </a>
-                </div>
-                <div class="pay-btn plain">
-                    <a href="javascript:void(0);" @click="payAction(2)">
-                        抵扣{{ comboInfo[currentIndex].price * 100 }}个采美豆开通
-                    </a>
+                <div>
+                    <div class="pay-btn" onclick="_czc.push(['_trackEvent','续费超级会员','超级会员','支付','','Um_Event_RenewSuperPay'])">
+                        <a href="javascript:void(0);" @click="payAction(1)">
+                            立即支付{{ comboInfo[currentIndex].price }}元开通
+                        </a>
+                    </div>
+                    <div class="pay-btn plain" onclick="_czc.push(['_trackEvent','续费超级会员','超级会员','采美豆抵扣1','','Um_Event_RenewSuperPayByBeans'])">
+                        <a href="javascript:void(0);" @click="payAction(2)">
+                            抵扣{{ comboInfo[currentIndex].price * comboInfo[currentIndex].proportion }}个采美豆开通
+                        </a>
+                    </div>
                 </div>
-            </div>
+            </template>
+            <span v-else>暂无可选套餐~</span>
         </div>
     </div>
     <!--立即支付弹窗-->
@@ -240,6 +187,7 @@
 <script charset="utf-8" type="text/javascript" src="/lib/datapicker/moment-2.29.min.js"></script>
 <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/common/serviceapi/product.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberPage.js(v=${version})}"></script>
 </body>
 </html>

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

@@ -73,6 +73,7 @@
                                     <p v-if="orderInfo.discountFee>0">经理折扣:<span class="none">¥{{orderInfo.discountFee | NumFormat}}</span> </p>
                                     <p v-if="orderInfo.promotionFullReduction>0">促销满减:<span class="red">¥{{orderInfo.promotionFullReduction | NumFormat}}</span> </p>
                                     <p>优惠券:<span class="red">¥{{orderInfo.couponAmount | NumFormat}}</span> </p>
+                                    <p v-if="orderInfo.svipFullReduction">超级会员优惠:<span class="red">¥{{orderInfo.svipFullReduction | NumFormat}}</span> </p>
                                     <p v-if="orderInfo.presentCount>0">赠品数:<span class="none">{{orderInfo.presentCount}}</span></p>
                                 </div>
                             </div>
@@ -110,21 +111,21 @@
                                                     <p class="col" v-if="pros.productCategory != 2">规格:<span class="none">{{pros.productUnit ? pros.productUnit : ''}}</span> </p>
                                                     <p class="col">数量:<span class="none">{{pros.num}}</span> </p>
                                                     <div class="col">
-                                                        <template v-if="pros.svipProductFlag === 1">
+                                                        <template v-if="pros.svipPriceFlag === 1">
                                                             <span>单价: </span>
                                                             <span class="none"><del>¥{{pros.price | NumFormat}}</del></span>
                                                             <!--超级会员价格标签-->
                                                             <div class="svip-tag" >
-                                                                <div class="svip-icon" :class="{ btr: pros.priceFlag != 1 && pros.userIdentity === 2 }">SVIP</div>
-                                                                <div class="svip-price" v-if="pros.priceFlag != 1 && ((pros.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || pros.userIdentity === 2)">
-                                                                    <span>¥</span><span v-html="pros.price"></span>
+                                                                <div class="svip-icon">SVIP</div>
+                                                                <div class="svip-price">
+                                                                    <span v-html="pros.svipPriceTag"></span>
                                                                 </div>
                                                             </div>
                                                         </template>
                                                         <p v-else>单价: <span class="none">¥{{pros.price | NumFormat}}</span></p>
                                                     </div>
                                                     <p class="col">税率:<span class="none">{{pros.taxRate}}%</span></p>
-                                                    <p class="col">折扣:<span class="none">{{pros.discount == null ? '0' : pros.discount}}%</span></p>
+                                                    <p class="col" v-if="pros.svipPriceType === 2">折扣:<span class="none">{{pros.discount == null ? '0' : pros.discount}}%</span></p>
                                                     <p class="col">折后单价:<span class="none">¥{{pros.discountPrice | NumFormat}}</span></p>
                                                     <!-- 促销活动 -->
                                                     <div v-if="pros.productPromotion && pros.productPromotion.type !=3" class="priceTag">

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

@@ -115,8 +115,8 @@
                             </div>
                             <div class="formLine">
                                 <p id="firstClubType"><em>*</em>机构类型:</p>
-                                <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1"><i class="icon mIcon">医美</i></label>
-                                <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked><i class="icon mIcon">生美</i></label>
+                                <label class="diyBox" @click="handleChangeType(1)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1"><i class="icon mIcon">医美</i></label>
+                                <label class="diyBox" @click="handleChangeType(2)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked><i class="icon mIcon">生美</i></label>
                                 <span class="errTips icon mIcon" tips="" :class="typeflag?'show':''">请选择公司类型</span>
                             </div>
                             <!-- 医美 -->
@@ -136,7 +136,7 @@
                             </div>
                             <div v-show="clubUpgradeUser.firstClubType == 1" class="formLine">
                                 <div class="form-upload">
-                                    <p>资质:</p>
+                                    <p><em>*</em>资质:</p>
                                     <div class="form-upload-image" v-if="clubUpgradeUser.medicalPracticeLicense!=''&&clubUpgradeUser.medicalPracticeLicense!=null">
                                         <img class="upload-img" :src="clubUpgradeUser.medicalPracticeLicense" alt="" id="medicalPracticeLicenseImg" @click="showViewerImageFn2()">
                                         <i class="icon mIcon" @click="deleteMedicalImage()"></i>
@@ -151,6 +151,8 @@
                                     <i class="icon icon-wen"></i>
                                     <div class="wen-tips">点击图片可放大图片</div>
                                 </div>
+                                <div style="clear:both"></div>
+                                <span class="errTips icon mIcon" tips="" :class="medicalPracticeLicenseFlag?'show':''">请上传医疗执业许可证</span>
                             </div>
                             <div v-if="clubUpgradeUser.secondClubType == 2 || clubUpgradeUser.secondClubType == 3" class="formLine">
                                 <p>科室:</p>

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

@@ -108,8 +108,8 @@
                             </div>
                             <div class="formLine">
                                 <p><em>*</em>机构类型:</p>
-                                <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1" ><i class="icon mIcon">医美</i></label>
-                                <label class="diyBox"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked><i class="icon mIcon">生美</i></label>
+                                <label class="diyBox" @click="handleChangeType(1)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="1" ><i class="icon mIcon">医美</i></label>
+                                <label class="diyBox" @click="handleChangeType(2)"><input type="radio" name="firstShopType" v-model="clubUpgradeUser.firstClubType" value="2" checked><i class="icon mIcon">生美</i></label>
                                 <span class="errTips icon mIcon" tips="" :class="typeflag?'show':''">请选择公司类型</span>
                             </div>
                             <!-- 医美 -->
@@ -144,6 +144,8 @@
                                     <i class="icon icon-wen"></i>
                                     <div class="wen-tips">点击图片可放大图片</div>
                                 </div>
+                                <div style="clear:both"></div>
+                                <span class="errTips icon mIcon" tips="" :class="medicalPracticeLicenseFlag?'show':''">请上传医疗执业许可证</span>
                             </div>
                             <div v-if="clubUpgradeUser.secondClubType == 2 || clubUpgradeUser.secondClubType == 3" class="formLine">
                                 <p>科室:</p>