Browse Source

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

# Conflicts:
#	backup.sql
zhengjinyi 3 years ago
parent
commit
2026191033
100 changed files with 4287 additions and 1357 deletions
  1. 5 0
      backup.sql
  2. 38 0
      src/main/java/com/caimei/www/controller/authorized/PayController.java
  3. 16 0
      src/main/java/com/caimei/www/controller/unlimited/HelpPageController.java
  4. 2 0
      src/main/java/com/caimei/www/pojo/order/CartItem.java
  5. 2 0
      src/main/java/com/caimei/www/pojo/page/ProductDetail.java
  6. 2 0
      src/main/java/com/caimei/www/pojo/page/ProductList.java
  7. 5 1
      src/main/resources/mapper/ProductMapper.xml
  8. 1 0
      src/main/resources/static/MP_verify_77ef8FTVty438PCG.txt
  9. 4 2
      src/main/resources/static/css/base/floor.css
  10. 33 12
      src/main/resources/static/css/flea-market/form.css
  11. 23 0
      src/main/resources/static/css/help/details.css
  12. 49 0
      src/main/resources/static/css/help/news.css
  13. 10 0
      src/main/resources/static/css/index/index_new.h5.css
  14. 9 0
      src/main/resources/static/css/index/index_new.pc.css
  15. 12 10
      src/main/resources/static/css/pay/caimei-paycash.css
  16. 112 0
      src/main/resources/static/css/pay/caimei-paylist.css
  17. 3 3
      src/main/resources/static/css/pay/caimei-paymobile.css
  18. 59 0
      src/main/resources/static/css/pay/caimei-payunder.css
  19. 11 1
      src/main/resources/static/css/pay/caimei-success.css
  20. 3 0
      src/main/resources/static/css/pay/caimei-wechatpay.css
  21. 1 0
      src/main/resources/static/css/product/detail.h5.css
  22. 4 1
      src/main/resources/static/css/product/detail.pc.css
  23. 3 0
      src/main/resources/static/css/product/instruement-list.css
  24. 3 1
      src/main/resources/static/css/product/list.css
  25. 3 1
      src/main/resources/static/css/product/product-coupon.css
  26. 2 0
      src/main/resources/static/css/product/product-supporting.h5.css
  27. 165 0
      src/main/resources/static/css/product/promotions.css
  28. 2 0
      src/main/resources/static/css/shopping/shopping.css
  29. 5 2
      src/main/resources/static/css/supplier/index.css
  30. 3 1
      src/main/resources/static/css/user-center/collection/collection.css
  31. 23 32
      src/main/resources/static/css/user-center/order/detail.css
  32. BIN
      src/main/resources/static/img/base/icon-bigtype@2x.png
  33. BIN
      src/main/resources/static/img/base/icon-newbg@2x.png
  34. BIN
      src/main/resources/static/img/base/icon-newbgh5@2x.png
  35. BIN
      src/main/resources/static/img/base/icon-news-active@2x.png
  36. BIN
      src/main/resources/static/img/base/icon-news@2x.png
  37. BIN
      src/main/resources/static/img/base/icon-smalltype@2x.png
  38. BIN
      src/main/resources/static/img/common/qr_code_hehe.jpg
  39. BIN
      src/main/resources/static/img/common/qr_code_yan.jpg
  40. BIN
      src/main/resources/static/img/default/suppliver.png
  41. BIN
      src/main/resources/static/img/pay/icon-payerror@2x.png
  42. BIN
      src/main/resources/static/img/pay/icon-under@2x.png
  43. BIN
      src/main/resources/static/img/pay/icon-underh5@2x.png
  44. BIN
      src/main/resources/static/img/pay/iconbank-bigbank@2x.png
  45. 2 1
      src/main/resources/static/js/base.js
  46. 109 3
      src/main/resources/static/js/common/serviceapi/pay.service.js
  47. 1 1
      src/main/resources/static/js/common/serviceapi/user.service.js
  48. 36 0
      src/main/resources/static/js/common/serviceapi/utils.service.js
  49. 257 79
      src/main/resources/static/js/flea-market/form.js
  50. 26 0
      src/main/resources/static/js/help/details.js
  51. 79 0
      src/main/resources/static/js/help/news.js
  52. 11 2
      src/main/resources/static/js/index.js
  53. 25 0
      src/main/resources/static/js/pay/caimei-code.js
  54. 499 0
      src/main/resources/static/js/pay/caimei-hlbpay.js
  55. 68 98
      src/main/resources/static/js/pay/caimei-pay.js
  56. 87 385
      src/main/resources/static/js/pay/caimei-paycash.js
  57. 89 0
      src/main/resources/static/js/pay/caimei-paylist.js
  58. 46 23
      src/main/resources/static/js/pay/caimei-paymobile.js
  59. 67 0
      src/main/resources/static/js/pay/caimei-payunder.js
  60. 5 0
      src/main/resources/static/js/pay/caimei-success.js
  61. 46 191
      src/main/resources/static/js/pay/caimei-wechatpay.js
  62. 373 0
      src/main/resources/static/js/pay/mixin/hlb_payMixin.js
  63. 140 0
      src/main/resources/static/js/pay/mixin/hlb_wxMixin.js
  64. 355 0
      src/main/resources/static/js/pay/mixin/mh_payMixin.js
  65. 123 0
      src/main/resources/static/js/pay/mixin/mh_wxMixin.js
  66. 61 3
      src/main/resources/static/js/product/detail.js
  67. 1 0
      src/main/resources/static/js/product/list.js
  68. 7 1
      src/main/resources/static/js/shopping/cart.js
  69. 20 14
      src/main/resources/static/js/shopping/confirm.js
  70. 1 0
      src/main/resources/static/js/supplier/index.js
  71. 6 0
      src/main/resources/static/js/supplier/list.js
  72. 1 1
      src/main/resources/static/js/user-center/account/coupon-collection.js
  73. 1 1
      src/main/resources/static/js/user-center/member/memberPage.js
  74. 51 76
      src/main/resources/static/js/user-center/order/detail.js
  75. 51 77
      src/main/resources/static/js/user-center/order/list.js
  76. 7 2
      src/main/resources/static/js/utils.js
  77. 2 2
      src/main/resources/templates/components/footer.html
  78. 1 1
      src/main/resources/templates/components/header.html
  79. 4 0
      src/main/resources/templates/flea-market/detail.html
  80. 326 204
      src/main/resources/templates/flea-market/form.html
  81. 1 1
      src/main/resources/templates/flea-market/intro.html
  82. 34 0
      src/main/resources/templates/help/details.html
  83. 66 0
      src/main/resources/templates/help/news.html
  84. 17 1
      src/main/resources/templates/index.html
  85. 23 0
      src/main/resources/templates/pay/caimei-code.html
  86. 187 0
      src/main/resources/templates/pay/caimei-hlbpay.html
  87. 60 57
      src/main/resources/templates/pay/caimei-pay.html
  88. 39 24
      src/main/resources/templates/pay/caimei-paycash.html
  89. 119 0
      src/main/resources/templates/pay/caimei-paylist.html
  90. 10 4
      src/main/resources/templates/pay/caimei-paymobile.html
  91. 60 0
      src/main/resources/templates/pay/caimei-payunder.html
  92. 21 3
      src/main/resources/templates/pay/caimei-success.html
  93. 3 1
      src/main/resources/templates/pay/caimei-wechatpay.html
  94. 37 31
      src/main/resources/templates/product/detail.html
  95. 2 0
      src/main/resources/templates/product/instruelist.html
  96. 5 1
      src/main/resources/templates/product/instrument.html
  97. 1 0
      src/main/resources/templates/product/list.html
  98. 1 0
      src/main/resources/templates/product/product-coupon.html
  99. 1 0
      src/main/resources/templates/product/product-supporting.html
  100. 3 2
      src/main/resources/templates/product/promotions.html

+ 5 - 0
backup.sql

@@ -482,6 +482,11 @@ ALTER TABLE `info`
     ADD COLUMN `onlineStatus` INT NULL DEFAULT 2 COMMENT '文章上线状态:1待上线,2已上线,3已下线' AFTER `auditStatus`;
 
 -- =================================== 2022年3月 百科/文章小版本 end =========================================
+-- =================================== 2022年4月 支付版本 end =========================================
+ALTER TABLE `cm_promotions_order`
+    ADD COLUMN `discount` CHAR(1) NULL DEFAULT 0 COMMENT '是否支持叠加优惠,1支持,2不支持' AFTER `reducedPrice`;
+
+-- =================================== 2022年4月 支付版本 end =========================================
 
 -- =================================== 2022年3月 呵呵商城版本 start =======================================
 ALTER TABLE `bigtype`

+ 38 - 0
src/main/java/com/caimei/www/controller/authorized/PayController.java

@@ -12,9 +12,18 @@ public class PayController extends BaseController {
     /** 微信小程序网银支付链接页 */
     private static final String CAIMAI_PAYCASH= "pay/caimei-paycash";
 
+    /** 合利宝线上支付收银台页 */
+    private static final String CAIMAI_HLBPAY= "pay/caimei-hlbpay";
+
+    /** 微信小程序网银支付链接页 */
+    private static final String CAIMAI_PAYLIST= "pay/caimei-paylist";
+
     /** 微信小程序网银支付链接页 */
     private static final String CAIMAI_MOBILE = "pay/caimei-paymobile";
 
+    /** 微信小程序网银支付链接页 */
+    private static final String CAIMAI_UNDER = "pay/caimei-payunder";
+
     /** 微信小程序网银支付链接页 */
     private static final String CAIMAI_STARSPAY = "pay/caimei-starspay";
 
@@ -27,6 +36,9 @@ public class PayController extends BaseController {
     /** 维沙网银支付链接页 */
     private static final String CAIMAI_WISAPAY = "pay/caimei-wisapay";
 
+    /** 维沙网银支付链接页 */
+    private static final String CAIMAI_CODE = "pay/caimei-code";
+
     /**
      * 微信小程序网银支付链接页
      */
@@ -35,18 +47,44 @@ public class PayController extends BaseController {
         return CAIMAI_PAY;
     }
 
+    /**
+     * 微信小程序网银支付链接页
+     */
+    @GetMapping("/wxcode.html")
+    public String wxcode() {
+        return CAIMAI_CODE;
+    }
+
     /**
      * 订单支付初始化页面
      */
     @GetMapping("/pay/caimei-paycash.html")
     public String caimeiPayCash() {return CAIMAI_PAYCASH; }
 
+    /**
+     * 订单支付初始化页面
+     */
+    @GetMapping("/pay/caimei-hlbpay.html")
+    public String caimeiHlbpay() {return CAIMAI_HLBPAY; }
+
+    /**
+     * 移动支付扫码页
+     */
+    @GetMapping("/pay/caimei-paylist.html")
+    public String caimeiPayList() {return CAIMAI_PAYLIST; }
+
     /**
      * 移动支付扫码页
      */
     @GetMapping("/pay/caimei-paymobile.html")
     public String caimeiPayMobile() {return CAIMAI_MOBILE; }
 
+    /**
+     * 线下转账页面
+     */
+    @GetMapping("/pay/caimei-payunder.html")
+    public String caimeiPayUnder() {return CAIMAI_UNDER; }
+
     /**
      * 星范小程序网银支付页
      */

+ 16 - 0
src/main/java/com/caimei/www/controller/unlimited/HelpPageController.java

@@ -23,6 +23,8 @@ import org.springframework.web.bind.annotation.ResponseBody;
 public class HelpPageController extends BaseController {
 
 	private static final String HELP_PAGE_PATH = "help/help";
+	private static final String HELP_PAGE_NEWS = "help/news";
+	private static final String HELP_PAGE_NEWSDETAILS = "help/details";
 
     private HelpService helpService;
     @Autowired
@@ -56,4 +58,18 @@ public class HelpPageController extends BaseController {
     public JsonModel suggestion(Suggestion suggestion) {
         return helpService.suggestionSave(suggestion);
     }
+
+    /**
+     * 公告页
+     */
+    @GetMapping("/news.html")
+    public String news() {
+        return HELP_PAGE_NEWS;
+    }
+    /**
+     * 公告详情页
+     */
+    @GetMapping("/news/details.html")
+    public String details() { return HELP_PAGE_NEWSDETAILS; }
+
 }

+ 2 - 0
src/main/java/com/caimei/www/pojo/order/CartItem.java

@@ -40,5 +40,7 @@ public class CartItem implements Serializable {
 	/** 阶梯价 */
 	List<LadderPrice> ladderPrices;
 
+	private Integer productType;
+
     private static final long serialVersionUID = 1L;
 }

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

@@ -65,4 +65,6 @@ public class ProductDetail extends ProductList {
 	 * 培训费用(售价未包含)
 	 */
 	private BigDecimal trainingFee;
+
+	private Integer productType;
 }

+ 2 - 0
src/main/java/com/caimei/www/pojo/page/ProductList.java

@@ -28,5 +28,7 @@ public class ProductList implements Serializable {
 	/** 商品可见度: 3:所有人可见,2:普通机构可见,1:会员机构可见 */
 	private Integer visibility;
 
+	private Integer productType;
+
     private static final long serialVersionUID = 1L;
 }

+ 5 - 1
src/main/resources/mapper/ProductMapper.xml

@@ -37,7 +37,7 @@
 			s.name as smallTypeText,
 			b.bigTypeID as bigTypeId,
 			b.name as bigTypeText,
-
+			p.productType,
 			p.shopID as shopId,
 			sh.name as shopTitle,
 			sh.businessScope as businessScope,
@@ -66,7 +66,9 @@
         select
 			p.productID as id,
 			p.`name` as `name`,
+			p.productType,
 			p.mainImage as image
+
         from product as p
         left join cm_product_recommend as pr on pr.recommendProductID = p.productID
         where
@@ -77,6 +79,7 @@
         select
 			p.productID as id,
 			p.`name` as `name`,
+			p.productType,
 			p.mainImage as image
         from product as p
         where
@@ -109,6 +112,7 @@
 			p.priceFlag,
 			p.ladderPriceFlag as ladderFlag,
 			p.validFlag as validFlag,
+			p.productType,
 			p.stock as stock
 		from product p
 		where p.productID = #{productId}

+ 1 - 0
src/main/resources/static/MP_verify_77ef8FTVty438PCG.txt

@@ -0,0 +1 @@
+77ef8FTVty438PCG

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

@@ -12,7 +12,7 @@
 .section_page .swiper-wrapper-floor{width:100%;height:268px}
 .section_page .section_page_main.type_08{height:268px}
 .section_page .section_page_main.type_03{height:704px}
-.section_page  .page_main_item{width:164px;height:268px;float:left;margin-right:16px;margin-bottom:16px;background-color:#FFFFFF;transition:all 0.4s;display:block}
+.section_page  .page_main_item{width:164px;height:268px;float:left;margin-right:16px;margin-bottom:16px;background-color:#FFFFFF;transition:all 0.4s;display:block;position: relative;}
 .section_page  .page_main_item.default{cursor:default}
 .section_page  .page_main_item.ad_04{border-radius:2px}
 .section_page  .page_main_item.ad_04:hover{transform:translateY(-5px);box-shadow:0 8px 8px rgba(102,102,102,0.05),0 10px 10px rgba(102,102,102,0.05),0 12px 12px rgba(102,102,102,0.05)}
@@ -25,6 +25,7 @@
 .section_page_main.section_2 .page_main_item.ad_02,.section_page_main.section_4 .page_main_item.ad_03{width:344px}
 .section_page .page_main_item_adv{width:100%;height:100%;display:block}
 .section_page .page_main_image{width:164px;height:164px;display:block;float:left;border-radius:2px 2px 0 0}
+.section_page .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;}
 .section_page .page_main_text{width:100%;height:42px;float:left;box-sizing:border-box;margin-top:10px;padding:0 4px;white-space:normal;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:21px}
 .section_page .page_main_tag{width:100%;height:24px;float:left;margin-top:16px;padding:0 8px}
 .section_page .page_main_tag p{display:block;padding:0 4px;height:24px;box-sizing:border-box;border:1px solid #e3ebf7;border-radius:2px;float:left;font-size:12px;line-height:22px;text-align:center;color:#9aa5b5}
@@ -86,12 +87,13 @@
  * 移动端
  */
 @media screen and (max-width:768px) {
-.section_page{width:100%;height:auto}
+.section_page{width:100%;height:auto;position: relative;}
 .section_page .section_page_title{padding:2.4vw 0 2.4vw 3.2vw;position:relative}
 .section_page .section_page_title h1{font-weight:bold;color:#4a4f58;font-size:4.8vw;line-height:9.7vw}
 .section_page .section_page_title p{font-weight:normal;color:#93979f;font-size:3.4vw;line-height:4.3vw}
 .section_page .page_main_item{width:45.6vw !important;height:68vw;overflow:hidden;margin:0 1.3vw 2.6vw 1.3vw;background:#fff;text-align:left}
 .section_page .page_main_image{width:45.6vw;height:45.6vw}
+.section_page .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
 .section_page .page_main_text{padding:0 2vw;height:9.3vw;line-height:5vw;font-size:3.4vw;vertical-align:middle;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-inline-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:1vw}
 .section_page .page_main_item.ad_02 img,.section_page .page_main_item.ad_03 img,.section_page .page_main_item.ad_01 img{height:100%;width:100%}
 .section_page .page_main_price{width:100%;box-sizing:border-box;padding:0 1.5vw}

+ 33 - 12
src/main/resources/static/css/flea-market/form.css

@@ -1,6 +1,8 @@
 body{background: #fff}
 .errcolor{border: 1px solid red}
  @media screen and (min-width:768px) {
+     .footTop{float: left;}
+     .footMain{float: left;}
      #secondHandrelease {width: 1184px;margin: auto;}
      .bannerimg{width: 100%;height: auto;}
      .bannerimg img{width: 100%;height: 100%;}
@@ -15,13 +17,17 @@ body{background: #fff}
      .icon.select:before {background-position: -207px -254px;width: 22px;height: 19px;position: absolute;bottom: 0;left: 133px}
      .icon.buy:before {left: 159px;}
      .secondradio {margin-bottom: 15px;}
+     .secondradio div.typelist{width: 110px;height: 36px;line-height: 16px;box-sizing: border-box;padding: 10px 0; background-color: #ffffff;border: none;display: inline-block;cursor: pointer;position: relative;color: #627386;}
+     .secondradio .typelist .radio{width: 16px;height: 16px;background: url("/img/cart/icon_weigouxuan@2x.png") no-repeat;background-size: cover;display: block;float: left;}
+     .secondradio .typelist.checked .radio{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
+     .secondradio .typelist .rtext{display: block;float: left;margin-left: 8px;}
      .linqi_text {width: 425px;height: 45px;background-color: #1890f9;box-shadow: 0px 3px 6px 0px rgba(24, 144, 249, 0.17);text-align: center;line-height: 45px;color: #ffffff;margin: auto}
      .jiaobiao {width: 0;height: 0;border-left: 10px solid transparent;border-right: 10px solid transparent;top: 74px;right: 50%;border-bottom: 10px solid #1890f9;position: absolute}
      #shoplogo {height: 36px;border-radius: 2px;padding-left: 10px;width: 508px;border: solid 1px #b8bfca;color: #9aa5b5}
      #shoplogoTwo {height: 36px;margin-top: 10px;}
      .login-form input[type="text"] {width: 496px;height: 36px;background-color: #ffffff;border-radius: 2px;border: solid 1px #b8bfca;padding-left: 10px;color: #22272e;}
+     .login-form input.code{width: 300px;}
      input[type="text"]::placeholder, textarea::placeholder {color: #9aa5b5;;}
-     .shrink-spacing {margin: 20px 0;}
      .red-color {color: #f94b4b;}
      .address-input {width: 155px;height: 36px;background-color: #ffffff;border-radius: 2px;border: solid 1px #b8bfca;padding-left: 10px;color: #9aa5b5;}
      .address-input.city {margin: 0 18px;}
@@ -46,10 +52,15 @@ body{background: #fff}
      .wen-tips {width: 462px;height: 46px;line-height: 46px;text-align: center;color: #FFF;font-size: 14px;background-color: #1890f9;box-shadow: 0px 3px 6px 0px rgba(24, 144, 249, 0.17);position: absolute;bottom: 10px;left: -32px;border-radius: 3px;display: none;}
      .form-upload-tips:hover .wen-tips {display: block;}
      #word-limit {position: absolute;right: 0;bottom: 10px;font-size: 12px;color: #9aa5b5}
-     .unlogin-item {margin-top: 20px;width: 100%;float: left;}
+     .unlogin-item {margin-bottom: 20px;width: 100%;float: left;}
+     .unlogin-item.none {margin-bottom: 0;}
+     .getCode{box-sizing: border-box;width: 168px;height: 36px;margin-right: 15px;float: right; line-height: 34px;text-align: center;background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;color: #e15616;font-size: 14px;}
+     .getCode.disabled{background-color: #D6D6D6;border-color: #D6D6D6;color: #FFFFFF;}
      .textarea-wrapper {letter-spacing: 1.5px;line-height: 24px;color: #627386;position: relative;width: 496px;}
-     .BtnAll {margin-top: 30px;width: 520px;overflow: hidden}
-     .BtnAll button {width: 232px;height: 50px;border-radius: 2px;line-height: 50px;text-align: center;font-size: 18px;cursor: pointer;}
+     .release-button {width: 100%;height: auto;float: left;margin: 50px 0;}
+     .release-button .text{width: 100%;text-align: center;margin: 15px 10px;}
+     .release-button .buttton-main{width:300px;margin: 0 auto;}
+     .release-button button {width: 300px;height: 50px;border-radius: 2px;line-height: 50px;text-align: center;font-size: 18px;cursor: pointer;}
      .Read {border: solid 1px #e15616;background-color: #ffe6dc;color: #e15616;float: left;position: relative;}
      #btn-submit {background-color: #e15616;color: #fff;float: right;}
      input[type=checkbox] {margin-right: 10px;}
@@ -93,11 +104,11 @@ body{background: #fff}
  @media screen and (max-width:768px){
   #secondHandrelease {padding: 2.7vw;}
     .bannerimg  img{width: 100%;height: 100% ;}
-     .mt-top {line-height: 17.3vw;color: #22272e;text-align: left;font-size: 5vw;font-weight: bold;height: 17.3vw}
-     .newsTitle {line-height: 6.4vw;text-align: left;color: #e15616;padding: 2.7vw;background-color: rgba(225, 86, 22, .1)}
+     .mt-top {line-height: 11vw;color: #22272e;text-align: left;font-size: 5vw;font-weight: bold;height: 11vw}
+     .newsTitle {line-height: 6vw;text-align: left;color: #e15616;padding: 2.7vw;background-color: rgba(225, 86, 22, .1)}
      .mt-bottom {margin: 5.3vw auto;}
      #mt-form {position: relative;overflow: hidden;width: 93.4vw;margin: auto}
-     .unlogin-label {width: 100%;margin-bottom: 2.7vw;color: #627386;padding-left: 2.7vw}
+     .unlogin-label {width: 100%;margin-bottom: 2.7vw;color: #627386;}
      .secondradio div {width: 27vw;height: 10.7vw;line-height: 10.7vw;background-color: #ffffff;border: solid .27vw #b8bfca;text-align: center;display: inline-block;cursor: pointer;position: relative;color: #627386}
      .secondradio div:nth-child(2) {margin: 0 5.3vw;}
      .secondradio div.active {color: #e15616;border: solid .27vw #e15616;}
@@ -105,22 +116,30 @@ body{background: #fff}
      .mIcon.select:before {background-position: -75.5vw -8.8vw;width: 5.3vw;height: 4.8vw;position: absolute;bottom: 0;right: 0;transition: none;}
      .mIcon.buy:before {left: 34vw;}
      .secondradio {margin-bottom:4vw;}
+     .secondradio div.typelist{width: 27vw;height: 36px;line-height: 16px;box-sizing: border-box;padding: 1.5vw 0; background-color: #ffffff;border: none;display: inline-block;cursor: pointer;position: relative;color: #627386;}
+     .secondradio .typelist .radio{width: 16px;height: 16px;background: url("/img/cart/icon_weigouxuan@2x.png") no-repeat;background-size: cover;display: block;float: left;}
+     .secondradio .typelist.checked .radio{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
+     .secondradio .typelist .rtext{display: block;float: left;margin-left: 8px;}
      .linqi_text {width: 100%;height:9.6vw;background-color: #1890f9;box-shadow: 0px .8vw 1.3vw 0px rgba(24, 144, 249, 0.17);text-align: center;line-height: 9.6vw;color: #ffffff;margin: auto;font-size: 3.2vw;}
      .jiaobiao {width: 0;height: 0;border-left: 2.7vw solid transparent;border-right: 2.7vw solid transparent;top: 20.8vw;right: 50%;border-bottom: 2.7vw solid #1890f9;position: absolute}
      #shoplogoTwo {height:9.6vw;margin-top: 2.7vw;}
-     .login-form input[type="text"] {width: 100% !important;height: 9.6vw;background-color: #ffffff;border-radius: .53vw;border: solid .27vw #b8bfca;padding-left: 2.7vw;color: #22272e;box-sizing: border-box}
+     .login-form input[type="text"] {width: 100%;height: 9.6vw;background-color: #ffffff;border-radius: .53vw;border: solid .27vw #b8bfca;padding-left: 2.7vw;color: #22272e;box-sizing: border-box}
      input[type="text"]::placeholder, textarea::placeholder {color: #9aa5b5;;}
+     .login-form input.code{width: 60vw;}
+     .getCode{box-sizing: border-box;width: 30vw;height: 9.6vw;float: right; line-height: 9.6vw;text-align: center;background-color: #ffe6dc;border-radius:.53vw;border: solid 1px #e15616;color: #e15616;font-size: 3.2vw;}
+     .getCode.disabled{background-color: #D6D6D6;border-color: #D6D6D6;color: #FFFFFF;}
      .shrink-spacing {margin: 5.3vw 0;position: relative;}
      .red-color {color: #f94b4b;}
      .address-input {width: 28.5vw;height: 10.7vw;background-color: #ffffff;border-radius: .53vw;border: solid .27vw #b8bfca;padding-left: 6.7vw;color: #9aa5b5}
      .address-item i{position: relative;}
      .address-input.city {margin: 0 2.6vw;}
-     .border-grey {width: 100%;height: 56.3vw;background-color: #ffffff;border-radius: .53vw;border: solid .27vw #b8bfca;margin-top: 5.3vw;resize: none;padding: 2.7vw;box-sizing: border-box}
+     .border-grey {width: 100%;height: 40vw;background-color: #ffffff;border-radius: .53vw;border: solid .27vw #b8bfca;margin-top: 5.3vw;resize: none;padding: 2.7vw;box-sizing: border-box}
+     .border-grey.address-details{height: 25vw;}
      #description {margin-top: 0;}
      .upload-file {position: relative;float: left;margin: 2.7vw 2.7vw 2.7vw 0px;cursor: pointer;width: 21.3vw;height: 21.3vw;border-radius: .53vw;border: solid .27vw #b8bfca}
      .login-form input.upload-file-name{ width: 100% !important; padding: 0 2.7vw;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}
      .input-file {width: 21.3vw;height: 21.3vw;opacity: 0;cursor: pointer;position: absolute;}
-     .input-file-btn {width: 33.6vw;height: 9.6vw;box-sizing: border-box; cursor: pointer;position: absolute;	background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;text-align: center;line-height: 9.6vw;font-size: 14px;color: #e15616;right: 0;top: 7.8vw;}
+     .input-file-btn {width: 33.6vw;height: 9vw;box-sizing: border-box; cursor: pointer;position: absolute;	background-color: #ffe6dc;border-radius: 2px;border: solid 1px #e15616;text-align: center;line-height: 9vw;font-size: 14px;color: #e15616;right: 0;top: 7.5vw;}
      .input-file-btn input{width: 33.6vw;height: 9.6vw;opacity: 0;cursor: pointer;position: absolute;top: 0;left: 0;z-index: 999;}
      .upload-img {width: 100%;height: 100%;display: block;border-radius: .53vw;}
      .add-text {font-size: 3.2vw;color: #333330;opacity: 0.5;position: absolute;top: 60%;right:3.3vw}
@@ -136,8 +155,10 @@ body{background: #fff}
      .form-upload-tips:hover .wen-tips {display: block;}
      #word-limit {position: absolute;right: 2.7vw;bottom: 2.7vw;font-size: 3.2vw;color: #9aa5b5}
      .textarea-wrapper {letter-spacing: .4vw;line-height: 6.4vw;color: #627386;position: relative;width: 100%;font-size: 3.2vw}
-     .BtnAll {margin-top: 8vw;width: 100%;overflow: hidden}
-     .BtnAll button {width: 100%;height: 15vw;border-radius: .53vw;line-height: 15vw;text-align: center;font-size: 4.5vw;cursor: pointer;margin-bottom: 2.7vw;box-sizing: border-box;}
+     .release-button .text{width: 100%;text-align: center;margin: 15px 10px;}
+     .release-button .buttton-main{width:100vw;margin: 0 auto;}
+     .release-button {width: 100%;height: auto;float: left;margin: 8vw 0;}
+     .release-button button {width: 100%;height: 12vw;border-radius: .53vw;line-height: 12vw;text-align: center;font-size: 4.5vw;cursor: pointer;box-sizing: border-box;}
      .Read {border: solid .27vw #e15616;background-color: #ffe6dc;color: #e15616;}
      #btn-submit {background-color: #e15616;color: #fff;}
      input[type=checkbox] {margin: 1.27vw 7px 0px -3.4vw;width: 3.5vw;height: 3.5vw;line-height: 3.5vw}

+ 23 - 0
src/main/resources/static/css/help/details.css

@@ -0,0 +1,23 @@
+@charset "utf-8";
+li{list-style:none}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    .pageWrap{width: 968px;}
+    .navLayout{min-height: 500px;}
+    .news-container{width: 100%;min-height: 600px;background-color: #FFFFFF;margin-top: 24px;box-sizing: border-box;padding:0 32px 32px 32px;border-radius: 8px;}
+    .news-title{width: 100%;line-height: 80px;font-size: 20px;font-weight: bold;text-align: center;color: #333333;}
+    .news-container-html{width: 100%;min-height: 600px;}
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .news-container{width: 100%;min-height: 60vw;background-color: #FFFFFF;box-sizing: border-box;padding:3.6vw 3.6vw 15vw 3.6vw;border-radius: 1.6vw;}
+    .news-title{width: 100%;line-height: 5vw;font-size: 3.4vw;font-weight: bold;text-align: center;color: #333333;margin-bottom: 5vw;}
+    .news-container-html{width: 100%;min-height: 60vw;}
+    footer{display: none;}
+}
+

+ 49 - 0
src/main/resources/static/css/help/news.css

@@ -0,0 +1,49 @@
+@charset "utf-8";
+li{list-style:none}
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    .news-title{width: 1184px;margin: 0 auto;box-sizing: border-box;height: 50px;line-height: 50px;}
+    .news-title .news-name{float: left;font-size: 16px;color: #4a4f58;font-weight: bold;}
+    .pageWrap{width: 968px;}
+    .navLayout{min-height: 500px;}
+    .news-container{width: 100%;min-height: 600px;background-color: #FFFFFF;border-radius: 8px;}
+    .news-content-list{width: 100%;height: auto;box-sizing: border-box;padding:16px;border-radius: 8px;}
+    .news-list-cell{width: 100%;height: 48px;float: left;box-sizing: border-box;padding: 0 16px;display: block;}
+    .news-list-cell:nth-child(odd){background-color: #FFFBF9;}
+    .news-list-cell .news-list-le{float: left;box-sizing: border-box;line-height: 18px;font-size: 14px;color: #4A4F58;padding: 15px 0;}
+    .news-list-cell .news-list-le .new-icon{width: 18px;height: 18px;box-sizing: border-box;display: block;background: url("/img/base/icon-news@2x.png");background-size: cover;float: left;}
+    .news-list-cell .news-list-le p{float: left;margin-left: 8px;}
+    .news-list-cell .news-list-ri{float: right;box-sizing: border-box;font-size: 14px;color: #9AA5B5;cursor: pointer;text-align: right;line-height: 48px;}
+    .news-list-cell:hover .news-list-le{color: #E15621;}
+    .news-list-cell:hover .news-list-le .new-icon{background: url("/img/base/icon-news-active@2x.png");background-size: cover;}
+    .news-list-cell:hover .news-list-ri{color: #E15621;}
+    .empty{width: 100%;float: left;}
+    .empty img{width: 180px;height: 180px;}
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .news-title{width: 100%;box-sizing: border-box;height: 10vw;line-height: 10vw;padding: 0 3.6vw;}
+    .news-title .news-name{float: left;font-size: 3.4vw;color: #4a4f58;font-weight: bold;}
+    .pageWrap{width: 100%;}
+    .navLayout{min-height: 60vw;}
+    .news-container{width: 100%;min-height: 60vw;background-color: #FFFFFF;border-radius: 1.6vw;}
+    .news-content-list{width: 100%;height: auto;box-sizing: border-box;padding:3.6vw;}
+    .news-list-cell{width: 100%;height: 12vw;float: left;box-sizing: border-box;padding: 0 3.2vw;display: block;}
+    .news-list-cell:nth-child(odd){background-color: #FFFBF9;}
+    .news-list-cell .news-list-le{ float: left;box-sizing: border-box;line-height: 18px;font-size: 14px;color: #4A4F58;padding: 15px 0;}
+    .news-list-cell .news-list-le .new-icon{width: 18px;height: 18px;box-sizing: border-box;display: block;background: url("/img/base/icon-news@2x.png");background-size: cover;float: left;}
+    .news-list-cell .news-list-le p{width: 50vw;float: left;margin-left: 8px;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 1;line-clamp: 1;-webkit-box-orient: vertical;}
+    .news-list-cell .news-list-ri{float: right;box-sizing: border-box;font-size: 14px;color: #9AA5B5;cursor: pointer;text-align: right;line-height: 48px;}
+    .news-list-cell:hover .news-list-le{color: #E15621;}
+    .news-list-cell:hover .news-list-le .new-icon{background: url("/img/base/icon-news-active@2x.png");background-size: cover;}
+    .news-list-cell:hover .news-list-ri{color: #E15621;}
+    .empty{width: 100%;float: left;}
+    .empty img{width: 180px;height: 180px;}
+
+}
+

+ 10 - 0
src/main/resources/static/css/index/index_new.h5.css

@@ -13,6 +13,16 @@
 #swiper-container .swiper-pagination .swiper-pagination-bullet{display:block;width:2vw;border-width:1vw 1px;border-color:transparent;cursor:pointer;background:none;font-size:0;opacity:.2}
 #swiper-container .swiper-pagination .swiper-pagination-bullet:before{content:"";display:block;width:100%;height:.6vw;background:#FFF;border-radius:.3vw}
 #swiper-container .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active{width:3.8vw;opacity:1}
+ /*公告*/
+ #new-container{height: 12vw;background-color: #F7F7F7;padding:4vw 3.2vw 0 3.2vw;box-sizing: border-box;}
+ #new-container .inner{width: 100%;height: 100%;background: url("/img/base/icon-newbgh5@2x.png");background-size: cover;box-sizing: border-box;padding:0 3vw;border-radius: 1vw;}
+ #new-container .new-list{float: left;width: 62vw;}
+ #new-container .new-label{float: left;line-height: 8vw;font-size: 16px;color: #E15616;font-weight: bold;}
+ #new-container .new-list .new-li{float: left;line-height:  8vw;font-size: 3.2vw;color: #4A4F58;box-sizing: border-box;display: block;}
+ #new-container .new-list .new-li .new-icon{width: 3vw;height: 3vw;margin-top: 2.8vw;box-sizing: border-box;display: block;background: url("/img/base/icon-news@2x.png");background-size: cover;float: left;}
+ #new-container .new-list .new-li p{width: 50vw;float: left;margin-left:1vw;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 1;overflow: hidden;}
+ #new-container .new-list .new-li:hover{color: #E15616;text-decoration: line-through;}
+ #new-container .new-more{float: right;line-height: 8vw;font-size: 3.2vw;;color: #93979F;}
 /* 楼层 */
 .section_right .item_banner .statu .icon-live{display:block;width:3vw;height:3vw;float:left;margin:1.6vw 0 0 1.6vw;background:url("/img/live/icon-live.h5.gif");background-size:cover}
 .section_right .item_banner .statu .mIcon.icon-end:before{width:5.3vw;height:4vw;background-position:-63.8vw -69vw}

+ 9 - 0
src/main/resources/static/css/index/index_new.pc.css

@@ -20,6 +20,15 @@ li{list-style:none;}
 #swiper-container .swiper-pagination span{display:inline-block;border:5px solid transparent;cursor:pointer}
 #swiper-container .swiper-pagination span:before{content:"";display:inline-block;width:14px;height:4px;background:rgba(255,255,255,.4);border-radius:2px}
 #swiper-container .swiper-pagination span.on:before{width:28px;background:#fff}
+/*公告*/
+#new-container{height: 48px;background: url("/img/base/icon-newbg@2x.png");background-size: cover;}
+#new-container .new-list{float: left;}
+#new-container .new-label{float: left;margin-right: 10px;line-height: 48px;font-size: 16px;color: #E15616;font-weight: bold;}
+#new-container .new-list .new-li{float: left;line-height: 28px;font-size: 14px;color: #4A4F58;margin-right: 50px;box-sizing: border-box;padding: 10px 0;display: block;}
+#new-container .new-list .new-li .new-icon{width: 18px;height: 18px;margin-top: 5px;box-sizing: border-box;display: block;background: url("/img/base/icon-news@2x.png");background-size: cover;float: left;}
+#new-container .new-list .new-li p{float: left;margin-left: 8px;}
+#new-container .new-list .new-li:hover{color: #E15616;text-decoration: line-through;}
+#new-container .new-more{float: right;line-height: 48px;font-size: 14px;color: #93979F;}
 /* 楼层 */
 .section_container{width:100%;height:auto;float:left}
 .section_container .inner{width:1184px;margin:0 auto}

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

@@ -100,17 +100,19 @@ input::-webkit-outer-spin-button {
     .pay-alert-content .pay-alert .content p{text-align: left;font-size: 14px;color: #666666;font-weight: normal;}
     .pay-alert-content .pay-alert .button{width: 100%;height: 32px;float: left;padding: 0 14px;box-sizing: border-box;}
     .pay-alert-content .pay-alert .button a{width: 90px;height: 32px;display: block;background: #E15616;border-radius: 2px;font-size: 14px;text-align: center;line-height: 32px;color: #FFFFFF;float: right;}
+    /*大额银联转账弹窗*/
+    .pay-alert-content .pay-big-alert{width: 460px;height: 386px;background: #FFFFFF;border-radius: 2px;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;z-index: 9998;}
+    .pay-alert-content .pay-big-alert .title{width: 100%;height: 48px;box-sizing: border-box;font-size: 14px;line-height: 48px;text-align: left;color: #333333;float: left;position: relative;border-bottom: 1px solid #EFEFEF;background-color: #FFFFFF;padding: 0 14px;}
+    .pay-alert-content .pay-big-alert .title .icon-close{width: 16px;height: 16px;display: block;position: absolute;right:12px;top: 12px;background: url("/img/base/icon.png")-319px 0 no-repeat;cursor: pointer;}
+    .pay-alert-content .pay-big-alert .content{margin: 20px 0;width: 100%;height: auto;line-height: 24px;float: left;padding: 0 14px;box-sizing: border-box;}
+    .pay-alert-content .pay-big-alert .content p.text{text-align: left;font-size: 12px;color: #E15616;font-weight: normal;line-height: 20px;margin-bottom: 10px;}
+    .pay-alert-content .pay-big-alert .content p{text-align: left;font-size: 14px;color: #4A4F58;font-weight: bold;line-height: 34px;}
+    .pay-alert-content .pay-big-alert .content p span{font-weight: normal;}
+    .pay-alert-content .pay-big-alert .button{width: 100%;height: 32px;float: left;padding: 0 14px;box-sizing: border-box;}
+    .pay-alert-content .pay-big-alert .button a{height: 32px;padding: 0 12px;margin-left: 16px;display: block;background: #E15616;border-radius: 2px;font-size: 14px;text-align: center;line-height: 32px;color: #FFFFFF;float: right;box-sizing: border-box;}
+    .pay-alert-content .pay-big-alert .button a.btn-close{border: 1px solid #B8BFCA;color: #4A4F58;background-color: #FFFFFF;}
+
     .payment-transfer{width: 100%;height: auto;padding: 0 24px;}
-    .payment-transfer .payment-transfer-main{width: 100%;height: auto;}
-    .payment-transfer .payment-transfer-main .label{width: 100%;height: 38px;line-height: 38px;font-size: 13px;color: #333;}
-    .payment-transfer .payment-transfer-main .label .label-title{color: #E15616;padding-left: 20px;position: relative;}
-    .payment-transfer .payment-transfer-main .label .label-title .icon{width: 16px;height: 16px;display: block;position: absolute;top: 2px;left: 0;}
-    .payment-transfer .payment-transfer-main .label .label-title .icon:before{width: 16px;height: 16px;background-position: -340px -415px;}    .payment-transfer .payment-transfer-main .label .label-t{color: #627386;}
-    .payment-transfer .payment-transfer-main .label .text{color: #333;float: left;width: 25%;}
-    .payment-transfer .payment-transfer-main .label .text-p{color: #333;float: left;}
-    .payment-transfer .payment-transfer-main .label .text-p input{border: none;background-color: #FFF;width: 60px;font-size: 14px;color: #333;}
-    .payment-transfer .payment-transfer-main .label .text-p .copy{display: inline-block;width:42px;height:18px;background:linear-gradient(34deg,rgba(255,41,41,1) 0%,rgba(255,109,27,1) 100%);opacity:1;border-radius:3px;line-height: 18px;font-size: 12px;margin-top: 10px;margin-left:10px;color: #FFF;text-align: center;}
-    .payment-transfer .payment-transfer-main .label .label-c{color: #FF2A2A;}
     .pay-button-main{width: 100%;height: 72px;box-sizing: border-box;padding: 11px 0;background-color: #FFFFFF;float: left;border-bottom: 1px solid #EBEBEB;}
     .pay-button-main .pay-button{width: 100%;height: 50px;float: left;}
     .pay-button-main .pay-button a{width: 232px;height: 50px;display: block;background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);border-radius: 2px;font-size: 14px;line-height: 50px;text-align: center;color: #FFF6D9;float: right;}

+ 112 - 0
src/main/resources/static/css/pay/caimei-paylist.css

@@ -0,0 +1,112 @@
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    .pay-container {width: 100%;min-height: 436px;position: relative;margin-bottom: 60px;}
+    .pay-container .container{opacity:0;}
+    .pay-container .container.active{opacity: 1;}
+    .pay-content{width: 1184px;margin: 0 auto;height: 436px;box-sizing: border-box;}
+    .pay-content .pay-title{width: 100%;height: 52px;box-sizing: border-box;padding: 12px 0}
+    .pay-content .pay-title-le{float: left;line-height: 28px;font-size: 16px;color: #333333;font-weight: bold;}
+    .pay-content .pay-title-le span{line-height: 28px;font-size: 14px;color: #E15616;font-weight: normal;}
+    .pay-content .pay-title-btn{float: right;padding: 0 10px;background: #1890F9;height: 28px;line-height: 28px;text-align: center;border-radius: 4px;font-size: 12px;color: #FFFFFF;cursor: pointer;}
+    .pay-list-title{width: 100%;height: 56px;background-color: #FFFFFF;padding: 0 16px;box-sizing: border-box;margin-bottom: 10px;}
+    .pay-list-title .pay-list-view{float: left;line-height: 56px;font-size: 14px;color: #627386;text-align: left;}
+    .pay-list-title .pay-list-view.t1{width: 40%;}
+    .pay-list-title .pay-list-view.t2{width: 30%;}
+    .pay-list-title .pay-list-view.t3{width: 15%;}
+    .pay-list-title .pay-list-view.t4{width: 15%;}
+    .pay-list-cell{width: 100%;height: auto;box-sizing: border-box;padding: 0 16px 20px 16px;background-color: #FFFFFF;margin-bottom: 10px;}
+    .pay-list-cell .list-cell-title{width: 100%;height:60px;box-sizing: border-box;padding:10px 0;border-bottom: 1px solid #E1E1E1;}
+    .pay-list-cell .list-cell-title .list-cell-logo{width: 40px;height: 40px;box-sizing: border-box;border: 1px solid #E1E1E1;border-radius: 2px;float: left;}
+    .pay-list-cell .list-cell-title .list-cell-logo img{width: 39px;height: 39px;display: block;}
+    .pay-list-cell .list-cell-title .list-cell-name {float: left;margin-left: 16px;line-height: 40px;font-size: 16px;color: #333333;}
+    .pay-list-cell .list-cell-content{width: 100%;height: 134px;box-sizing: border-box;padding: 17px 0;}
+    .pay-list-cell .list-cell-pros{float: left;}
+    .pay-list-cell .list-cell-pros.p1{width: 40%;}
+    .pay-list-cell .list-cell-pros.p2{width: 30%;}
+    .pay-list-cell .list-cell-pros.p3{width: 15%;}
+    .pay-list-cell .list-cell-pros.p4{width: 15%;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-image{width: 100px;height: 100px;float: left;margin-right: 16px;box-sizing: border-box;border: 1px solid #E1E1E1;border-radius: 2px;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-image img{width: 100%;height: 100%;display: block;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-name{width: 300px;float: left;height: 100px;box-sizing: border-box;padding:30px 0;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-name p{width: 100%;font-size: 16px;line-height: 20px;color: #22272E;text-align: left;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;}
+    .pay-list-cell .list-cell-pros.p2,.pay-list-cell .list-cell-pros.p3,.pay-list-cell .list-cell-pros.p4{font-size: 16px;line-height: 100px;color: #22272E;text-align: left;}
+    .pay-list-cell .list-cell-button{width: 100%;height: 36px;margin-top:5px}
+    .pay-list-cell .list-cell-button .list-cell-vleft {float: right;}
+    .pay-list-cell .list-cell-button .list-cell-btn{width: 90px;height: 36px;float: right;border-radius: 2px;line-height: 36px;font-size: 14px;text-align: center;background-color: #E15616;color: #FFFFFF;margin-left: 40px;cursor: pointer;}
+    .pay-list-cell .list-cell-button .list-cell-btn:hover{background-color: rgba(225,86,22,0.9);}
+    .pay-list-cell .list-cell-button .list-cell-msg{float: right;margin-left: 40px;line-height: 36px;font-size: 16px;color: #22272E;}
+    .pay-list-cell .list-cell-button .list-cell-msg span{font-weight: bold;}
+    .pay-list-cell .list-cell-button .list-cell-msg span.red{color: #F94B4B;}
+
+    /*  弹窗  */
+    .pay-alert-content{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background: rgba(0,0,0,0.3);z-index: 9999;opacity: 0;}
+    .pay-alert-content.show{opacity: 1;}
+    .pay-alert-content .pay-big-alert{width: 560px;height: 274px;background: #FFFFFF;border-radius: 2px;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;z-index: 9998;}
+    .pay-alert-content .pay-big-alert .title{width: 100%;height: 48px;box-sizing: border-box;font-size: 14px;line-height: 48px;text-align: left;color: #333333;float: left;position: relative;border-bottom: 1px solid #EFEFEF;background-color: #FFFFFF;padding: 0 14px;}
+    .pay-alert-content .pay-big-alert .title .icon-close{width: 16px;height: 16px;display: block;position: absolute;right:12px;top: 12px;background: url("/img/base/icon.png")-319px 0 no-repeat;cursor: pointer;}
+    .pay-alert-content .pay-big-alert .content{width: 100%;height: 225px;line-height: 24px;float: left;padding: 16px;box-sizing: border-box;}
+    .pay-alert-content .pay-big-alert .content-top{width: 100%;height: auto;float: left;}
+    .pay-alert-content .pay-big-alert .content-viw{width:50%;height: 34px;float: left;line-height: 34px;font-weight: bold;font-size: 14px;color: #22272E;text-align: left;}
+    .pay-alert-content .pay-big-alert .content-viw span{font-weight: normal;}
+    .pay-alert-content .pay-big-alert .content-viw span.red{color: #F94B4B;}
+    .pay-alert-content .pay-big-alert .content-viw span.copy{margin-left:20px;display:inline-block;width: 56px;height: 24px;background-image: linear-gradient(214deg, #ff2929 0%, #ff6d1b 100%);border-radius: 2px;line-height: 24px;text-align: center;font-size: 12px;color: #FFF;margin-top: 6px;cursor: pointer;}
+    .pay-alert-content .pay-big-alert .content-bot{width: 100%;height: 64px;float: left;box-sizing: border-box;background-color: #FFFAF8;padding: 10px 16px;margin-top: 20px;}
+    .pay-alert-content .pay-big-alert .content-bot p{line-height: 22px;font-size: 14px;color: #E15616;}
+
+
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    .pay-container {width: 100%;min-height: 40vw;position: relative;margin-bottom: 2vw;}
+    .pay-container .container{opacity:0;}
+    .pay-container .container.active{opacity: 1;}
+    .pay-content{width: 100%;margin: 0 auto;height: auto;box-sizing: border-box;}
+    .pay-content .pay-title{width: 100%;height: auto;box-sizing: border-box;padding:4vw 3.5vw;background-color: #FFFFFF;margin-bottom: 2vw;}
+    .pay-content .pay-title-t{width: 100%;line-height: 6vw;font-size: 3.4vw;color: #333333;font-weight: bold;}
+    .pay-content .pay-title-p{line-height: 4vw;font-size: 3vw;color: #E15616;font-weight: normal;}
+    .pay-content .pay-title-btn{width: 40vw;background: #1890F9;height: 11.2vw;line-height:11.2vw;text-align: center;font-size: 3.4vw;color: #FFFFFF;margin: 0 auto;margin-top: 5vw;}
+    .pay-list-cell{width: 100%;height: auto;box-sizing: border-box;padding: 3.2vw;background-color: #FFFFFF;margin-bottom: 2vw;position: relative;}
+    .pay-list-cell .list-cell-title{width: 100%;height:12.8vw;box-sizing: border-box;padding:2.4vw 0;border-bottom: 1px solid #E1E1E1;}
+    .pay-list-cell .list-cell-title .list-cell-logo{width: 6.4vw;height: 6.4vw;box-sizing: border-box;border: 1px solid #E1E1E1;border-radius: 2px;float: left;}
+    .pay-list-cell .list-cell-title .list-cell-logo img{width: 100%;height: 100%;display: block;}
+    .pay-list-cell .list-cell-title .list-cell-name {float: left;margin-left:3vw;line-height: 6.4vw;font-size: 3.4vw;color: #333333;}
+    .pay-list-cell .list-cell-content{width: 100%;height: auto;box-sizing: border-box;padding: 2.4vw 0;}
+    .pay-list-cell .list-cell-pros{float: left;}
+    .pay-list-cell .list-cell-pros.p1{width: 100%;}
+    .pay-list-cell .list-cell-pros.p2,.pay-list-cell .list-cell-pros.p3,.pay-list-cell .list-cell-pros.p4{width: 33.33%;margin-top: 4vw;font-size: 3.4VW;line-height: 4vw;color: #22272E;text-align: left;}
+    .pay-list-cell .list-cell-pros.p2 span,.pay-list-cell .list-cell-pros.p3 span,.pay-list-cell .list-cell-pros.p4 span{font-size: 3vw;color: #627386;margin-bottom: 1vw;}
+    .pay-list-cell .list-cell-pros.p2 p,.pay-list-cell .list-cell-pros.p3 p,.pay-list-cell .list-cell-pros.p4 p{margin-top: 2vw;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-image{width: 15vw;height: 15vw;float: left;margin-right: 2.6vw;box-sizing: border-box;border: 1px solid #E1E1E1;border-radius: 2px;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-image img{width: 100%;height: 100%;display: block;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-name{width: 75vw;float: left;height: 15vw;box-sizing: border-box;padding:3vw 0;}
+    .pay-list-cell .list-cell-pros.p1 .cell-pros-name p{width: 100%;font-size: 3.4vw;line-height: 4vw;color: #22272E;text-align: left;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;}
+    .pay-list-cell .list-cell-button{width: 100%;height: 9.6vw;}
+    .pay-list-cell .list-cell-button .list-cell-vleft {float: right;}
+    .pay-list-cell .list-cell-button .list-cell-vleft.btn{position: absolute;bottom: 3.4vw;right: 3.4vw;}
+    .pay-list-cell .list-cell-button .list-cell-btn{width: 22.4vw;height: 9.6vw;float: right;border-radius: 2px;line-height: 9.6vw;font-size: 3.4vw;text-align: center;background-color: #E15616;color: #FFFFFF;margin-left: 40px;cursor: pointer;}
+    .pay-list-cell .list-cell-button .list-cell-btn:hover{background-color: rgba(225,86,22,0.9);}
+    .pay-list-cell .list-cell-button .list-cell-msg{float: left;margin-left: 8vw;line-height: 9.6vw;font-size: 3.4vw;color: #22272E;}
+    .pay-list-cell .list-cell-button .list-cell-msg span{font-weight: bold;}
+    .pay-list-cell .list-cell-button .list-cell-msg span.red{color: #F94B4B;}
+
+    /*  弹窗  */
+    .pay-alert-content{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background: rgba(0,0,0,0.3);z-index: 9999;opacity: 0;}
+    .pay-alert-content.show{opacity: 1;}
+    .pay-alert-content .pay-big-alert{width: 74.8vw;height: 83.6vw;background: #FFFFFF;border-radius: 2px;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;z-index: 9998;}
+    .pay-alert-content .pay-big-alert .title{width: 100%;height: 11vw;box-sizing: border-box;font-size: 3.6vw;line-height: 11vw;text-align: left;color: #333333;float: left;position: relative;border-bottom: 1px solid #EFEFEF;background-color: #FFFFFF;padding: 0 3.4vw;}
+    .pay-alert-content .pay-big-alert .title .icon-close{width: 16px;height: 16px;display: block;position: absolute;right:12px;top: 12px;background: url("/img/base/icon.png")-319px 0 no-repeat;cursor: pointer;}
+    .pay-alert-content .pay-big-alert .content{width: 100%;height: auto;line-height: 8vw;float: left;padding: 4vw;box-sizing: border-box;}
+    .pay-alert-content .pay-big-alert .content-top{width: 100%;height: auto;float: left;}
+    .pay-alert-content .pay-big-alert .content-viw{width:100%;height: 8vw;float: left;line-height: 8vw;font-weight: bold;font-size: 3.4vw;color: #22272E;text-align: left;}
+    .pay-alert-content .pay-big-alert .content-viw span{font-weight: normal;}
+    .pay-alert-content .pay-big-alert .content-viw span.red{color: #F94B4B;}
+    .pay-alert-content .pay-big-alert .content-viw span.copy{margin-left:4vw;display:inline-block;width: 12.4vw;height: 5.2vw;background-image: linear-gradient(214deg, #ff2929 0%, #ff6d1b 100%);border-radius: 2px;line-height: 5.2vw;text-align: center;font-size: 3vw;color: #FFF;margin-top: 6px;cursor: pointer;}
+    .pay-alert-content .pay-big-alert .content-bot{width: 100%;height: 20vw;float: left;box-sizing: border-box;background-color: #FFFAF8;padding: 2.8vw;margin-top: 4vw;}
+    .pay-alert-content .pay-big-alert .content-bot p{line-height: 5vw;font-size: 3vw;color: #E15616;}
+
+}

+ 3 - 3
src/main/resources/static/css/pay/caimei-paymobile.css

@@ -15,10 +15,10 @@
     .pay-content.weixin{border: 2px solid #7AD237;}
     .pay-content.ali{border: 2px solid #3D8FFB;}
     .pay-codecontent{width: 1184px;height: auto;float: left;padding:  0 255px;box-sizing: border-box;}
-    .pay-codecontent .pay-amount{width: 278px;height: 100%;float: left;}
+    .pay-codecontent .pay-amount{width: 300px;height: 100%;float: left;}
     .pay-codecontent .pay-amount .pay-amount-text{width: 100%;height: auto;float: left;margin-bottom: 40px;}
     .pay-codecontent .pay-amount .pay-amount-text p{font-size: 16px;text-align: left;color: #333;line-height: 34px;}
-    .pay-codecontent .pay-amount .pay-amount-text p span{margin-left: 5px;}
+    .pay-codecontent .pay-amount .pay-amount-text p span{margin-left: 5px;color: #E15616;}
     .pay-codecontent .pay-amount .pay-amount-icon{width: 278px;height: 205px;float: left;}
     .pay-codecontent .pay-amount .pay-amount-icon img{width: 100%;height: 100%;display: block;}
     .pay-codecontent .pay-codemain{width: 300px;height: auto;float: right;position: relative;}
@@ -77,7 +77,7 @@
     .pay-codecontent .pay-amount{width:  100%;height: auto;float: left;}
     .pay-codecontent .pay-amount .pay-amount-text{width: 100%;height: auto;float: left;margin-bottom: 4vw;}
     .pay-codecontent .pay-amount .pay-amount-text p{font-size: 4vw;text-align: center;color: #333;line-height: 8vw;}
-    .pay-codecontent .pay-amount .pay-amount-text p span{margin-left: 5px;}
+    .pay-codecontent .pay-amount .pay-amount-text p span{margin-left: 5px;color: #E15616;}
     .pay-codecontent .pay-amount .pay-amount-icon{display: none;}
     .pay-codecontent .pay-codemain{width: 100%;height: auto;float: right;position: relative;}
     .pay-codecontent .pay-codemain .code-title{width: 100%;height:8vw;line-height:8vw;font-size: 4vw;color: #333333;margin-bottom: 20px;text-align: center;font-weight: bold;}

+ 59 - 0
src/main/resources/static/css/pay/caimei-payunder.css

@@ -0,0 +1,59 @@
+/**
+ * PC端
+ */
+@media screen and (min-width:768px){
+    .head-wrap{width: 100%;height: 81px;float: left;background-color: #FFFFFF;margin-bottom: 26px;}
+    .head-wrap .inner{width:1184px;height: 81px;margin: 0 auto;    background-color: #FFFFFF;}
+    .head-wrap .logo{width:68px;height: 81px;float: left;}
+    .head-wrap .logo a{width:68px;height: 81px;display: block;}
+    .head-wrap .logo a img{width:68px;height: 81px;display: block;}
+    .head-wrap .text{height: 81px;float: left;margin-left: 10px;line-height: 81px;font-size: 30px;color: #333333;}
+    .pay-container {width: 100%;min-height: 436px;position: relative;margin-bottom: 20px;}
+    .pay-container .container{opacity:0;}
+    .pay-container .container.active{opacity: 1;}
+    .pay-content{width: 1184px;height: 502px;margin: 0 auto;padding:0 24px;box-sizing: border-box;background: #FFFFFF;}
+    .pay-title{width: 100%;height: 60px;line-height: 60px;font-size: 16px;color: #E15616;}
+    .pay-amount{width:100%;height: 128px;background: url("/img/pay/icon-under@2x.png");background-size: cover;padding: 25px 20px;box-sizing: border-box;}
+    .pay-amount p{line-height: 35px;font-size: 16px;color: #FFFFFF;}
+    .pay-amount h1{line-height: 35px;font-size: 28px;color: #FFFFFF;}
+    .pay-bank{width: 100%;height: auto;margin-top: 30px;float: left;}
+    .pay-bank .pay-bank-content{width: 60%;}
+    .pay-bank .content-viw{width:50%;height: 40px;float: left;line-height: 40px;font-weight: bold;font-size: 14px;color: #22272E;text-align: left;}
+    .pay-bank .content-viw span{font-weight: normal;}
+    .pay-bank .content-viw span.red{color: #F94B4B;}
+    .pay-bank .content-viw span.copy{margin-left:20px;display:inline-block;width: 56px;height: 24px;background-image: linear-gradient(214deg, #ff2929 0%, #ff6d1b 100%);border-radius: 2px;line-height: 24px;text-align: center;font-size: 12px;color: #FFF;margin-top: 6px;cursor: pointer;}
+    .pay-msg{width: 100%;height: 56px;margin-top:40px;float: left;}
+    .pay-msg p{width: 600px;height: 56px;line-height: 56px;background: #FFFAF8;font-size: 14px;color: #E15621;text-align: left;box-sizing: border-box;padding: 0 10px;}
+
+}
+
+/**
+* 移动端
+*/
+@media screen and (max-width:768px){
+    body{min-width: 100%;background-color: #FFFFFF;}
+    footer{display: none;}
+    .head-wrap{width: 100%;height: 16vw;border: 1px solid #EBEBEB;}
+    .head-wrap .inner{width: 35vw;height: 16vw;margin: 0 auto;}
+    .head-wrap .logo{width:13.6vw;height: 16vw;float: left;}
+    .head-wrap .logo a{width:13.6vw;height: 16vw;display: block;}
+    .head-wrap .logo a img{width:13.6vw;height: 16vw;display: block;}
+    .head-wrap .text{height: 16vw;float: left;margin-left: 10px;line-height: 16vw;font-size: 6vw;color: #333333;}
+    .pay-container {width: 100%;height: auto; position: relative;margin-bottom: 6vw;}
+    .pay-container .container{opacity:0;}
+    .pay-container .container.active{opacity: 1;}
+    .pay-content{width: 100%;height: auto;box-sizing: border-box;background: #FFFFFF;}
+    .pay-title{width: 100%;height: 10vw;line-height: 10vw;font-size: 3.2vw;color: #E15616;padding:0 3.2vw;}
+    .pay-amount{width:100%;height: 34.6vw;background: url("/img/pay/icon-underh5@2x.png");background-size: cover;padding: 7vw;box-sizing: border-box;}
+    .pay-amount p{line-height: 10.3vw;font-size: 4vw;color: #FFFFFF;}
+    .pay-amount h1{line-height: 10.3vw;font-size: 6.4vw;color: #FFFFFF;}
+    .pay-bank{width: 100%;height: auto;margin-top: 6vw;float: left;padding: 0 3.2vw;box-sizing: border-box;}
+    .pay-bank .pay-bank-content{width: 60%;}
+    .pay-bank .content-viw{width:100%;height:10vw;float: left;line-height: 10vw;font-weight: bold;font-size: 14px;color: #22272E;text-align: left;}
+    .pay-bank .content-viw span{font-weight: normal;}
+    .pay-bank .content-viw span.red{color: #F94B4B;}
+    .pay-bank .content-viw span.copy{margin-left:4vw;display:inline-block;width: 12.4vw;height: 5.2vw;background-image: linear-gradient(214deg, #ff2929 0%, #ff6d1b 100%);border-radius: 2px;line-height: 5.2vw;text-align: center;font-size: 3vw;color: #FFF;margin-top: 6px;cursor: pointer;}
+    .pay-msg{width: 100%;height: 15.8vw;margin-top:6vw;float: left;box-sizing: border-box;padding: 0 3.2vw;}
+    .pay-msg p{width: 100%;height: 15.8vw;line-height: 5vw;background: #FFFAF8;font-size: 14px;color: #E15621;text-align: left;box-sizing: border-box;padding:3vw;}
+
+}

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

@@ -10,7 +10,17 @@
     .head-wrap .text{height: 81px;float: left;margin-left: 10px;line-height: 81px;font-size: 30px;color: #333333;}
     .pay-container{opacity: 0;}
     .pay-container.active{opacity: 1;}
-    .pay-content{width: 1184px;margin: 0 auto;margin-bottom: 20px;height: 477px;padding: 50px 0;background-color: #FFFFFF;display: flex;flex-direction: column;}
+    .pay-content{width: 1184px;margin: 0 auto;margin-bottom: 20px;height: 477px;padding: 50px 300px;background-color: #FFFFFF;display: flex;flex-direction: column;box-sizing: border-box;}
+    .pay-content.union{height: 310px;padding: 70px 300px;flex-direction: row;}
+    .pay-content .success-image{flex: 3;}
+    .pay-content .success-image img{width: 170px;height: 170px;}
+    .pay-content .success-content{flex: 7;height: 170px;float: right;box-sizing: border-box;padding: 16px 24px;}
+    .pay-content .success-content .text{width: 100%;height: auto;line-height: 29px;font-size: 13px;color: #627386;text-align: justify;}
+    .pay-content .success-content .text span{color: #E15621;}
+    .pay-content .success-content .success-button{width: 100%;height: 30px;margin-top: 40px;}
+    .pay-content .success-content .success-button .btn{display: block;box-sizing: border-box;width: 88px;height: 30px;text-align: center;line-height: 30px;border-radius: 2px;float: left;margin-right: 30px;}
+    .pay-content .success-content .success-button .btn.btn-home{background: #E15621;color: #FFFFFF;}
+    .pay-content .success-content .success-button .btn.btn-link{background: #FFFFFF;color: #9AA5B5;border: 1px solid #9AA5B5;}
     .pay-content .success-icon{display: flex;justify-content: center;}
     .pay-content .success-icon .icon{width: 200px;height: 200px;background-size: contain;}
     .pay-content .success-icon .icon.icon-success{background: url("/img/pay/icon-success.png")no-repeat;}

+ 3 - 0
src/main/resources/static/css/pay/caimei-wechatpay.css

@@ -66,6 +66,9 @@ footer{
     color: #FFF;
     border-radius: .14rem;
 }
+.pay-button .btn.disabled{
+    background: #E1E1E1;
+}
 .pay-logo{
     width: 100%;
     height: 1.30rem;

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

@@ -9,6 +9,7 @@ li{list-style:none}
 #swiperImage .swiper-wrapper img{width:auto;height:100vw;display:block}
 #swiperImage .swiper-wrapper .swiper-slide .cm-product-cover-tag{position:absolute;top: 0;right: 3vw;width: 15.9vw;height: 10.5vw;background: url(/img/activity/cm_cover_bg_h5.png) no-repeat center;background-size: 15.9vw;text-align: center;color: #fff;line-height: 5.5vw;font-size: 2vw;}
 .productBox .detailBox{box-sizing:border-box;padding:0 3.3vw;overflow:hidden;position: relative;}
+.productBox .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
 .productBox .detailBox .crumbs{height:8vw;line-height:8vw;font-size:3.1vw;overflow:hidden;color:#93979F}
 .productBox .detailBox .crumbs a{color:#93979F}
 .productBox .detailBox .title{width: 80vw;font-size:4.2vw;font-weight:bold;line-height:6.4vw;color:#4A4F58;margin-bottom:3.5vw;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;line-clamp: 2;-webkit-box-orient: vertical;}

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

@@ -5,6 +5,7 @@
 li{list-style:none;}
 .productBox{width:100%;margin:16px 0;background:#FFF;box-sizing:border-box;padding:15px}
 .productBox .imageBox{float:left;width:452px;height:545px;position:relative}
+.productBox .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
 .productBox .detailBox{float:right;width:686px;position: relative;}
 .productBox img{width:100%;height:100%;display:block}
 .productBox .bigImage{position:relative; width:452px;height:452px;background:#F3F7FE;border: 1px solid #e4e4e4;}
@@ -95,7 +96,9 @@ li{list-style:none;}
 .product-supporting-list.active{background-color: #F3F7FE;}
 .product-supporting-list .tr{font-size: 14px;color: #627386;float: left;text-align: center;}
 .product-supporting-list .tr-1{width:10%;}
-.product-supporting-list .tr-1 img{width: 70px;height: 70px;display: block;box-sizing: border-box;border: 1px solid #E2E7EF;border-radius: 2px;}
+.product-supporting-list .tr-1 a{width: 70px;height: 70px;display: block;position: relative;}
+.product-supporting-list .tr-1 a .smalltype{width: 22px;height: 22px;position: absolute;top: 0;right: 5px;z-index: 88;}
+.product-supporting-list .tr-1 .images{width: 70px;height: 70px;display: block;box-sizing: border-box;border: 1px solid #E2E7EF;border-radius: 2px;}
 .product-supporting-list .tr-2{width:20%;height: 100%;box-sizing: border-box;padding: 16px 0;}
 .product-supporting-list .tr-2 p{text-align: justify;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;line-clamp: 2;-webkit-box-orient: vertical;word-break: break-all;}
 .product-supporting-list .tr-3{width:15%;height: 100%;box-sizing: border-box;padding: 16px;}

+ 3 - 0
src/main/resources/static/css/product/instruement-list.css

@@ -62,6 +62,7 @@
     .list-container ul li.productItem{width:184px;height:268px;float:left;background:#fff;position:relative;margin:0 16px 16px 0;overflow:hidden;float:left}
     .list-container ul li img{width:100%;height:164px}
     .list-container ul li .name{display:block;padding:0 8px;margin-top:8px;height:40px;line-height:21px;vertical-align:middle;word-break:break-all;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;display:-webkit-inline-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
+    .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .productItem .price{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 8px;height:54px;width:100%}
     .productItem .price .icon:before{width:63px}
     .productItem .price .icon.i5:before{background-position:-2px -832px}
@@ -116,6 +117,8 @@
     .sortBox li.screen .mIcon:before{width: 4vw;height: 4vw;background-position: -70vw -78vw;}
     .list-container ul{margin: 3.2vw auto;width: 97vw;}
     .list-container ul li{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;}
+    .productItem{position: relative;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
     .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
     .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
     .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}

+ 3 - 1
src/main/resources/static/css/product/list.css

@@ -51,6 +51,7 @@ li{list-style:none}
     .productList .productItem:nth-child(6n){margin-right:0}
     .productList .productItem img{width:100%;height:164px}
     .productList .productItem .name{display:block;padding:0 8px;margin-top:8px;height:40px;line-height:21px;vertical-align:middle;word-break:break-all;overflow:hidden;-o-text-overflow:ellipsis;text-overflow:ellipsis;display:-webkit-inline-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
+    .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .productItem .price{border:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 8px;height:54px;width:100%}
     .productItem .price .icon:before{width:63px}
     .productItem .price .icon.i5:before{background-position:-2px -832px}
@@ -112,7 +113,8 @@ li{list-style:none}
     .sortBox li.screen .mIcon{width: 4vw;height: 4vw;display: block;position: absolute;top: 0.8vw;right: -2vw;}
     .sortBox li.screen .mIcon:before{width: 4vw;height: 4vw;background-position: -70vw -78vw;}
     .productList{margin: 3.2vw auto;width: 97vw;}
-    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;}
+    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;position: relative;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
     .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
     .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
     .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}

+ 3 - 1
src/main/resources/static/css/product/product-coupon.css

@@ -11,6 +11,7 @@ li{list-style:none}
     .productList .productItem {width: 184px;height: 268px;float: left;background: #fff;position: relative;margin: 0 16px 16px 0;overflow: hidden;float: left;}
     .productList .productItem img {width: 100%;height: 164px;}
     .productList .productItem .name{display: block;padding: 0 8px;margin-top: 8px;height: 40px;line-height: 21px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical}
+    .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .productItem .price{border: 0;box-sizing: border-box;padding: 0 8px;height: 54px;width: 100%;}
     .productItem .price .icon:before{width: 63px;}
     .productItem .price .icon.i5:before {background-position: -2px -832px;}
@@ -53,7 +54,8 @@ li{list-style:none}
     .coupon-banner{width:100vw;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden}
     .coupon-banner img{display:block;width:100vw;height:48vw;max-width:unset}
     .productList{margin: 3.2vw auto;width: 97vw;}
-    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;}
+    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;position: relative;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
     .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
     .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
     .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}

+ 2 - 0
src/main/resources/static/css/product/product-supporting.h5.css

@@ -12,6 +12,8 @@
     .supporting-list .list-checked .coll-checked.none{width: 16px;height: 16px;background: url("/img/cart/icon_weigouxuan_desied@2x.png") no-repeat;background-size: cover;display: block;margin-right: 6px;}
     .supporting-list .list-checked .coll-checked.checked{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
     .supporting-list .list-image{width: 24vw;height: 100%;float: left;margin-right: 2vw;}
+    .supporting-list .list-image a{width: 24vw;height: 24vw;display: block;position: relative;}
+    .supporting-list .list-image .smalltype{width: 26px;height: 26px;position: absolute;top: 0;right: 5px;border:none;}
     .supporting-list .list-image img{width: 24vw;height: 24vw;box-sizing: border-box;display: block;border: 1px solid #E1E1E1;border-radius: 2px;}
     .supporting-list .list-info{width: 59vw;float: left;height: 100%;}
     .supporting-list .list-info .list-name{width:100%;height: 10.5vw;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;line-clamp: 2;-webkit-box-orient: vertical;word-break: break-all;line-height: 5.2vw;text-align: justify;font-size: 3.6vw;color: #22272E;}

+ 165 - 0
src/main/resources/static/css/product/promotions.css

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

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

@@ -57,6 +57,7 @@ li{list-style:none}
     .listWrap .c7{float:right;width:118px}
     .listWrap .c10{float:left;width:495px}
     .listWrap .c11{float:left;width:480px;text-align:left}
+    .listWrap .c1 .smalltype{width: 26px;height: 26px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .listWrap .c1 span.tip{position:absolute;background:#ff4500;line-height:20px;height:20px;padding:0 10px;white-space:nowrap;font-size:12px;color:#FFF;top:0;left:0}
     .listWrap .coll-checked{width: 16px;height: 16px;cursor: pointer;background: url("/img/cart/icon_weigouxuan@2x.png") no-repeat;background-size: cover;display: block;margin-right: 6px;}
     .listWrap .coll-checked.checked{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
@@ -309,6 +310,7 @@ li{list-style:none}
     .listWrap .coll-checked{width: 16px;height: 16px;cursor: pointer;background: url("/img/cart/icon_weigouxuan@2x.png") no-repeat;background-size: cover;display: block;margin-right: 6px;margin-top: 0;}
     .listWrap .coll-checked.checked{background: url("/img/cart/icon_yixuanze@2x.png") no-repeat;background-size: cover;}
     .listWrap .supplierItem .c1{float:left;width:24vw;position:relative;}
+    .listWrap .c1 .smalltype{width: 26px;height: 26px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .listWrap .c1 span.tip{position:absolute;background:#ff4500;line-height:5vw;height:5vw;padding:0 2vw;white-space:nowrap;font-size:3.1vw;color:#FFF;top:0;left:0}
     .listWrap .supplierItem .image{display:block;box-sizing:border-box;width:24vw;height:24vw;border:1px solid #F7F7F7}
     .listWrap .supplierTit .img{width:7.4vw;height:7.4vw;border:1px solid #F7F7F7;margin-right:2vw}

+ 5 - 2
src/main/resources/static/css/supplier/index.css

@@ -48,7 +48,9 @@ li{list-style:none}
     .supplierInfo .productBox{box-sizing:border-box;width:100%;}
     .supplierInfo .productList{width:1200px;margin-bottom:18px;}
     .supplierInfo .productBox .title{color:#4A4F58;font-size:20px;height:54px;line-height:54px}
-    .supplierInfo .productItem {margin-bottom: 16px;}
+    .supplierInfo .productItem {margin-bottom: 16px;position: relative;}
+    .supplierInfo .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
+
     .empty{background: #fff;margin-top: 10px;}
     .navLayout{min-height: auto;}
     .productList .productItem {width: 184px;height: 268px;float: left;background: #fff;position: relative;margin: 0 16px 16px 0;overflow: hidden;float: left;}
@@ -126,7 +128,8 @@ li{list-style:none}
     .supplierInfo .productList{width:96.6vw;margin:1.3vw auto;box-sizing:border-box}
     .supplierInfo .productBox .title{width:93.4vw;color:#2D3036;font-size:3.7vw;height:5vw;line-height:5vw;margin:2.7vw auto 0}
     .productList{margin: 3.2vw auto;width: 97vw;}
-    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;}
+    .productList .productItem{width: 45.6vw;height: 70vw;overflow: hidden;margin: 0 1.3vw 2.6vw 1.3vw;background: #fff;text-align: left;position: relative;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
     .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
     .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
     .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}

+ 3 - 1
src/main/resources/static/css/user-center/collection/collection.css

@@ -19,7 +19,7 @@ li{list-style:none}
     .productList{width:1200px;margin:0 auto;box-sizing:border-box}
     .productList .productItem {width: 184px;height: 268px;float: left;background: #fff;position: relative;margin: 0 16px 16px 0;overflow: hidden;float: left;position: relative;}
     .productList .productItem:nth-child(6n){margin-right: 0;}
-    .productList .product-cancel{width: 100%;height: 32px;line-height: 32px;text-align: center;background-color: #FFE6DC;color: #E15621;font-size: 14px;cursor: pointer;position: absolute;top: -32px;left: 0;display: none;transition: all 0.3s;}
+    .productList .product-cancel{width: 100%;height: 32px;line-height: 32px;text-align: center;background-color: #FFE6DC;color: #E15621;font-size: 14px;cursor: pointer;position: absolute;top: -32px;left: 0;z-index:99;display: none;transition: all 0.3s;}
     .productList .product-button{width: 100%;height: 40px;position: absolute;bottom: -40px;left: 0;display: none;transition: all 0.2s;z-index: 99;}
     .productList .product-button .coll-btn{width: 50%;height: 100%;line-height: 40px;font-size: 14px;text-align: center;float: left;position: relative;cursor: pointer;}
     .productList .product-button .coll-btn.add{background-color: #FFE6DC;color: #E15621;}
@@ -31,6 +31,7 @@ li{list-style:none}
     .productList .productItem:hover .product-cancel{top: 0;display: block;}
     .productList .productItem:hover .product-button{bottom: 0;display: block;}
     .productList .productItem img {width: 100%;height: 164px;}
+    .productItem .page_main_type{width: 34px;height: 34px;text-align: justify;box-sizing: border-box;padding: 5px;border-radius: 0 0 8px 8px;background-color: #33CCBF;font-size: 12px;color: #FFFFFF;line-height: 13px;position: absolute;top: 0;right: 10px;z-index: 88;}
     .productList .productItem .name{display: block;padding: 0 8px;margin-top: 8px;height: 40px;line-height: 21px;vertical-align: middle;word-break: break-all;overflow: hidden;text-overflow: ellipsis;display: -webkit-inline-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical}
     .productItem .price{border: 0;box-sizing: border-box;padding: 0 8px;height: 54px;width: 100%;}
     .productItem .price .icon:before{width: 63px;}
@@ -92,6 +93,7 @@ li{list-style:none}
     .productList .product-mask{width: 100%;height: 100%;background: rgba(0,0,0,0.3);position: absolute;top: 0;left: 0;z-index: 99;cursor: pointer;}
     .productList .product-mask .mask-checked{width: 16px;height: 16px;background: url("/img/account/icon-weigouxuan@2x.png") no-repeat;background-size: cover;display: block;position: absolute;right: 0;top: 0;}
     .productList .product-mask .mask-checked.checked{background: url("/img/account/icon-yigouxuan@2x.png") no-repeat;background-size: cover;}
+    .productItem .page_main_type{width: 8.8vw;height: 8.8vw;text-align: justify;box-sizing: border-box;padding: 1vw;border-radius: 0 0 2vw 2vw;background-color: #33CCBF;font-size: 2.6vw;color: #FFFFFF;line-height: 3.4vw;position: absolute;top: 0;right: 2vw;}
     .productItem .price em {display: block;height: 7vw;line-height: 7vw;color: #4A4F58;font-style: normal;float: left;}
     .productItem .price .mIcon:before{width:15.8vw;height: 5vw}
     .productItem .price .mIcon.i5:before {background-position: -84vw -97.5vw;}

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

@@ -32,11 +32,11 @@ li{list-style:none}
     .order-container .section .section-info .order-content .order-item p .none{color:#22272e;}
     /*商品信息*/
     .order-container .section-list{margin-bottom: 10px;width: 100%;height: auto;box-sizing:border-box;}
-    .order-container .section-shopinfo{width: 100%;height: auto;margin-bottom: 5px;box-sizing: border-box;padding: 0 20px 0px 20px;background-color: #FFFFFF;}
-    .order-container .section-shopinfo .title{width: 100%;height: 56px;box-sizing: border-box;padding: 8px 0;border-bottom: 1px solid #e2e7ef;}
+    .order-container .section-shopinfo{width: 100%;height: auto;margin-bottom: 5px;box-sizing: border-box;padding: 0;background-color: #FFFFFF;}
+    .order-container .section-shopinfo .title{width: 100%;height: 56px;box-sizing: border-box;padding: 8px 20px;border-bottom: 1px solid #e2e7ef;}
     .order-container .section-shopinfo .title .logo{width: 39px;height: 39px;box-sizing: border-box;border: 1px solid #e2e7ef;float: left;display: block;margin-right: 5px;}
     .order-container .section-shopinfo .title .name{line-height: 40px;float: left;font-size: 14px;color: #22272E;text-align: left;margin-right: 20px;}
-    .order-container .section-shopinfo .product{width: 100%;height: auto;}
+    .order-container .section-shopinfo .product{width: 100%;height: auto;box-sizing: border-box;padding: 0 20px;}
     .order-container .section-shopinfo .section-prosinfo{width: 100%;height: 126px;padding: 16px 0 0;}
     .order-container .section-shopinfo .product-t{width: 100%;min-height: 100px;float: left;}
     .order-container .section-shopinfo .product-t .image{width: 98px;height: 98px;float: left;border: 1px solid #e2e7ef;margin-right: 10px;position: relative;}
@@ -59,21 +59,13 @@ li{list-style:none}
     .order-container .section-shopinfo .product-t .price>p .red{color: #FF2A2A;}
     .price-total{padding-top:20px;text-align:right;color:#22272e;font-size:16px}
     .price-total span{color:#f94b4b}
-    .order-container .section-shopinfo .shopinfo-bott{width: 100%;height: auto;box-sizing: border-box;padding-left:110px;line-height: 38px;color: #22272E;    border-top: 1px dashed #F7F7F7;}
-    .order-container .section-shopinfo .shopinfo-bott p .red{color: #FF2A2A;}
-    .order-container .section-shopinfo .shopinfo-bott .bott-top{width: 100%;float: left;height: 60px;}
-    .order-container .section-shopinfo .shopinfo-bott .bott-bot{width: 100%;float: left;}
-    .order-container .section-shopinfo .shopinfo-bott .count{float: left;font-size: 14px;}
-    .order-container .section-shopinfo .shopinfo-bott .count.none{line-height: 60px;}
-    .order-container .section-shopinfo .shopinfo-bott .count span{color: #E15616;margin: 5px 0;}
-    .order-container .section-shopinfo .shopinfo-bott .total{float: right;font-size: 16px;display: inline-block;text-align:right;}
-    .order-container .section-shopinfo .shopinfo-bott .total p{display: inline-block;float: left;height: 30px;line-height: 30px;width: 100%;}
-    .order-container .section-shopinfo .shopinfo-bott .total p .money{font-size: 14px;color: #999999;text-decoration: line-through;}
-    .order-container .section-shopinfo .shopinfo-bott .total p .money-sign{font-size: 14px;color: #999999;text-decoration: line-through;}
-    .order-container .section-shopinfo .shopinfo-bott .total p .money-reduced{margin-left: 5px;font-size: 14px;color: #e15616;}
-    .order-container .section-shopinfo .shopinfo-bott .total p.none{line-height: 60px;}
-    .order-container .section-shopinfo .bott-bot p{color: #627386;}
-    .order-container .section-shopinfo .bott-bot span{margin-left: 10px;color: #22272E;}
+    .order-container .section-shopinfo .shopinfo-bott{width: 100%;height: auto;box-sizing: border-box;color: #22272E;background-color: #FFFAF8;padding: 8px 20px;margin-top: 5px;}
+    .order-container .section-shopinfo .shopinfo-bott p{display:inline-block;margin-right:50px;line-height: 34px;color: #627386;font-size: 14px;float: left;}
+    .order-container .section-shopinfo .shopinfo-bott .red{color: #f94b4b;}
+    .order-container .section-shopinfo .shopinfo-bott .org{color: #e15616;}
+    .order-container .section-shopinfo .shopinfo-bott .none{color:#22272e;}
+    .order-container .section-shopinfo .shopinfo-note{width: 100%;height: 30px;line-height: 30px;padding: 10px 20px 16px 20px;}
+    .order-container .section-shopinfo .shopinfo-note p{color: #22272E;}
     /*发票信息*/
     .order-container .section-invoice{margin-bottom: 10px;width: 100%;height: auto;box-sizing: border-box;float: left;padding:16px 20px;background-color: #FFFFFF;}
     .order-container .section-invoice .tit{width: 100%;line-height: 24px;font-size: 14px;color: #22272E;height: 24px;float: left;}
@@ -144,13 +136,13 @@ li{list-style:none}
     .order-container .order-item p.org{width:auto}
     .order-container .order-item p.org span{color:#e15616}
     .order-container .order-item p.address{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
-    .section-shopinfo .title{border-bottom:1px solid #F7F7F7;height:7.4vw;line-height:7.4vw;padding:1.3vw 0;position:relative}
+    .section-shopinfo .title{border-bottom:1px solid #F7F7F7;height:7.4vw;line-height:7.4vw;padding:1.3vw 3.2vw;position:relative}
     .section-shopinfo .logo{width:7.4vw;height:7.4vw;border:1px solid #F7F7F7;margin-right:2vw}
     .section-shopinfo .name{display:inline-block;color:#9aa5b5}
     .section-shopinfo .title .priceTag{width:22vw;height:6.4vw;position:absolute;right:0;top:2vw}
     .section-shopinfo .title .priceTag .tag{top:0}
-    .section-shopinfo{width:100%;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-top:1.5vw;padding:2vw 3.2vw;box-sizing:border-box}
-    .section-shopinfo .product{padding:2vw 0;box-sizing:border-box}
+    .section-shopinfo{width:100%;background:#FFF;color:#9aa5b5;font-size:3.4vw;margin-top:1.5vw;padding:2vw 0;box-sizing:border-box}
+    .section-shopinfo .product{padding:2vw 3.2vw;box-sizing:border-box}
     .section-prosinfo{padding:1vw 0 1vw 32.2vw;position:relative;margin-top:2vw}
     .section-prosinfo .image{width:28vw;position:absolute;left:0;top:0}
     .section-prosinfo .image img{width:28vw;height:28vw}
@@ -158,7 +150,7 @@ li{list-style:none}
     .section-prosinfo .text .tit{max-height:10.4vw;line-height:5.2vw;color:#22272e;font-size:3.7vw;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
     .section-prosinfo .text .info{position:relative}
     .section-prosinfo .text .info .priceTag .tag{position:absolute;right:0;top:auto;left:auto;}
-    .section-prosinfo .text .info>p{display:inline-block;min-width:48%;font-size:3.1vw;color:#627386}
+    .section-prosinfo .text .info>p{display:inline-block;min-width:48%;font-size:3.1vw;color:#627386;line-height: 6vw;}
     .section-prosinfo .text .info>p .red{color:#FF2A2A}
 
     /*会员标签*/
@@ -168,18 +160,17 @@ li{list-style:none}
     .section-prosinfo .text .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}
     .section-prosinfo .text .svip-tag .svip-price span{color: #333}
     .section-prosinfo .text .svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
-
     .section-prosinfo .text .price{font-size:3.4vw;color:#627386}
     .section-prosinfo .text .price .red{color:#f94b4b}
-    .shopinfo-bott{border-top:1px solid #F7F7F7;width:100%;box-sizing:border-box;margin:0 auto;line-height:10.6vw;color:#22272e;font-size:3.4vw;text-align:right;padding:0 3.2vw}
-    .shopinfo-bott .total p{width: 100%;float: right;line-height: 6vw;}
-    .shopinfo-bott .total p .money{color: #999999;text-decoration: line-through;}
-    .shopinfo-bott .total p .money-sign{color: #999999;text-decoration: line-through;}
-    .shopinfo-bott .total p .money-reduced{color: #e15616;}
-    .shopinfo-bott p{display:inline-block;margin-left:3vw}
-    .shopinfo-bott p .red{color:#627386}
-    .shopinfo-bott .bott-bot{text-align:left;line-height:6vw;color:#627386;padding-bottom:2vw}
-    .shopinfo-bott .bott-bot p{margin:0}
+
+    .order-container .section-shopinfo .shopinfo-bott{width: 100%;height: auto;box-sizing: border-box;color: #22272E;background-color: #FFFAF8;padding: 2vw 3.2vw;margin-top: 2vw;}
+    .order-container .section-shopinfo .shopinfo-bott p{display:inline-block;margin-right:8vw;line-height: 6.8vw;color: #627386;font-size: 3.4vw;float: left;}
+    .order-container .section-shopinfo .shopinfo-bott .red{color: #f94b4b;}
+    .order-container .section-shopinfo .shopinfo-bott .org{color: #e15616;}
+    .order-container .section-shopinfo .shopinfo-bott .none{color:#22272e;}
+    .order-container .section-shopinfo .shopinfo-note{width: 100%;height: auto;line-height: 6vw;padding: 3.2vw 3.2vw 0 3.2vw;box-sizing: border-box;}
+    .order-container .section-shopinfo .shopinfo-note p{width: 100%;color: #22272E;text-overflow: ellipsis;display: -webkit-box;word-break: break-all;-webkit-box-orient: vertical;-webkit-line-clamp: 2;overflow: hidden;}
+
     .section-invoice p{font-size:3.4vw;color:#627386;line-height:5vw;padding:1.6vw 0}
     .section-invoice p span{color:#22272e}
     .section-invoice .tit p{font-size:3.7vw;color:#22272e}

BIN
src/main/resources/static/img/base/icon-bigtype@2x.png


BIN
src/main/resources/static/img/base/icon-newbg@2x.png


BIN
src/main/resources/static/img/base/icon-newbgh5@2x.png


BIN
src/main/resources/static/img/base/icon-news-active@2x.png


BIN
src/main/resources/static/img/base/icon-news@2x.png


BIN
src/main/resources/static/img/base/icon-smalltype@2x.png


BIN
src/main/resources/static/img/common/qr_code_hehe.jpg


BIN
src/main/resources/static/img/common/qr_code_yan.jpg


BIN
src/main/resources/static/img/default/suppliver.png


BIN
src/main/resources/static/img/pay/icon-payerror@2x.png


BIN
src/main/resources/static/img/pay/icon-under@2x.png


BIN
src/main/resources/static/img/pay/icon-underh5@2x.png


BIN
src/main/resources/static/img/pay/iconbank-bigbank@2x.png


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

@@ -630,7 +630,8 @@ function setSearchProductList(list, userId, callback) {//处理搜索
             priceGrade: item.priceGrade,
             actStatus: 0,
             priceLoaded: false,
-            beautyActFlag:item.beautyActFlag
+            beautyActFlag:item.beautyActFlag,
+            productType:item.productType
         });
         // 0公开价格 1不公开价格 2仅对会员机构公开
         if (item.priceFlag !== 1) {

+ 109 - 3
src/main/resources/static/js/common/serviceapi/pay.service.js

@@ -28,7 +28,31 @@ var PayApi = {
                 callback(res);
             });
         },
-        PayOrderPcMallPay: function (params, callback) {// 正常订单网银支付
+        PayOrderShoporders: function (params, callback) {//根据主订单查询子订单信息
+            Http.AjaxService({
+                url:'/order/pay/shoporders',
+                type:'GET',
+                data:params,
+                json:true,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayOrderCheckoutShoporders: function (params, callback) {//根据主订单查询子订单信息 shopOrderId
+            Http.AjaxService({
+                url:'/order/pay/checkout/shoporders',
+                type:'GET',
+                data:params,
+                json:true,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayOrderPcMallPay: function (params, callback) {// 米花正常订单网银支付
             Http.AjaxService({
                 url:'/order/pay/union',
                 type:'POST',
@@ -40,6 +64,18 @@ var PayApi = {
                 callback(res);
             });
         },
+        PayOrderTransferUnion: function (params, callback) {// 正常订单大额银联转账
+            Http.AjaxService({
+                url:'/order/pay/transfer/union',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
         PayOrderPcMallAlipay: function (params, callback) {// 正常订单支付宝支付
             Http.AjaxService({
                 url:'/order/pay/alipay',
@@ -112,6 +148,18 @@ var PayApi = {
                 callback(res);
             });
         },
+        PayOrderUnionStatus: function (params, callback) {//查询网银判断是否已完成支付
+            Http.AjaxService({
+                url:'/order/pay/result/union',
+                type:'GET',
+                data:params,
+                json:true,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
         PayOrderPayLink: function (params, callback) {//生成网银支付链接
             Http.AjaxService({
                 url:'/order/pay/link',
@@ -172,8 +220,6 @@ var PayApi = {
                 callback(res);
             });
         },
-
-
         /*---------------------支付vip接口---------------------------*/
 
         PayVipPcMallPay: function(params, callback){ // vip网银支付
@@ -237,6 +283,18 @@ var PayApi = {
                 callback(res);
             });
         },
+        PayCouponMiniScanAliPay: function(params, callback){ // 合利宝支付宝购买优惠券
+            Http.AjaxService({
+                url:'/order/pay/coupon/scan',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
         PayCouponUnionPay: function(params, callback){ // 网银购买优惠券
             Http.AjaxService({
                 url:'/order/pay/coupon/union',
@@ -274,4 +332,52 @@ var PayApi = {
                 callback(res);
             });
         },
+        PayOrderPcScanAliPay: function (params, callback) {// 正常订单合利宝支付宝支付
+            Http.AjaxService({
+                url:'/order/pay/scan/pay',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayOrderPcScanWxPay: function (params, callback) {// 正常订单合利宝微信公众号支付
+            Http.AjaxService({
+                url:'/order/pay/online',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayOrdersecondScanAliPay: function (params, callback) {//二手发布合利宝支付宝支付
+            Http.AjaxService({
+                url:'/order/pay/second/scan',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
+        PayVipScanAliPay: function(params, callback){ // vip支付宝合利宝支付
+            Http.AjaxService({
+                url:'/order/pay/vip/scan',
+                type:'POST',
+                data:params,
+                json:false,
+                isHost:true
+            })
+            .then(function(res){
+                callback(res);
+            });
+        },
 };

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

@@ -68,7 +68,7 @@ var UserApi = {
         * @params
         * isCheckCaptcha        是否检查图片验证码,0:检查,1:不检查
         * imgCode               图片验证码
-        * activateCodeType      1:找回密码,2:注册机构,3:供应商注册,4:更换联系人手机号-旧手机验证码,5:更换联系人手机号-新手机验证码
+        * activateCodeType      1:找回密码,2:注册机构,3:供应商注册,4:更换联系人手机号-旧手机验证码,5:更换联系人手机号-新手机验证码 6:二手发布
         * platformType          0:www,1:crm/h5,2:小程序
         * token                 图片token
         * */

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

@@ -424,6 +424,17 @@ var PublicApi = {
                 callback(res)
             });
         },
+        getHomeSaleTips:function(params,callback){ //获取关于我们
+            Http.AjaxService({
+                url:'/commodity/home/sale/tips',
+                type:'get',
+                data:params,
+                json:true
+            })
+            .then(function(res){
+                callback(res)
+            });
+        },
         confirmOrder:function (params,callback) {//提交订单
             Http.AjaxService({
                 url:'/order/submit',
@@ -468,6 +479,31 @@ var PublicApi = {
                 callback(res)
             });
         },
+        GetNewsList:function(params,callback){ //公告列表
+            Http.AjaxService({
+                url:'/commodity/home/title',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+                .then(function(res){
+                    callback(res)
+                });
+        },
+        GetNewsDetails:function(params,callback){ //获取公告详情
+            Http.AjaxService({
+                url:'/commodity/home/capacity',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            })
+                .then(function(res){
+                    callback(res)
+                });
+        }
+
 };
 
 

+ 257 - 79
src/main/resources/static/js/flea-market/form.js

@@ -3,18 +3,31 @@ var fleaMarketForm = new Vue({
     el:'#fleaMarketForm',
     data:{
         fenlei:[
-            {name:'二手仪器',value:'1'},
-            // {name:'临期产品',value:'2'},
-            {name:'其他',value:'3'},
+            {name:'二手仪器',value:1},
+            // {name:'临期产品',value:2},
+            {name:'其他',value:3},
         ],
-        currentId:0,
         radioList:[
-            {name:'美容仪器',value:'1',isChecked:false}
+            {name:'美容仪器',value:1,isChecked:true}
+        ],
+        publisherActions:[
+            {name:'个人身份',value:1,isChecked:false},
+            {name:'公司身份',value:2,isChecked:false}
         ],
         beauty:[
-           {name:'医美',value:'1'},
-           {name:'非医美',value:'2'},
+           {name:'医美',value:1},
+           {name:'非医美',value:2},
+        ],
+        productFileTypeActions:[
+            { name:'仪器原始合同',value:1,isChecked:false},
+            { name:'仪器注册证',value:2,isChecked:false},
+            { name:'仪器发票',value:3,isChecked:false},
+            { name:'仪器报关单',value:4,isChecked:false},
+            { name:'无任何文件',value:5,isChecked:false}
         ],
+        checkedFileTypeList:[],
+        currentId:0,
+        handleCurrent:1,
         BrandList:[],
         isShow:false,
         includedTax:'',
@@ -25,8 +38,9 @@ var fleaMarketForm = new Vue({
         fromMessage:'',//提示文字
         formData:new FormData(),
         secondParams:{
+            publishIdentity:1, // 发布者身份 1.个人身份 2.公司身份
             secondHandType:'',//一级分类
-            instrumentType:'',//二手仪器分类
+            instrumentType:1,//二手仪器分类
             name:'',
             brandId:'',//品牌ID
             brandName:'',//其他品牌
@@ -39,8 +53,11 @@ var fleaMarketForm = new Vue({
             // originalPrice:'',//采购价
             // stock:'',//数量
             productQuality:'',//商品成色
+            fileType:'', // 商品包含文件类型
             contactName:'',//联系人
             contactMobile:'',//联系方式
+            checkCode:'', // 联系人手机验证码
+            cardNumber:'',// 收款账号
             secondProductType:'',//
             townId:'',//县区地址
             address:'',//详细地址
@@ -49,7 +66,9 @@ var fleaMarketForm = new Vue({
             source:1,
             dockingPeopleMobile:'',
             dockingPeopleName:'',
-            authenticationImage:'',//身份证照片
+            authenticationImage:'',//身份证正面照片
+            authenticationBackImage:'',//身份证反面照片
+            licenseImage:'',//营业执照照片
             commitmentImage:'',//承诺函图片
             fileName:'',//文件名称
             ossName:'',//文件OSS名称
@@ -71,15 +90,20 @@ var fleaMarketForm = new Vue({
         playid:'',
         checkVal:[],
         resultBj:false,
+        vShow_PublishIdentity:false,
         vShow_detailTalkFlag:false,
         vShow_secondHandType:false,
         vShow_instrumentType:false,
         vShow_BrandID:false,
         vShow_Name:false,
+        vShow_companyName:false,
+        vShow_cardNumber:false,
         vShow_Price:false,
         vShow_shopColor:false,
         vShow_contactName:false,
         vShow_contactMobile:false,
+        vShow_fileType:false,
+        vShow_checkCode:false,
         vShow_caimeiMobile:false,
         vShow_Address:false,
         vShow_TownId:false,
@@ -96,12 +120,21 @@ var fleaMarketForm = new Vue({
         cancelButtonText:'取消发布',
         confirmButtonText:'去支付',
         isButtonsType:0,
+        mobilCount:0,
+        mobileCodeText:'获取验证码',
+        mobilTime:null,
+        isMobileDisabled:true,
     },
     methods:{
         showBrand:function(){
             var _this = this;
             _this.selectBrand = !_this.selectBrand;
         },
+        hadldPublishIdentity: function(item) {
+        var _this = this;
+            _this.handleCurrent = item.value;
+            _this.secondParams.publishIdentity = item.value;
+        },
         secondHandRidio: function(item) {
         var _this = this;
             _this.currentId = item.value;
@@ -163,7 +196,23 @@ var fleaMarketForm = new Vue({
                 event.target.value = '';
             });
         },
-        uploadAuthenticationImagesFn: function(event){//上传身份验证照片
+        uploadLicenseImageFn: function(event){//上传营业执照照片
+            var _this = this;
+            var inputDOM = _this.$refs.LicenseImage;
+            var file = inputDOM.files[0];
+            var size = file.size;
+            if(size > 5242880){//限制了文件的大小5MB
+                CAIMEI.dialog('图片不能超过5M');
+                event.target.value = '';
+                return;
+            }
+            _this.formData.append('file', file);
+            SecondApi.uploadimg(_this.formData,function(response){
+                _this.secondParams.licenseImage = response.data;
+                event.target.value = '';
+            });
+        },
+        uploadAuthenticationImagesFn: function(event){//上传身份正面照片
             var _this = this;
             var inputDOM = _this.$refs.AuthenticationImage;
             var file = inputDOM.files[0];
@@ -179,6 +228,22 @@ var fleaMarketForm = new Vue({
                 event.target.value = '';
             });
         },
+        uploadAuthenticationBackImageFn: function(event){//上传身份反面照片
+            var _this = this;
+            var inputDOM = _this.$refs.AuthenticationBackImage;
+            var file = inputDOM.files[0];
+            var size = file.size;
+            if(size > 5242880){//限制了文件的大小5MB
+                CAIMEI.dialog('图片不能超过5M');
+                event.target.value = '';
+                return;
+            }
+            _this.formData.append('file', file);
+            SecondApi.uploadimg(_this.formData,function(response){
+                _this.secondParams.authenticationBackImage = response.data;
+                event.target.value = '';
+            });
+        },
         uploadCommitmentImagesFn: function(event){//上传承诺函图片
             var _this = this;
             var inputDOM = _this.$refs.CommitmentImage;
@@ -228,14 +293,80 @@ var fleaMarketForm = new Vue({
             _this.GoodsImagesList.splice(index,1);
             _this.secondParams.image =_this.GoodsImagesList.toString()+',';
         },
-        removeAuthenticationImagesFn:function(){//删除身份证照片
+        removeAuthenticationImagesFn:function(){//删除身份证正面照片
             var _this = this;
             _this.secondParams.authenticationImage = '';
         },
+        removeAuthenticationBackImageFn:function () {//删除身份证反面照片
+            var _this = this;
+            _this.secondParams.authenticationBackImage = '';
+        },
+        removeLicenseImageFn:function () {//删除营业执照图片
+            var _this = this;
+            _this.secondParams.licenseImage = '';
+        },
         removeCommitmentImagesFn:function(){//删除授权函文件图片
             var _this = this;
             _this.secondParams.commitmentImage = '';
         },
+        choiceProductFileType(type,index){
+            // 选择商品文件类型
+            type.isChecked = !type.isChecked
+            if (type.isChecked) {
+                if(!this.contains(this.checkedFileTypeList,type.value)){
+                    this.checkedFileTypeList.push(type.value)
+                }
+            } else {
+                this.checkedFileTypeList.splice(this.checkedFileTypeList.indexOf(type.value),1)
+            }
+            this.secondParams.fileType = this.checkedFileTypeList.join(',')
+            console.log('fileType', this.secondParams.fileType)
+        },
+        contains:function(arr, val) {// 校验
+            return arr.some(item => item === val)
+        },
+        handleMobileInput:function () {// 控制联系人手机号显示获取验证码按钮
+            var re = /^1\d{10}$/;
+            if(re.test(this.secondParams.contactMobile)){
+               this.isMobileDisabled = false
+            }
+        },
+        getNewMobileCodeFn:function(){//获取联系人手机号短信验证码
+            var _self = this;
+            var pass = verifyCheack('.massageBtn');
+            if (!pass) { return false; }
+            var params = {
+                mobile:_self.secondParams.contactMobile,
+                isCheckCaptcha:1,
+                activateCodeType:6,
+                platformType:0
+            };
+            _self.isMobileDisabled = true;
+            UserApi.getRegisterMobileCode(params,function(response){
+                if(response.code == 0){
+                    CAIMEI.dialog('验证短信已发送',false,function () {});
+                    var TIME_COUNT = 60;
+                    if (!_self.mobilTime) {
+                        _self.mobilCount = TIME_COUNT;
+                        _self.isMobileDisabled = true;
+                        _self.mobilTime = setInterval(function(){
+                            if (_self.mobilCount > 1 && _self.mobilCount <= TIME_COUNT) {
+                                _self.mobilCount--;
+                                _self.mobileCodeText = _self.mobilCount +'s重新发送';
+                            } else {
+                                _self.isMobileDisabled = false;
+                                clearInterval(_self.mobilTime);
+                                _self.mobilTime = null;
+                                _self.mobileCodeText = '获取验证码';
+                            }
+                        },1000)
+                    }
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                    _self.isMobileDisabled = false;
+                }
+            })
+        },
         deleteCommitmentFile:function(){//删除承诺函文件
             var _this = this;
             SecondApi.deleteOssFile({ ossName : _this.secondParams.ossName },function (response) {
@@ -273,162 +404,208 @@ var fleaMarketForm = new Vue({
         submitBtn:function () {
             var _this = this;
             var re = /^1\d{10}$/;
+            if(_this.secondParams.contactName == ''){
+                _this.vShow_contactName = true;
+                _this.fromMessage = '请输入联系人姓名';
+                _this.scrollIntoView('secondHandrelease');
+                setTimeout(function(){
+                    _this.vShow_contactName = false;
+                },3000);
+                return
+            }
+            if(_this.secondParams.contactMobile == ''){
+                _this.vShow_contactMobile = true;
+                _this.fromMessage = '请输入联系方式';
+                _this.scrollIntoView('secondHandrelease');
+                setTimeout(function(){
+                    _this.vShow_contactMobile = false;
+                },3000);
+                return
+            }
+            if(!re.test(_this.secondParams.contactMobile)){
+                _this.vShow_contactMobile = true;
+                _this.fromMessage = '联系方式格式不正确';
+                _this.scrollIntoView('secondHandrelease');
+                setTimeout(function(){
+                    _this.vShow_contactMobile = false;
+                },3000);
+                return
+            }
+            if(_this.secondParams.checkCode == ''){
+                _this.vShow_checkCode = true;
+                _this.fromMessage = 'secondHandrelease';
+                _this.scrollIntoView('vShow_Price');
+                setTimeout(function(){
+                    _this.vShow_checkCode = false;
+                },3000);
+                return
+            }
             if(_this.secondParams.secondHandType == ''){
                 _this.vShow_secondHandType = true;
                 _this.fromMessage = '请选择分类';
-                _this.scrollIntoView();
+                _this.scrollIntoView('secondHandrelease');
                 setTimeout(function(){
                     _this.vShow_secondHandType= false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.secondParams.secondHandType == 1 ){
                if(_this.secondParams.instrumentType ==''){
                 _this.vShow_instrumentType = true;
                 _this.fromMessage = '请完善仪器分类';
-                _this.scrollIntoView();
+                _this.scrollIntoView('secondHandrelease');
                 setTimeout(function(){
                     _this.vShow_instrumentType= false;
-                },2000);
+                },3000);
                 return;
                 }
             }
-            if(_this.secondParams.brandID == ''){
+            if(_this.secondParams.brandId == ''){
                 _this.vShow_BrandID = true;
                 _this.fromMessage = '请选择商品品牌';
-                _this.scrollIntoView();
+                _this.scrollIntoView('secondHandrelease');
                 setTimeout(function(){
                     _this.vShow_BrandID = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.secondParams.name == ''){
                 _this.vShow_Name = true;
                 _this.fromMessage = '请输入商品名称';
-                _this.scrollIntoView();
+                _this.scrollIntoView('vShowsecondHandType');
                 setTimeout(function(){
                     _this.vShow_Name = false;
-                },2000);
+                },3000);
                 return
-         }
+            }
+            if(_this.secondParams.publishIdentity === 2){
+                if(_this.secondParams.companyName == ''){
+                    _this.vShow_companyName = true;
+                    _this.fromMessage = '请输入公司名称';
+                    _this.scrollIntoView('vShowsecondHandType');
+                    setTimeout(function(){
+                        _this.vShow_companyName = false;
+                    },3000);
+                    return
+                }
+            }
              if(_this.secondParams.price == ''){
                   _this.vShow_Price = true;
                   _this.fromMessage = '请输入交易价';
-                  _this.scrollIntoView();
+                  _this.scrollIntoView('vShow_BrandID');
                   setTimeout(function(){
                       _this.vShow_Price = false;
-                  },2000);
+                  },3000);
                     return
              }
              if(_this.secondParams.productQuality == ''){
                   _this.vShow_shopColor = true;
                   _this.fromMessage = '请输入商品成色';
-                  _this.scrollIntoView();
+                  _this.scrollIntoView('vShow_FixedYears');
                     setTimeout(function(){
                         _this.vShow_shopColor = false;
-                    },2000);
+                    },3000);
                     return
              }
-             if(_this.secondParams.contactName == ''){
-                  _this.vShow_contactName = true;
-                  _this.fromMessage = '请输入联系人姓名';
-                  _this.scrollIntoView();
-                  setTimeout(function(){
-                      _this.vShow_contactName = false;
-                  },2000);
-                  return
-             }
-              if(_this.secondParams.contactMobile == ''){
-                  _this.vShow_contactMobile = true;
-                  _this.fromMessage = '请输入联系方式';
-                  _this.scrollIntoView();
-                  setTimeout(function(){
-                      _this.vShow_contactMobile = false;
-                  },2000);
-                  return
-             }
-             if(!re.test(_this.secondParams.contactMobile)){
-                  _this.vShow_contactMobile = true;
-                  _this.fromMessage = '联系方式格式不正确';
-                  _this.scrollIntoView();
-                  setTimeout(function(){
-                      _this.vShow_contactMobile = false;
-                  },2000);
-                  return
-              }
+            if(_this.secondParams.fileType == ''){
+                _this.vShow_fileType = true;
+                _this.fromMessage = '选择商品文件的类型';
+                _this.scrollIntoView('vShow_FixedYears');
+                setTimeout(function(){
+                    _this.vShow_fileType = false;
+                },3000);
+                return
+            }
+            if(_this.secondParams.cardNumber == ''){
+                _this.vShow_cardNumber = true;
+                _this.fromMessage = '请输入收款银行卡卡号';
+                _this.scrollIntoView('vShow_Price');
+                setTimeout(function(){
+                    _this.vShow_cardNumber = false;
+                },3000);
+                return
+            }
               if(_this.secondParams.dockingPeopleMobile!='' && !re.test(_this.secondParams.dockingPeopleMobile)){
                   _this.vShow_caimeiMobile = true;
                   _this.fromMessage = '联系方式格式不正确';
-                  _this.scrollIntoView();
+                  _this.scrollIntoView('vShow_checkCode');
                   setTimeout(function(){
                       _this.vShow_caimeiMobile = false;
-                  },2000);
+                  },3000);
                   return
               }
               if(_this.secondParams.townId == ''|| _this.secondParams.townId == undefined){
                   _this.vShow_TownId = true;
                   _this.fromMessage = '请完善联系地址';
-                  _this.scrollIntoView();
+                  _this.scrollIntoView('vShow_caimeiMobile');
                   setTimeout(function(){
                       _this.vShow_TownId = false;
-                  },2000);
+                  },3000);
                   return
              }
              if(_this.secondParams.address == ''){
                   _this.vShow_Address = true;
                   _this.fromMessage = '请填写详细地址';
-                  document.getElementById('Address').scrollIntoView({block: 'start', behavior: 'smooth'});
+                  _this.scrollIntoView('vShow_caimeiMobile');
                   setTimeout(function(){
                         _this.vShow_Address = false;
-                    },2000);
+                    },3000);
                     return
              }
             if(_this.GoodsImagesList ==''){
                 _this.vShow_GoodsImages = true;
                 _this.fromMessage = '请上传图片';
-                document.documentElement.scrollTop=900;
+                _this.scrollIntoView('vShow_Address');
                 setTimeout(function(){
                     _this.vShow_GoodsImages = false;
-                },2000);
+                },3000);
                 return;
             }
             if(_this.checkbox==false){
                 _this.vShow_checkBox = true;
-                _this.fromMessage='请勾选已阅读';
+                _this.fromMessage='请阅读并勾选同意';
                 setTimeout(function(){
                     _this.vShow_checkBox = false;
-                },2000);
+                },3000);
                 return
              }
-            console.log(_this.secondParams);
-            if(_this.secondParams.authenticationImage == ''){
-                _this.PopupShow = true;
-                _this.tipsContentText = '上传身份验证照片,您的二手商品将获得更好的推荐推荐和曝光,方便您快速卖出。';
-                _this.cancelButtonText = '继续发布';
-                _this.confirmButtonText = '去上传';
-                _this.isButtonsType = 1;
-                return;
+            if(_this.secondParams.publishIdentity === 1){
+                if(_this.secondParams.authenticationImage == '' && _this.secondParams.authenticationBackImage == ''){
+                    _this.PopupShow = true;
+                    _this.tipsContentText = '上传身份验证照片,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
+                    _this.cancelButtonText = '继续发布';
+                    _this.confirmButtonText = '去上传';
+                    _this.isButtonsType = 1;
+                    return;
+                }
+            }else{
+                if(_this.secondParams.licenseImage == ''){
+                    _this.PopupShow = true;
+                    _this.tipsContentText = '上传营业执照照片,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
+                    _this.cancelButtonText = '继续发布';
+                    _this.confirmButtonText = '去上传';
+                    _this.isButtonsType = 1;
+                    return;
+                }
             }
             if(_this.secondParams.commitmentImage == '' || _this.secondParams.ossName == ''){
                 _this.PopupShow = true;
-                _this.tipsContentText = '上传二手出让承诺函,您的二手商品将获得更好的推荐推荐和曝光,方便您快速卖出。';
+                _this.tipsContentText = '上传二手出让承诺函,您的二手商品将获得更好的推荐和曝光,方便您快速卖出。';
                 _this.cancelButtonText = '继续发布';
                 _this.confirmButtonText = '去上传';
                 _this.isButtonsType = 1;
                 return;
             }
+            console.log(_this.secondParams);
             _this.SecondHandProduct(_this.secondParams)
         },
         SecondHandProduct:function(params){//提交发布
             var _this = this;
             SecondApi.SecondHandProduct(params,function (res) {
                 if (res.code==0){
-                    _this.PopupShow = true;
-                    _this.tipsContentText = '发布二手商品,采美需要收取您每个商品100元的展示费,展示期为3个月支付完成后,商品会在1-2个工作日内进行审核,审核通过后,商品会立即上线';
-                    _this.cancelButtonText = '取消发布';
-                    _this.confirmButtonText = '去支付';
-                    _this.isButtonsType = 2;
-                    _this.playid= res.data;
+                    CAIMEI.Alert('发布成功!商品信息会在1-2个工作日内进行审核,审核通过后将立即上线到采美二手市场', '确定', true,function () {
+                        window.location.href = '/flea-market/list.html';
+                    });
                 }else{
                     CAIMEI.Alert(res.msg, '确定', false);
                     _this.secondBj = false;
@@ -440,6 +617,7 @@ var fleaMarketForm = new Vue({
             var _this = this;
             switch(_this.isButtonsType){
                 case 1:
+                    _this.PopupShow = false;
                     _this.SecondHandProduct(_this.secondParams);
                     break;
                 case 2:
@@ -463,8 +641,8 @@ var fleaMarketForm = new Vue({
             var _this = this;
             _this.PopupShow = false;
         },
-        scrollIntoView: function(){
-            document.getElementById('secondHandrelease').scrollIntoView({block: 'start', behavior: 'smooth'});
+        scrollIntoView: function(id){
+            document.getElementById(id).scrollIntoView({block: 'start', behavior: 'smooth'});
         },
         province:function () {
            var _this = this;

+ 26 - 0
src/main/resources/static/js/help/details.js

@@ -0,0 +1,26 @@
+;
+var orderPage = new Vue({
+    el: "#beansPage",
+    data: {
+        isRequset:false,
+        newsData:{},
+    },
+    methods: {
+        GetNewsDetails:function (id) {
+            var  _self = this;
+            PublicApi.GetNewsDetails({id:id},function (response) {
+                if(response.code == 0){
+                    _self.newsData = response.data;
+                    _self.isRequset = false;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+
+    },
+    mounted: function () {
+        var id = CAIMEI.getUrlParam('id');
+        this.GetNewsDetails(id);
+    }
+});

+ 79 - 0
src/main/resources/static/js/help/news.js

@@ -0,0 +1,79 @@
+;
+var orderPage = new Vue({
+    el: "#beansPage",
+    data: {
+        isRequset:false,
+        noMore: false,
+        tabsListIndex:0,
+        listQuery:{
+            pageNum:1,
+            pageSize:20
+        },
+        listRecord: 0,
+        pageInput: '1',
+        modelType:0,
+        newsList:[],
+    },
+    computed: {
+        pageTotal: function () {
+            var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
+            return total > 0 ? total : 1;
+        },
+        showPageBtn: function () {
+            var total = Math.ceil(this.listRecord / this.listQuery.pageSize);
+            total = total > 0 ? total : 1;
+            var index = this.listQuery.pageNum, arr = [];
+            if (total <= 6) {
+                for (var i = 1; i <= total; i++) {
+                    arr.push(i);
+                }
+                return arr;
+            }
+            if (index <= 3) return [1, 2, 3, 4, 5, 0, total];
+            if (index >= total - 2) return [1, 0, total - 4, total - 3, total - 2, total - 1, total];
+            return [1, 0, index - 2, index - 1, index, index + 1, index + 2, 0, total];
+        }
+    },
+    methods: {
+        toPagination: function (pageNum) {//点击切换分页
+            if (pageNum <= this.pageTotal) {
+                this.listQuery.pageNum = pageNum;
+                this.GetNewsList();
+            }
+        },
+        checkNum: function () {//输入跳转分页
+            if (this.pageInput > this.pageTotal) {
+                this.pageInput = this.pageTotal;
+            } else if (this.pageInput < 1) {
+                this.pageInput = 1;
+            }
+        },
+        GetNewsList:function(){//查询优惠券列表
+            var _self = this;
+            PublicApi.GetNewsList(_self.listQuery,function (response) {
+                if(response.code == 0){
+                    var data = response.data;
+                    if( data.results && data.results.length>0) {
+                        _self.newsList = [];
+                        _self.newsList = data.results;
+                        _self.listRecord = data.totalRecord;
+                    }else{
+                        _self.newsList = [];
+                        _self.newsList = data.results;
+                        _self.listRecord = data.totalRecord;
+                    }
+                    _self.isRequset = false;
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        hanldDetails:function (id){// 跳转公告详情
+            var  _self = this;
+            window.open('/news/details.html?id='+id);
+        }
+    },
+    mounted: function () {
+        this.GetNewsList();
+    }
+});

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

@@ -8,6 +8,7 @@ var homeData = new Vue({
         // liveList:[],//右侧直播模块
         // cmImageList:[],//右侧活动模块
         // infoList:[],//右侧文章模块
+        newsList:[],
         popupFlag:false,
         couponEntry:2,// 活动优惠券弹窗显示控制
         homePageFloor:[]//楼层
@@ -90,8 +91,11 @@ var homeData = new Vue({
             PublicApi.GetHomeInit({ source: 1 },function(response){
                 if(response.code == 0){
                     _self.couponEntry = response.data.couponEntry
-                    console.log('couponEntry', _self.couponEntry)
-                    console.log('GLOBAL_USER_ID', GLOBAL_USER_ID)
+                    if(isPC){
+                        _self.newsList = response.data.annlist.slice(0,2)
+                    }else{
+                        _self.newsList = response.data.annlist.slice(0,1)
+                    }
                     if(GLOBAL_USER_ID == 0 &&_self.couponEntry == 1){
                         var isActivityStatus =  localStorage.getItem('isActivityStatus');
                         //新加优惠券弹窗
@@ -107,6 +111,10 @@ var homeData = new Vue({
                 }
             });
         },
+        hanldDetails:function (id){// 跳转公告详情
+            var  _self = this;
+            window.open('/news/details.html?id='+id);
+        },
         // GetHomeRightData: function(){//模块加载
         //     var _self = this;
         //     PublicApi.GetHomeRightData({ source: 1 },function(response){
@@ -321,6 +329,7 @@ var homeData = new Vue({
         // 获取设置商品价格
         if (GLOBAL_USER_ID) {
             this.GetHomeData();
+            this.GetHomeInit();
         }else{
             // 设置页面查看更多
             this.setReadeMore();

+ 25 - 0
src/main/resources/static/js/pay/caimei-code.js

@@ -0,0 +1,25 @@
+/**
+ *Created by ZHJY on 2020/7/14.
+ */
+var payContainer = new Vue({
+    el:"#payContainer",
+    data: {
+        orderInfo:{}
+    },
+    methods: {
+        authRedirect:function () {
+            var orderInfo = CAIMEI.getUrlParam('orderInfo');
+            var wechatPayUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize';
+            var appId = 'wx91c4152b60ca91a3';
+            var redirect_uri = 'https://www-b.caimei365.com/pay/wechatpay.html';
+            var url = wechatPayUrl + '?appid=' + appId + '&redirect_uri=' + redirect_uri + '&response_type=code&scope=snsapi_base&state='+ orderInfo +'#wechat_redirect';
+            window.location.href = url;
+        }
+    },
+    created:function () {
+        this.authRedirect()
+    },
+    mounted: function () {
+
+    }
+});

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

@@ -0,0 +1,499 @@
+/**
+ *Created by ZHJY on 2020/7/14.
+ */
+var payContainer = new Vue({
+    el:"#payContainer",
+    mixins: [hlbPayMixin],
+    data: {
+        isSubMitStatus:false,
+        payInfo:{
+            payBankNum: '', //支付类型
+            shopOrderId: '',  //订单ID
+            obligation: '', //待支付金额
+            payAmount: 0,//本次支付金额
+            payMobileUrl: '',//二维码生成链接
+            payData:{},       //支付数据
+            payUserType:'B2B',
+            payType:'1',
+        },
+        iframe:'',
+        orderFlag:1,// 是否是订单  0非订单 1订单
+        couponInfo:{},
+        bankListB2BData:[],// 企业网银银行列表
+        bankListB2CData:[],// 个人网银银行列表
+        methodTab:['线上支付','转账支付'],
+        mobileData:[
+            {imgUrl:'/img/pay/iconbank-ali@2x.png',bankName:'支付宝支付',bankNum:'ALIPAY'},
+            {imgUrl:'/img/pay/iconbank-wx@2x.png',bankName:'微信支付',bankNum:'WEIXIN'},
+            {imgUrl:'/img/pay/iconbank-B2Bbank@2x.png',bankName:'网银支付',bankNum:'ICBC_B2B'},
+            {imgUrl:'/img/pay/iconbank-B2Cbank@2x.png',bankName:'个人网银',bankNum:'ICBC_B2C'}
+        ],
+        pageType:'',//页面跳转类型 1 二手支付
+        obligation:'',//订单待付金额
+        payableAmount:'',//应付金额
+        receiptAmount:'',//已支付金额
+        balanceAmount:'',//应付剩余金额
+        payAmount:'',//本次支付金额
+        paymentIimit:5000,
+        paymentIimitText:'',
+        discernReceiptList:[],//支付记录列表
+        tabIndex:0,//支付方式 0 移动支付 1网银支付 2线下转账
+        mbOrderId:'',//支付订单ID
+        bigPayInfo:{},// 银联转账信息
+        BankUserType:1,
+        mobileTabIndex:null,
+        bankTabIndex:0,
+        isRequest:false,
+        isPayAlert:false,
+        isPaySwitch:false,
+        paySuccessCounter:'',
+        bankPayLink_url:'',
+        invoiceStatus:false,
+        isReceiptStatus:false,
+        onlinePay:'',
+        payStatusText:'使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
+        productID:'',//发布商品的ID
+        is_Wechat_bowcr:false,
+        comboInfo: null, //选中的svip套餐信息
+        vipRecordId: undefined,
+        couponRecordId:undefined,
+        couponId:undefined,
+        userId:0
+    },
+    filters: {
+        NumFormat:function(value) {
+            if(!value) return '0.00';
+            var intPart = Number(value) - Number(value)%1; //获取整数部分(这里是windy93的方法)
+            var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); //将整数部分逢三一断
+            var floatPart = ".00"; //预定义小数部分
+            var value2Array = value.toString().split(".");
+            if(value2Array.length == 2) {  //=2表示数据有小数位
+                floatPart = value2Array[1].toString(); //拿到小数部分
+                if(floatPart.length == 1) { //补0,实际上用不着
+                    return intPartFormat + "." + floatPart + '0';
+                } else {
+                    return intPartFormat + "." + floatPart;
+                }
+            } else {
+                return intPartFormat + floatPart;
+            }
+        }
+    },
+    methods: {
+        initCouponDetail:function (couponId) {//初始化优惠券数据
+            var _self = this;
+            ProductApi.QueryCouponDetail({ couponId: couponId },function (response) {
+                if(response.code == 0){
+                    _self.couponInfo = response.data
+                    if(globalUserData){
+                        _self.userId = globalUserData.userId;
+                    }
+                }else{
+                    CAIMEI.Alert(response.msg, '确定', false);
+                }
+            })
+        },
+        infoPayOrderCheckoutCounter:function(){//初始化子订单数据
+            var _self = this;
+            PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){
+                if(response.code == 0){
+                    // console.log(response);
+                    var data = response.data; //金额初始化
+                    _self.payInfo.payAmount = (data.shopOrder.realPay - data.shopOrder.receiptAmount).toFixed(2);
+                    _self.discernReceiptList = data.discernReceipt;// 支付记录
+                    _self.payInfo.obligation = data.shopOrder.obligation;
+                    _self.obligation =  data.shopOrder.obligation;// 待付金额
+                    _self.payableAmount =  data.shopOrder.realPay;
+                    _self.receiptAmount =  data.shopOrder.receiptAmount;
+                    _self.balanceAmount =  (_self.obligation*100 -  _self.payInfo.payAmount*100)/100;
+                    _self.payAmount =  (_self.payableAmount - _self.receiptAmount).toFixed(2);
+                    _self.paySuccessCounter = data.shopOrder.paySuccessCounter;
+                    _self.onlinePay = data.onlinePay;
+                    _self.isRequest = true;
+                    _self.PayOrderOnLineSwitch();
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            })
+        },
+        getBankList:function () {// 获取网银支付银行列表
+            var _self = this;
+            PayApi.PayGetBankCode({},function(response){
+                if(response.code == 0){
+                    _self.bankListB2BData = response.data.B2B;
+                    _self.bankListB2CData = response.data.B2C;
+                }else{
+                    console.log('获取网银支付银行列表异常')
+                }
+            })
+        },
+        PayOrderOnLineSwitch:function(){//获取是否可以先上支付
+            var _self = this;
+            PayApi.PayOrderOnLineSwitch({},function(response){
+                if(response.code == 0){
+                    if(response.data === 0){
+                        _self.isPaySwitch = true;
+                        if (_self.pageType === '2') {
+                            CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
+                            return;
+                        }
+                        CAIMEI.Alert('线上支付功能正在维护中,请前往订单详情页面查看线下转账方式后进行付款','确定',true,function(){
+                            window.location.href='/user/order/detail.html?orderId='+_self.payInfo.shopOrderId;
+                        });
+                    }
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            })
+        },
+        PayMobileSubmitFn:function(){//点击移动支付方式
+            var _self = this;
+            if(_self.isPaySwitch && _self.pageType === '2'){
+                CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
+                return;
+            }
+            if(_self.pageType === '3'){// 移动支付优惠券
+                _self.PayCouponMiniPayFn();
+            }else{
+                if(_self.payInfo.payBankNum == ''){
+                    CAIMEI.dialog('请选择支付方式');
+                    return;
+                }
+                if(_self.payAmount == ''){
+                    CAIMEI.dialog('请输入本次支付金额');
+                    return;
+                }
+                if(_self.payAmount == 0){
+                    CAIMEI.dialog('本次支付金额不能为0');
+                    return;
+                }
+                if(_self.payAmount*100 < 2){
+                    CAIMEI.dialog('本次支付金额必须大于¥0.02');
+                    return;
+                }
+                if(_self.payAmount > _self.paymentIimit){
+                    switch (_self.payInfo.payBankNum) {
+                        case 'WEIXIN':
+                            _self.paymentIimitText = '本次支付金额已超出微信支付限额,请输入小于5千的金额进行支付。';
+                            break;
+                        case 'ALIPAY':
+                            _self.paymentIimitText = '本次支付金额已超出支付宝限额,请输入小于5千的金额进行支付。';
+                            break;
+                    }
+                    CAIMEI.Alert(_self.paymentIimitText,'知道了');
+                    return;
+                }
+                if(_self.payInfo.payBankNum == "WEIXIN"){// 微信
+                    if(_self.pageType === '1'){ // 二手
+                        _self.hlb_PaySecondMiniWxPay();
+                    }else if(_self.pageType === '2'){ // 会员
+                        _self.hlb_PayVipMiniWxPay();
+                    }else{ // 正常订单
+                        _self.hlb_PayOrderMiniWxPay();
+                    }
+                }else if(_self.payInfo.payBankNum == "ALIPAY"){// 支付宝
+                    if(_self.pageType === '1'){// 二手
+                        _self.hlb_PayOrdersecondScanAliPay();
+                    }else if(_self.pageType === '2'){ // 会员
+                        _self.hlb_PayVipScanAliPay();
+                    }else{// 正常订单
+                        _self.hlb_PayOrderPcScanAliPay();
+                    }
+                }
+            }
+        },
+        PaySubmitFn:function(){//点击网银支付方式
+            var _self = this;
+            if(_self.isPaySwitch && _self.pageType === '2'){
+                CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
+                return;
+            }
+            if(_self.pageType === '3'){// 网银支付优惠券
+                if(_self.payInfo.payBankNum == ''){
+                    CAIMEI.dialog('请选择银行!');
+                    return;
+                }
+                _self.hlb_PayCouponUnionPayFn();
+            }else{
+                if(_self.payInfo.payBankNum == ''){
+                    CAIMEI.dialog('请选择银行!');
+                    return;
+                }
+                if(_self.payAmount <= 10){
+                    CAIMEI.dialog('网银支付的金额必须大于¥10.00');
+                    return;
+                }
+                if( _self.orderFlag == 1 && _self.mobileTabIndex === 2){
+                    if(_self.payAmount != _self.payableAmount){
+                        CAIMEI.Alert('企业网银支付每次收取的手续费较高,建议一次性全额付款。','确定',false);
+                        return;
+                    }
+                }
+                if(_self.pageType === '1'){// 二手
+                    _self.hlb_PayOrdersecondUnion();
+                } else if (_self.pageType === '2') { // 会员
+                    _self.hlb_PayVipPcMallPay();
+                } else {// 正常订单
+                    _self.hlb_PayOrderPcMallPay();
+                }
+            }
+        },
+        PayCouponMiniPayFn:function () {  // 移动支付购买优惠券
+            var _self = this;
+            if(_self.payInfo.payBankNum == "WEIXIN"){
+                _self.hlb_PayCouponMiniWxPay();
+            }else if(_self.payInfo.payBankNum == "ALIPAY"){//支付宝支付
+                _self.hlb_PayCouponAliPay();
+            }
+        },
+        changePayAmount:function(event){//输入支付金额控制
+            var _self = this;
+            var value = event.target.value;
+            if(value == "" || value <0 ){//判断是否等于0 或者为空
+                _self.payAmount = '';
+                _self.payInfo.payAmount = _self.payInfo.obligation;
+                _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation);
+                return;
+            }else if(Number(value) > _self.payInfo.obligation){//判断大于应付金额
+                _self.payAmount = _self.payInfo.obligation;
+                _self.payInfo.payAmount =  _self.payAmount;
+                _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation-_self.payInfo.payAmount);
+            }else{
+                _self.payAmount = value;
+                _self.payInfo.payAmount = _self.payAmount;
+                _self.balanceAmount = _self.toFixedFn(_self.payInfo.obligation-_self.payInfo.payAmount);
+            }
+        },
+        changePayAmountBlur:function(event){//失去焦点设置金额
+            var _self = this;
+            _self.payAmount = _self.toFixedFn(event.target.value);
+            _self.payInfo.payAmount = _self.payAmount;
+        },
+        changeTab:function(index,item){//选择支付方式切换
+            this.tabIndex = index;
+            switch (this.tabIndex) {
+                case 0:
+                    this.payInfo.payBankNum = 'ALIPAY';
+                    break;
+                case 1:
+                    this.payInfo.payBankNum = '';
+                    break;
+            }
+        },
+        checkMobilePay:function(index,bankNum){//选择移动支付方式
+            var _self = this;
+            _self.mobileTabIndex = index;
+            _self.payInfo.payBankNum = bankNum;
+            switch (index) {
+                case 2:// 企业网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '1';
+                    _self.payInfo.payUserType = 'B2B';
+                    _self.payInfo.payBankNum = _self.bankListB2BData[0].b2B;
+                    break;
+                case 3:// 个人网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '2';
+                    _self.payInfo.payUserType = 'B2C';
+                    _self.payInfo.payBankNum = _self.bankListB2CData[0].b2C;
+                    break;
+            }
+        },
+        checkBankPay:function(index,item){//选择网银支付方式-选择银行
+            var _self = this;
+            _self.bankTabIndex = index;
+            switch (_self.mobileTabIndex) {
+                case 2:// 企业网银
+                    _self.payInfo.payBankNum = item.b2B;
+                    break;
+                case 3:// 个人网银
+                    _self.payInfo.payBankNum = item.b2C;
+                    break;
+            }
+        },
+        copyLinkPaySubmitFn:function(){//复制网银支付链接
+            var _self = this;
+            if(_self.isPaySwitch && _self.pageType === '2'){
+                CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
+                return;
+            }
+            if(_self.payAmount == ''){
+                CAIMEI.dialog('请输入本次支付金额');
+                return;
+            }
+            if(_self.payAmount == 0){
+                CAIMEI.dialog('本次支付金额不能为0');
+                return;
+            }
+            if(_self.payAmount <= 10){
+                CAIMEI.dialog('网银支付的金额必须大于¥12.00');
+                return;
+            }
+            if( _self.orderFlag == 1 && _self.mobileTabIndex === 2){
+                if(_self.payAmount != _self.payableAmount){
+                    CAIMEI.Alert('企业网银支付每次收取的手续费较高,建议一次性全额付款。','确定',false);
+                    return;
+                }
+            }
+            var params = {};
+            if(_self.pageType == 2){
+                params = {
+                    unpaidAmount:_self.payAmount,
+                    vipRecordId: _self.vipRecordId,
+                    payType:_self.payInfo.payType,
+                }
+            }else{
+                params = {
+                    unpaidAmount:_self.payAmount,
+                    shopOrderId:_self.payInfo.shopOrderId,
+                    payType:_self.payInfo.payType
+                }
+            }
+            _self.hlb_CopyLinkPaySubmitFn(params)
+        },
+        hidePayAlert:function(){//隐藏已支付弹窗
+            var _self = this;
+            _self.isPayAlert = false;
+        },
+        RefreshBody:function(){//刷新页面
+            var _self = this;
+            if(_self.payInfo.payBankNum == 'WEIXIN'){
+                if( _self.pageType == '2' ){ // 验证支付(支付会员)
+                    PayApi.PayOrderPayVipCheck({recordId : _self.vipRecordId},function(response){
+                        // console.log(response);
+                        if(response.code === 0){
+                            _self.windowLocationHref('success');
+                        }else{
+                            _self.windowLocationHref('error');
+                        }
+                    });
+                }else if(_self.pageType == '3'){ // 验证支付(优惠券)
+                    PayApi.PayOrderPayCouponCheck({ couponRecordId: _self.couponRecordId },function(response){
+                        // console.log(response);
+                        if(response.code === 0){
+                            _self.windowLocationHref('success');
+                        }else{
+                            _self.windowLocationHref('error');
+                        }
+                    });
+                }else{
+                    PayApi.PayOrderPayWhetherSuccess({shopOrderId: _self.payInfo.shopOrderId, paySuccessCounter:_self.paySuccessCounter,shopOrderId:_self.payInfo.shopOrderId},function(response){
+                        _self.isPayAlert = false;
+                        if(response.code === 0){
+                            _self.windowLocationHref('success');
+                        }else{
+                            _self.windowLocationHref('error');
+                        }
+                    });
+                }
+            }else if(_self.payInfo.payBankNum == 'ALIPAY'){// 校验支付宝支付成功
+                PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
+                    if(response.code === 0){
+                        _self.isPayAlert = false;
+                        var data = response.data;
+                        if(data.rt7_orderStatus === 'SUCCESS'){
+                            _self.windowLocationHref('success');
+                        }else{
+                            _self.windowLocationHref('error');
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg,'确定',false);
+                    }
+                });
+            }else{// 校验网银支付成功
+                PayApi.PayOrderUnionStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
+                    if(response.code === 0){
+                        _self.isPayAlert = false;
+                        var data = response.data;
+                        if(data.rt10_orderStatus === 'SUCCESS'){
+                            _self.windowLocationHref('success');
+                        }else{
+                            _self.windowLocationHref('error');
+                        }
+                    }else{
+                        CAIMEI.Alert(response.msg,'确定',false);
+                    }
+                });
+            }
+        },
+        windowLocationHref:function(state){
+            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 if(_self.pageType === '3') {
+                window.location.href = '/pay/success.html?pageType=coupon&type=' + state + '&payAmount=' + _self.couponInfo.moneyCouponPrice;
+            }else{
+                window.location.href = '/pay/success.html?pageType=www&type='+state+'&payAmount='+_self.payAmount;
+            }
+        },
+        payTypeText:function(state){//处理支付记录文字
+            var stateText = '',
+                stateTextObject={
+                    12:'网银',
+                    13:'微信支付',
+                    14:'支付宝',
+                    15:'微信支付',
+                    16:'余额抵扣',
+                    20:'大额银联转账',
+                };
+            Object.keys(stateTextObject).forEach(function(key) {
+                if(key == state){
+                    stateText = stateTextObject[key]
+                }
+            });
+            return stateText;
+        },
+        toFixedFn:function(text){//处理小数点后两位数
+            return Number(text).toFixed(2);
+        },
+    },
+    mounted: function () {
+        var _self = this;
+        // 判断当前支付是订单支付
+        this.pageType = CAIMEI.getUrlParam('pageType');
+        if (this.pageType === '1') {//二手
+            this.productID = CAIMEI.getUrlParam('productID');
+            this.payAmount = _self.toFixedFn(100);
+            this.isRequest = true;
+            this.payStatusText = '';
+            this.orderFlag = 0;
+        } else if (this.pageType === '2') { // 支付会员
+            this.orderFlag = 0;
+            this.vipRecordId = parseInt(CAIMEI.getUrlParam('vipRecordId'));
+            this.PayOrderOnLineSwitch();
+            // 从本地获取选中的svip套餐信息后删除本地信息
+            this.comboInfo = JSON.parse(CAIMEI.Storage.getItem('comboInfo'));
+            // CAIMEI.Storage.removeItem('comboInfo');
+            // 设置支付金额
+            this.payAmount = this.toFixedFn(this.comboInfo.price);
+            // 获取银行列表
+            this.getBankList();
+        } else if(this.pageType === '3') {// 支付优惠券
+            this.orderFlag = 0;
+            this.couponId = parseInt(CAIMEI.getUrlParam('couponId'));
+            this.couponRecordId = parseInt(CAIMEI.getUrlParam('couponRecordId'));
+            this.initCouponDetail(this.couponId);
+            this.PayOrderOnLineSwitch();
+            this.getBankList();
+        }else{
+            this.orderFlag = 1;
+            this.payInfo.shopOrderId = CAIMEI.getUrlParam('shopOrderId');
+            // 获取银行列表
+            this.getBankList();
+            //正常订单初始化
+            this.infoPayOrderCheckoutCounter();
+        }
+        var viewer = window.navigator.userAgent.toLowerCase();
+        if(viewer.match(/MicroMessenger/i) == 'micromessenger'){
+            this.is_Wechat_bowcr = true;
+            this.payInfo.payBankNum = 'WEIXIN';
+            this.mobileTabIndex = 1;
+        }else{
+            this.is_Wechat_bowcr = false;
+            this.payInfo.payBankNum = 'ALIPAY';
+            this.mobileTabIndex = 0;
+        }
+    }
+});

+ 68 - 98
src/main/resources/static/js/pay/caimei-pay.js

@@ -3,12 +3,14 @@
  */
 var payContainer = new Vue({
     el:"#payContainer",
+    mixins: [hlbPayMixin,mhPayMixin],
     data: {
+        paymentChannel:'HLB',
         isSubMitStatus:false,
         payInfo:{
-            payBankNum:'ICBC_B2B',//银行网管信息
+            payBankNum:'',//银行网管信息
             payCode:'',//链接状态
-            payOrderId:'',//主订单ID
+            shopOrderId:'',//主订单ID
             payUnpaidAmount:0,//本次支付金额
             payTime:'',//链接失效时间
             payLinkLogo:'',
@@ -16,21 +18,22 @@ var payContainer = new Vue({
             payUserType:'',//网银支付类型
             payLinkTypeText:'',//文案
         },
-        bankListData:[],// 银行列表
+        iframe:'',
+        orderFlag:1,// 是否是订单  0非订单 1订单
+        bankListB2BData:[],// 企业网银银行列表
+        bankListB2CData:[],// 个人网银银行列表
         userName :'',
         goodList:'',
-        freight :'',       //运费
-        discountFee:'',//经理折扣
-        balancePayFee:'',//余额抵扣
-        payTotalFee: '',   //合计
-        payableAmount:'',//本次支付金额
-        payment:'', //剩余支付金额
+        totalAmount: '',   //合计
+        payableAmount:'',//剩余支付金额
+        payAmount:'', //本次支付金额
+        obligation:'',// 本次待付金额
+        eachDiscount:'',// 子订单优惠金额
         receiptAmount:'',//已支付金额
         discernReceipt:'',//支付记录
         discernReceiptList:[],//支付记录列表
         orderProductList:[],//商品列表
-        paySuccessCounter:0,
-        tabIndex:0,
+        bankTabIndex:0,
         downHour:'00',//倒计时
         downMinute:'00',//倒计分
         downSecond:'00',//倒计秒
@@ -75,17 +78,23 @@ var payContainer = new Vue({
             var _self = this;
             PayApi.PayOrderLinkData({linkLogo:linkLogo},function(response){
                 if(response.code == 0){
-                    var _data = response.data;
-                    console.log(_data);
-                    _self.payInfo.payOrderId = _data.orderPayLink.orderId;
-                    _self.payInfo.payUnpaidAmount = _data.orderPayLink.unpaidAmount;
-                    _self.payInfo.payTime = decodeURI(_data.time);
-                    _self.payInfo.payLinkType = _data.orderPayLink.payType;
+                    var data = response.data;
+                    console.log(data);
+                    _self.payInfo.shopOrderId = data.orderPayLink.shopOrderId;
+                    _self.orderFlag = data.orderFlag;
+                    _self.payInfo.payUnpaidAmount = _self.payAmount = data.orderPayLink.unpaidAmount;
+                    _self.payInfo.payTime = decodeURI(data.time);
+                    _self.payInfo.payLinkType = data.orderPayLink.payType;
                     _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){
+                    if(_self.paymentChannel == 'HLB'){
+                        _self.payInfo.payUserType =  _self.payInfo.payLinkType == 1 ? 'B2B' : 'B2C';
+                    }else{
+                        _self.payInfo.payUserType =  _self.payInfo.payLinkType == 1 ? 'ENTERPRISE' : 'USER';
+                    }
+                    _self.getBankList();
+                    _self.unpaidAmount = data.orderPayLink.unpaidAmount;
+                    _self.type = data.type;
+                    if(data.code == 0){
                         setTimeout(function () {  //支付倒计时
                             _self.countTime(_self.payInfo.payTime)
                         }, 1000);
@@ -93,9 +102,9 @@ var payContainer = new Vue({
                             _self.infoPayOrderCheckoutCounter();
                         }else{
                             console.log('本次支付链接是支付超级会员');
-                            _self.userName = _data.userName;
-                            _self.vipMonth = _data.orderPayLink.vipMonth;
-                            _self.vipRecordId = _data.orderPayLink.vipRecordId;
+                            _self.userName = data.userName;
+                            _self.vipMonth = data.orderPayLink.vipMonth;
+                            _self.vipRecordId = data.orderPayLink.vipRecordId;
                             _self.isRequest = true;
                         }
                     }else{
@@ -132,28 +141,18 @@ var payContainer = new Vue({
         },
         infoPayOrderCheckoutCounter:function(){//初始化订单数据
             var _self = this;
-            PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.payOrderId},function(response){
+            PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){
                 console.log(response);
                 if(response.code == 0){
                     var data = response.data;
-                    _self.discernReceiptList = data.discernReceipt;
-                    _self.orderProductList = data.orderProductList;
+                    _self.discernReceiptList = data.discernReceipt;// 支付记录
+                    _self.orderProductList = data.orderProductList;// 自订单商品信息
+                    _self.obligation = data.shopOrder.obligation; // 待付金额
+                    _self.eachDiscount = data.shopOrder.eachDiscount; //优惠金额
+                    _self.payableAmount = (data.shopOrder.obligation*100 - _self.payInfo.payUnpaidAmount*100)/100; //剩余支付金额 = 子订单待付金额 - 本次支付金额
                     _self.userName =  data.userName;
-                    _self.freight =  _self.freightText(data.order.freight);
-                    _self.discountFee =  data.order.discountFee;
-                    _self.balancePayFee =  data.order.balancePayFee;
-                    _self.payTotalFee =  data.order.payTotalFee;
-                    _self.receiptAmount=  data.order.receiptAmount;
-                    _self.payableAmount =  _self.payInfo.payUnpaidAmount;
-                    _self.organizeId = data.order.organizeId;
-                    _self.orderNo = data.order.orderNo;
-                    _self.orderTotalFee = data.order.orderTotalFee;
-                    if(data.order.status == '7'){
-                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.payableAmount);
-                    }else{
-                        _self.payment = _self.toFixedFn(_self.payTotalFee - _self.receiptAmount - _self.payableAmount - _self.balancePayFee);
-                    }
-                    _self.paySuccessCounter = data.order.paySuccessCounter;
+                    _self.totalAmount =  data.shopOrder.totalAmount; // 子订单金额合计
+                    _self.receiptAmount=  data.shopOrder.receiptAmount; // 已支付金额
                     _self.isRequest = true;
                 }else{
                     CAIMEI.Alert(response.msg,'确定',false);
@@ -164,7 +163,13 @@ var payContainer = new Vue({
             var _self = this;
             PayApi.PayGetBankCode({},function(response){
                 if(response.code == 0){
-                    _self.bankListData = response.data.list;
+                    _self.bankListB2BData = response.data.B2B;
+                    _self.bankListB2CData = response.data.B2C;
+                    if( _self.payInfo.payLinkType == 1){
+                        _self.payInfo.payBankNum = _self.bankListB2BData[0].b2B;
+                    }else{
+                        _self.payInfo.payBankNum = _self.bankListB2CData[0].b2C;
+                    }
                 }else{
                     console.log('获取网银支付银行列表异常')
                 }
@@ -179,71 +184,37 @@ var payContainer = new Vue({
             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);
+                if(this.paymentChannel == 'HLB'){
+                    _self.hlb_PayVipPcMallPay();
+                }else{
+                    _self.mh_PayVipPcMallPay();
+                }
             }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);
-            }
-        },
-        // 网银支付超级会员
-        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;
+                if(this.paymentChannel == 'HLB'){
+                    _self.hlb_PayOrderPcMallPay();
+                }else{
+                    _self.mh_PayOrderPcMallPay();
                 }
-            });
+            }
         },
-        PayOrderPcMallPay:function(params){//订单网银支付请求
+        RefreshBody:function(){//刷新弹窗
             var _self = this;
-            _self.isSubMitStatus=true;
-            PayApi.PayOrderPcMallPay(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;
+            PayApi.PayOrderUnionStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
+                if(response.code === 0){
+                    _self.isPayAlert = false;
+                    var data = response.data;
+                    var pageType = _self.type === 1 ? 'www' : 'vip&payFlag=1'; // 1 普通订单 2 vip订单
+                    var type = data.rt10_orderStatus === 'SUCCESS' ? 'success' : 'error'; // 成功 or 失败
+                    window.location.href = '/pay/success.html?pageType='+ pageType +'&type='+ type +'&payAmount=' + _self.payInfo.payUnpaidAmount;
                 }else{
                     CAIMEI.Alert(response.msg,'确定',false);
-                    _self.isSubMitStatus=false;
                 }
-            })
-        },
-        RefreshBody:function(){//刷新弹窗
-            var _self = this;
-            _self.isPayAlert = false;
-            PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
-                _self.isPayAlert = false;
-                var data = response.data.data;
-                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){// 选择银行
-            this.tabIndex = index;
+        checkBankPay:function(index,item){// 选择银行
+            this.bankTabIndex = index;
             if( this.payInfo.payLinkType == 1){
                 this.payInfo.payBankNum = item.b2B;
             }else{
@@ -316,7 +287,6 @@ var payContainer = new Vue({
     mounted: function () {
         var _self = this;
         _self.payInfo.payLinkLogo= CAIMEI.getUrlParam('linkLogo');
-        _self.getBankList();
         _self.LinkInfoOrderBank(_self.payInfo.payLinkLogo);
 
     }

+ 87 - 385
src/main/resources/static/js/pay/caimei-paycash.js

@@ -3,6 +3,7 @@
  */
 var payContainer = new Vue({
     el:"#payContainer",
+    mixins: [mhPayMixin],
     data: {
         isSubMitStatus:false,
         payInfo:{
@@ -35,11 +36,13 @@ var payContainer = new Vue({
         discernReceiptList:[],//支付记录列表
         tabIndex:0,//支付方式 0 移动支付 1网银支付 2线下转账
         mbOrderId:'',//支付订单ID
+        bigPayInfo:{},// 银联转账信息
         BankUserType:1,
         mobileTabIndex:null,
         bankTabIndex:0,
         isRequest:false,
         isPayAlert:false,
+        isPayBigAlert:false,
         isPaySwitch:false,
         paySuccessCounter:'',
         bankPayLink_url:'',
@@ -48,7 +51,7 @@ var payContainer = new Vue({
         invoiceStatus:false,
         isReceiptStatus:false,
         onlinePay:'',
-        payStatusText:'使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
+        payStatusText:'使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
         productID:'',//发布商品的ID
         is_Wechat_bowcr:false,
         comboInfo: null, //选中的svip套餐信息
@@ -108,10 +111,10 @@ var payContainer = new Vue({
                     _self.receiptStatus =  data.order.receiptStatus;
                     _self.onlinePay = data.onlinePay;
                     if(_self.receiptAmount>0){
-                        _self.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。';
+                        _self.payStatusText = '使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
                         _self.isReceiptStatus = false;
                     }else{
-                        _self.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
+                        _self.payStatusText = '使用任何一种线上支付方式支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
                         _self.isReceiptStatus = true;
                     }
                     _self.isRequest = true;
@@ -190,85 +193,21 @@ var payContainer = new Vue({
                         CAIMEI.Alert(_self.paymentIimitText,'知道了');
                         return;
                     }
-                    if(_self.payInfo.payBankNum == "WEIXIN"){
-                        if(_self.pageType === '1'){
-                            if(!isPC){
-                                var orderInfo = {//二手微信二维码参数
-                                    pageType:1,
-                                    productId:_self.productID,
-                                    payAmount:_self.payAmount
-                                };
-                                _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
-                                location.href = _self.payInfo.payMobileUrl;
-                            }else{
-                                _self.payInfo.payData = {//二手
-                                    type:_self.payInfo.payBankNum,
-                                    productId:_self.productID,
-                                    amount:_self.payAmount,
-                                    url:_self.payInfo.payMobileUrl
-                                };
-                                CAIMEI.Storage.setItem('payData',JSON.stringify(_self.payInfo.payData));
-                                window.open("/pay/caimei-paymobile.html?pageType=1");
-                                _self.isPayAlert = true;
-                            }
-                        }else if(_self.pageType === '2'){ // 微信支付会员
-                            _self.payVipMiniWxPay();
-                        }else{
-                            if(!isPC){
-                                var orderInfo = {//普通订单微信二维码参数
-                                    pageType:0,
-                                    orderID:_self.payInfo.payOrderId,
-                                    payAmount:_self.payAmount
-                                };
-                                _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
-                                location.href = _self.payInfo.payMobileUrl;
-                            }else{
-                                _self.payInfo.payData = {//正常订单
-                                    type:_self.payInfo.payBankNum,
-                                    orderid:_self.payInfo.payOrderId,
-                                    amount:_self.payAmount,
-                                    url:_self.payInfo.payMobileUrl
-                                };
-                                CAIMEI.Storage.setItem('payData',JSON.stringify(_self.payInfo.payData));
-                                window.open("/pay/caimei-paymobile.html?pageType=0");
-                                _self.isPayAlert = true;
-                            }
+                    if(_self.payInfo.payBankNum == "WEIXIN"){// 微信
+                        if(_self.pageType === '1'){ // 二手
+                            _self.mh_PaySecondMiniWxPay();
+                        }else if(_self.pageType === '2'){ // 会员
+                            _self.mh_PayVipMiniWxPay();
+                        }else{ // 正常订单
+                            _self.mh_PayOrderMiniWxPay();
                         }
-                    }else if(_self.payInfo.payBankNum == "ALIPAY"){//支付宝支付
+                    }else if(_self.payInfo.payBankNum == "ALIPAY"){// 支付宝
                         if(_self.pageType === '1'){// 二手
-                            var params = {//二手
-                                returnUrl:'https://www.caimei365.com/',
-                                productId:_self.productID,
-                            };
-                            _self.PayOrdersecondAliPay(params);
-                        }else if(_self.pageType === '2'){ // 支付宝支付会员
-                            _self.payVipAliPay();
-                        }else{
-                            var params = {//正常订单
-                                payAmount:Math.round(_self.payAmount*100),
-                                returnUrl:'https://www.caimei365.com/',
-                                orderId:_self.payInfo.payOrderId
-                            };
-                            _self.PayOrderPcMallAlipay(params);
-                        }
-                    }else{// 网银支付
-                        if(_self.pageType === '1'){
-                            var params = {//二手
-                                payWay:_self.payInfo.payBankNum,
-                                returnUrl:'https://www.caimei365.com/',
-                                productId:_self.productID,
-                            };
-                            _self.PayOrdersecondUnion(params,_self.payInfo.payBankNum);
-                        }else if(_self.pageType === '2'){ // 网银支付会员
-                            console.log('网银支付会员');
-                        }else{
-                            var params = {//正常订单
-                                payWay:_self.payInfo.payBankNum,
-                                payAmount:Math.round(_self.payAmount*100),
-                                returnUrl:'https://www.caimei365.com/',
-                                orderId:_self.payInfo.payOrderId
-                            };
-                            _self.PayOrderPcMallPay(params,_self.payInfo.payBankNum);
+                            _self.mh_PayOrdersecondAliPay();
+                        }else if(_self.pageType === '2'){ // 会员
+                            _self.mh_PayVipAliPay();
+                        }else{// 正常订单
+                            _self.mh_PayOrderPcMallAlipay();
                         }
                     }
                 }
@@ -280,8 +219,8 @@ var payContainer = new Vue({
                 CAIMEI.dialog('支付系统遇到点小问题,请稍后重试', false);
                 return;
             }
-            if(_self.pageType === '3'){// 移动支付优惠券
-                _self.PayCouponUnionPayFn();
+            if(_self.pageType === '3'){// 网银支付优惠券
+                _self.mh_PayCouponUnionPayFn();
             }else{
                 if(_self.onlinePay == 2){
                     _self.layerConfirm();
@@ -290,114 +229,31 @@ var payContainer = new Vue({
                         CAIMEI.dialog('请选择银行!');
                         return;
                     }
-                    if(_self.payAmount <= 10){
-                        CAIMEI.dialog('网银支付的金额必须大于¥10.00');
+                    if(_self.payAmount <= 12){
+                        CAIMEI.dialog('网银支付的金额必须大于¥12.00');
                         return;
                     }
                     if(_self.pageType === '1'){
-                        var params = {//二手
-                            bankCode:_self.payInfo.payBankNum,
-                            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);
+                        _self.mh_PayOrdersecondUnion()
                     } else if (_self.pageType === '2') { // 网银付会员
-                        _self.payVipPcMallPay();
+                        _self.mh_PayVipPcMallPay();
                     } else {
-                        var params = {//正常订单
-                            payAmount:Math.round(_self.payAmount*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.payInfo.payBankNum);
+                        if(_self.mobileTabIndex === 4){
+                            _self.mh_PayOrderTransferUnion();
+                        }else{
+                            _self.mh_PayOrderPcMallPay();
+                        }
                     }
                 }
             }
         },
-        PayOrderPcMallPay:function(params){// 正常订单网银支付
-            var _self = this;
-            _self.isSubMitStatus=true;
-            PayApi.PayOrderPcMallPay(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);
-                }
-            })
-        },
-        PayOrderPcMallAlipay:function (params){// 正常订单支付宝支付
-            var _self = this;
-            _self.isSubMitStatus=true;
-            PayApi.PayOrderPcMallAlipay(params,function(response){
-                if(response.code == 0){
-                    _self.isPayAlert = true;
-                    _self.isSubMitStatus=false;
-                    _self.mbOrderId = response.data.data.mbOrderId;
-                    _self.payInfo.payMobileUrl = response.data.data.payUrl;
-                    _self.payInfo.payData = {
-                        mbOrderId:_self.mbOrderId,
-                        type:_self.payInfo.payBankNum,
-                        orderid:_self.payInfo.payOrderId,
-                        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=1");
-                    }
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                    _self.isSubMitStatus=false;
-                }
-            })
-        },
-        PayOrdersecondAliPay:function (params){// 二手支付宝支付
-            var _self = this;
-            _self.isSubMitStatus=true;
-            PayApi.PayOrdersecondAliPay(params,function(response){
-                if(response.code == 0){
-                    _self.isPayAlert = true;
-                    _self.isSubMitStatus=false;
-                    _self.mbOrderId = response.data.data.mbOrderId;
-                    _self.payInfo.payMobileUrl = response.data.data.payUrl;
-                    _self.payInfo.payData = {
-                        mbOrderId:_self.mbOrderId,
-                        type:_self.payInfo.payBankNum,
-                        productId:_self.productID,
-                        amount:_self.payAmount,
-                        url:_self.payInfo.payMobileUrl
-                    };
-                    CAIMEI.Storage.setItem('payData',JSON.stringify(_self.payInfo.payData));
-                    window.open("/pay/caimei-paymobile.html?pageType=1");
-                }else{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                    _self.isSubMitStatus=false;
-                }
-            })
-        },
-        PayOrdersecondUnion:function (params){// 二手网银支付
+        PayCouponMiniPayFn:function () {  // 移动支付购买优惠券
             var _self = this;
-            _self.isSubMitStatus=true;
-            PayApi.PayOrdersecondUnion(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{
-                    CAIMEI.Alert(response.msg,'确定',false);
-                    _self.isSubMitStatus=false;
-                }
-            })
+            if(_self.payInfo.payBankNum == "WEIXIN"){
+                _self.mh_PayCouponMiniWxPay();
+            }else if(_self.payInfo.payBankNum == "ALIPAY"){//支付宝支付
+                _self.mh_PayCouponAliPay();
+            }
         },
         changePayAmount:function(event){//输入支付金额控制
             var _self = this;
@@ -437,23 +293,39 @@ var payContainer = new Vue({
             var _self = this;
             _self.mobileTabIndex = index;
             _self.payInfo.payBankNum = bankNum;
-            if( _self.mobileTabIndex==2){
-                _self.bankTabIndex = 0
-                _self.payInfo.payType = '1';
-                _self.payInfo.payUserType = 'ENTERPRISE';
-            }else if(_self.mobileTabIndex == 3){
-                _self.bankTabIndex = 0
-                _self.payInfo.payType = '2';
-                _self.payInfo.payUserType = 'USER';
+            switch (index) {
+                case 2:// 企业网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '1';
+                    _self.payInfo.payUserType = 'ENTERPRISE';
+                    break;
+                case 3:// 个人网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '2';
+                    _self.payInfo.payUserType = 'USER';
+                    break;
+                case 4:// 大额网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '2';
+                    _self.payInfo.payUserType = 'USER';
+                    break;
             }
         },
         checkBankPay:function(index,item){//选择网银支付方式-选择银行
             var _self = this;
             _self.bankTabIndex = index;
-            if( _self.mobileTabIndex == 2 ){
-                _self.payInfo.payBankNum = item.b2B;
-            }else if( _self.mobileTabIndex ==3 ){
-                _self.payInfo.payBankNum = item.b2C;
+            switch (_self.mobileTabIndex) {
+                case 2:// 企业网银
+                    _self.payInfo.payBankNum = item.b2B;
+                    break;
+                case 3:// 个人网银
+                    _self.payInfo.payBankNum = item.b2C;
+                    break;
+                case 4:// 大额网银
+                    _self.bankTabIndex = 0
+                    _self.payInfo.payType = '2';
+                    _self.payInfo.payUserType = 'USER';
+                    break;
             }
         },
         copyLinkPaySubmitFn:function(){//复制网银支付链接
@@ -474,7 +346,7 @@ var payContainer = new Vue({
                     return;
                 }
                 if(_self.payAmount <= 10){
-                    CAIMEI.dialog('网银支付的金额必须大于¥10.00');
+                    CAIMEI.dialog('网银支付的金额必须大于¥12.00');
                     return;
                 }
 
@@ -493,17 +365,7 @@ var payContainer = new Vue({
                         payType:_self.payInfo.payType
                     }
                 }
-                PayApi.PayOrderPayLink(params,function(response){
-                        _self.bankPayLink_url = response.data;
-                        var oInput = document.createElement("textarea");
-                        oInput.value = _self.bankPayLink_url;
-                        document.body.appendChild(oInput);
-                        oInput.select(); // 选择对象
-                        document.execCommand("Copy"); // 执行浏览器复制命令
-                        document.body.removeChild(oInput);
-                        CAIMEI.dialog('复制成功');
-                    }
-                )
+                _self.mh_CopyLinkPaySubmitFn(params)
             }
         },
         copyOrderBtnSubmitFn:function(){//复制订单标识
@@ -522,7 +384,6 @@ var payContainer = new Vue({
         },
         RefreshBody:function(){//刷新页面
             var _self = this;
-
             if(_self.payInfo.payBankNum == 'WEIXIN'){
                 if( _self.pageType == '2' ){ // 验证支付(支付会员)
                     PayApi.PayOrderPayVipCheck({recordId : _self.vipRecordId},function(response){
@@ -564,6 +425,22 @@ var payContainer = new Vue({
                 });
             }
         },
+        RefreshBigBody:function () {// 校验是否完成银联支付
+            var _self = this;
+            PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
+                _self.isPayBigAlert = false;
+                var data = response.data.data;
+                if(data.status === '1'){
+                    setTimeout(()=>{
+                        window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount;
+                    },1000)
+                }else{
+                    setTimeout(()=>{
+                        window.location.href = '/pay/success.html?pageType=unionPay&type=error&payAmount='+_self.payAmount+'&orderId='+_self.payInfo.payOrderId;
+                    },1000)
+                }
+            });
+        },
         windowLocationHref:function(state){
             var _self = this;
             if( _self.pageType === '1'){
@@ -584,6 +461,7 @@ var payContainer = new Vue({
                     14:'支付宝',
                     15:'微信支付',
                     16:'余额抵扣',
+                    20:'大额银联转账',
                 };
             Object.keys(stateTextObject).forEach(function(key) {
                 if(key == state){
@@ -598,189 +476,13 @@ var payContainer = new Vue({
         layerConfirm:function(){
             var _self = this;
             CAIMEI.Alert('本次交易暂不支持线上支付,请使用线下转账方式付款。','知道了',true,function () {
-                _self.payStatusText = '使用微信和网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。';
+                _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.isPayAlert = true;
-                    _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(){
-            if (!isPC) {
-                var orderInfo = {//普通订单微信二维码参数
-                    couponId: 2,
-                    vipId: this.comboInfo.id,
-                    vipRecordId: this.vipRecordId,
-                    payAmount: this.payAmount
-                };
-                this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
-                location.href = this.payInfo.payMobileUrl;
-            } else {
-                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;
-            }
-        },
-        // 网银支付购买优惠券
-        PayCouponUnionPayFn: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.couponInfo.moneyCouponPrice,
-                userType: _self.payInfo.payUserType,
-                couponId: _self.couponId,
-                couponRecordId:_self.couponRecordId,
-                userId:_self.userId,
-                source:2 //支付来源 1 小程序 2 WWW
-            };
-            PayApi.PayCouponUnionPay(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);
-                }
-            });
-        },
-        // 移动支付购买优惠券
-        PayCouponMiniPayFn:function () {
-            var _self = this;
-            if(_self.payInfo.payBankNum == "WEIXIN"){
-                _self.payCouponMiniWxPay();
-            }else if(_self.payInfo.payBankNum == "ALIPAY"){//支付宝支付
-                _self.payCouponAliPay();
-            }
-        },
-        // 微信支付优惠券
-        payCouponMiniWxPay: function(){
-            console.log('微信支付优惠券');
-            if (!isPC) {
-                var orderInfo = {//普通订单微信二维码参数
-                    pageType: 3,
-                    payAmount: this.couponInfo.moneyCouponPrice,
-                    couponRecordId:this.couponRecordId,
-                    couponId: this.couponId,
-                    userId : this.userId
-                };
-                this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
-                location.href = this.payInfo.payMobileUrl;
-            } else {
-                this.payInfo.payData = {
-                    type: this.payInfo.payBankNum,
-                    amount: this.couponInfo.moneyCouponPrice,
-                    url: this.payInfo.payMobileUrl,
-                    couponId:this.couponId,
-                    couponRecordId:this.couponRecordId,
-                    userId:this.userId
-                };
-                CAIMEI.Storage.setItem('payData', JSON.stringify(this.payInfo.payData));
-                window.open("/pay/caimei-paymobile.html?pageType=3");
-                this.isPayAlert = true;
-            }
-        },
-        // 支付宝支付优惠券
-        payCouponAliPay: function(){
-            var _self = this;
-            console.log('支付宝支付优惠券');
-            var params = {
-                returnUrl: 'https://www.caimei365.com/',
-                couponId: _self.couponInfo.couponId,
-                userId:_self.userId,
-                couponRecordId:_self.couponRecordId,
-                source:2 //支付来源 1 小程序 2 WWW
-            };
-            PayApi.PayCouponMiniAliPay(params, function(response){
-                console.log(response);
-                if (response.code === 0) {
-                    _self.isPayAlert = true;
-                    _self.mbOrderId = response.data.data.mbOrderId;
-                    _self.payInfo.payMobileUrl = response.data.data.payUrl;
-                    _self.payInfo.payData = {
-                        type: _self.payInfo.payBankNum,
-                        mbOrderId: _self.mbOrderId,
-                        amount: _self.couponInfo.moneyCouponPrice,
-                        url: _self.payInfo.payMobileUrl,
-                        couponId:_self.couponId,
-                        userId:_self.userId
-                    };
-                    CAIMEI.Storage.setItem('payData', JSON.stringify(_self.payInfo.payData));
-                    if (!isPC) {
-                        location.href = _self.payInfo.payMobileUrl;
-                    } else {
-                        window.open("/pay/caimei-paymobile.html?pageType=3");
-                    }
-                } else {
-                    CAIMEI.Alert(response.msg, '确定', false);
-                    _self.isSubMitStatus = false;
-                }
-            });
-        },
+        closeBigAlert:function () {
+            this.isPayBigAlert = false
+        }
     },
     mounted: function () {
         var _self = this;

+ 89 - 0
src/main/resources/static/js/pay/caimei-paylist.js

@@ -0,0 +1,89 @@
+/**
+ *Created by ZHJY on 2020/7/14.
+ */
+var payContainer = new Vue({
+    el:"#payContainer",
+    data: {
+        loginLoading:true,
+        payInfo:{
+            payType:'',//支付类型 WEIXIN 微信支付  ALIPAY 支付宝支付
+            payOrderId:'', //订单ID
+            payAmount:0,
+            payUnpaidAmount:0,//本次支付金额
+            payMobileUrl:'',//URL
+        },
+        list: [],
+        isRequest:false,
+        orderIdentificationId:'',
+        orderId:0,
+        userId:0,
+        isPayBigAlert:false // 线下转账弹窗
+    },
+    filters: {
+        NumFormat:function(value) {
+            //处理金额
+            if (value) {
+                return Number(value).toFixed(2)
+            } else {
+                return '0.00'
+            }
+        }
+    },
+    methods: {
+        PayOrderShoporders:function(){//初始化订单数据
+            var _self = this;
+            PayApi.PayOrderShoporders({orderId:_self.orderId},function(response){
+                if(response.code == 0){
+                    // console.log(response);
+                    _self.list = response.data;
+                    _self.PayOrderCheckoutCounter();
+                    _self.loginLoading = false;
+                    _self.isRequest = true;
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            })
+        },
+        PayOrderCheckoutCounter:function(){//初始化订单数据
+            var _self = this;
+            PayApi.PayOrderCheckoutCounter({orderId:_self.orderId},function(response){
+                if(response.code == 0){
+                    // console.log(response);
+                    var data = response.data; //金额初始化
+                    _self.paidAmount =  (data.order.payableAmount-data.order.receiptAmount).toFixed(2);
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            })
+        },
+        handlePayOrder:function (shopOrderId) {
+            window.location.href = '/pay/caimei-hlbpay.html?shopOrderId='+shopOrderId;
+        },
+        copyOrderBtnSubmitFn:function(){//复制订单标识
+            var _self = this;
+            var oInput = document.createElement("textarea");
+            oInput.value = _self.orderIdentificationId;
+            document.body.appendChild(oInput);
+            oInput.select(); // 选择对象
+            document.execCommand("Copy"); // 执行浏览器复制命令
+            document.body.removeChild(oInput);
+            CAIMEI.dialog('复制成功');
+        },
+        handleAlert:function () {
+            this.isPayBigAlert = true;
+        },
+        closeBigAlert:function () {
+            this.isPayBigAlert = false;
+        },
+        toFixedFn:function(text){//处理小数点后两位数
+            return Number(text).toFixed(2);
+        },
+    },
+    mounted: function () {
+        var _self = this;
+        _self.orderId = CAIMEI.getUrlParam('orderId');
+        _self.orderIdentificationId = '#'+ _self.orderId+'#';
+        console.log(_self.payInfo.payType);
+        _self.PayOrderShoporders();
+    }
+});

+ 46 - 23
src/main/resources/static/js/pay/caimei-paymobile.js

@@ -7,12 +7,13 @@ var payContainer = new Vue({
         loginLoading:true,
         payInfo:{
             payType:'',//支付类型 WEIXIN 微信支付  ALIPAY 支付宝支付
-            payOrderId:'', //订单ID
+            shopOrderId:'', //订单ID
             payAmount:0,
             payUnpaidAmount:0,//本次支付金额
             payMobileUrl:'',//URL
         },
         orderNo:'',//订单编号
+        shopName:'',// 收款方
         payableAmount:'',//应付金额
         receiptAmount:'',//已支付金额
         balanceAmount:'',//应付剩余金额
@@ -29,6 +30,7 @@ var payContainer = new Vue({
         productID:'',//商品ID
         duration: 0, // 购买的会员期限
         mbOrderId:0,
+        orderFlag:1,// 是否是订单  0非订单 1订单
         couponRecordId:0,
         vipId: null, // vip套餐id
         vipRecordId: undefined,
@@ -58,6 +60,7 @@ var payContainer = new Vue({
         infoPayOrderCheckoutCounter:function(){//初始化订单数据
             var _self = this;
             if( _self.pageType === '1' || _self.pageType === '2' || _self.pageType === '3'){
+                console.log('1111111111111')
                 setTimeout(function(){
                     switch (_self.payInfo.payType) {
                         case 'WEIXIN':
@@ -69,13 +72,15 @@ var payContainer = new Vue({
                     }
                 }, 2000);
             } else {
-                PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.payOrderId},function(response){
+                console.log('22222222222')
+                PayApi.PayOrderCheckoutShoporders({shopOrderId:_self.payInfo.shopOrderId},function(response){
                     if(response.code == 0){
                         // console.log(response);
                         var data = response.data;
-                        _self.orderNo = data.order.orderNo;
-                        _self.paySuccessCounter = data.order.paySuccessCounter;
-                        _self.payInfo.payAmount = data.order.payableAmount-data.order.receiptAmount;
+                        _self.orderNo = data.shopOrder.orderNo;
+                        _self.shopName = data.shopOrder.shopName;
+                        _self.paySuccessCounter = data.shopOrder.paySuccessCounter;
+                        _self.payInfo.payAmount = data.shopOrder.realPay - data.shopOrder.receiptAmount;
                         switch (_self.payInfo.payType) {
                             case 'WEIXIN':
                                 _self.getWrchatQrcodeShow();
@@ -142,12 +147,13 @@ var payContainer = new Vue({
             } else {
                 orderInfo = {//普通订单微信二维码参数
                     pageType:0,
-                    orderID:_self.payInfo.payOrderId,
+                    shopOrderId:_self.payInfo.shopOrderId,
                     payAmount:_self.payAmount
                 };
             }
-            _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&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);
+            // _self.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www-b.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+            _self.payInfo.payMobileUrl = 'https://www-b.caimei365.com/wxcode.html?orderInfo='+encodeURIComponent(JSON.stringify(orderInfo));
+            // console.log(_self.payInfo.payMobileUrl);
             var qrcode = new QRCode(document.getElementById("wx_pay_container"), {
                 render: "canvas", //也可以替换为table
                 text: _self.payInfo.payMobileUrl,
@@ -178,9 +184,8 @@ var payContainer = new Vue({
                         CAIMEI.dialog('支付成功');
                         clearTimeout(timer); //清理定时任务
                         setTimeout(function(){
-                            window.location.href = '/index.html';
+                            _self.windowLocationHref()
                         },2000);
-
                     }else{
                         timer = setTimeout(function(){
                             _self.setTimerWechatPay()
@@ -194,7 +199,7 @@ var payContainer = new Vue({
                         CAIMEI.dialog('支付成功');
                         clearTimeout(timer); //清理定时任务
                         setTimeout(function(){
-                            window.location.href = '/index.html';
+                            _self.windowLocationHref()
                         },2000);
                     }else{
                         timer = setTimeout(function(){
@@ -203,13 +208,13 @@ var payContainer = new Vue({
                     }
                 });
             }else{
-                PayApi.PayOrderPayWhetherSuccess({orderId: _self.payInfo.payOrderId, paySuccessCounter:_self.paySuccessCounter},function(response){
+                PayApi.PayOrderPayWhetherSuccess({orderId: _self.payInfo.shopOrderId, paySuccessCounter:_self.paySuccessCounter,shopOrderId:_self.payInfo.shopOrderId},function(response){
                     // console.log(response);
                     if(response.code === 0){
                         CAIMEI.dialog('支付成功');
                         clearTimeout(timer); //清理定时任务
                         setTimeout(function(){
-                            window.location.href = '/index.html';
+                            _self.windowLocationHref()
                         },2000);
 
                     }else{
@@ -223,14 +228,14 @@ var payContainer = new Vue({
         setTimerAliPay:function () {//定时任务查询支付宝支付结果
             var _self = this;
             var timer;
-            PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId},function(response){
-                var data = response.data.data;
-                if(data.status === '1'){
+            PayApi.PayOrderFindOrderStatus({mbOrderId:_self.mbOrderId,orderFlag:_self.orderFlag,shopOrderId:_self.payInfo.shopOrderId},function(response){
+                var data = response.data;
+                if(data.rt7_orderStatus === 'SUCCESS'){
                     CAIMEI.dialog('支付成功');
                     clearTimeout(timer); //清理定时任务
                     setTimeout(function(){
-                        window.location.href = '/index.html';
-                    },3000);
+                        _self.windowLocationHref()
+                    },2000);
                 }else{
                     timer = setTimeout(function(){
                         _self.setTimerAliPay()
@@ -238,6 +243,18 @@ var payContainer = new Vue({
                 }
             });
         },
+        windowLocationHref:function(){
+            var _self = this;
+            if( _self.pageType === '1'){
+                window.location.href = '/pay/success.html?pageType=second&type=success&payAmount='+_self.payAmount;
+            }else if(_self.pageType === '2'){
+                window.location.href = '/pay/success.html?pageType=vip&type=success&payAmount='+_self.payAmount;
+            }else if(_self.pageType === '3') {
+                window.location.href = '/pay/success.html?pageType=coupon&type=success&payAmount=' + _self.payAmount;
+            }else{
+                window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+_self.payAmount;
+            }
+        },
         hidePayAlert:function(){//隐藏已支付弹窗
             var _self = this;
             _self.isPayAlert = false;
@@ -251,25 +268,30 @@ var payContainer = new Vue({
         var payData = JSON.parse(CAIMEI.Storage.getItem('payData'));
         _self.pageType = CAIMEI.getUrlParam('pageType');
         _self.duration = CAIMEI.getUrlParam('duration');
-        if( _self.pageType === '1'){
+        if( _self.pageType === '1'){//二手
             console.log('二手商品');
             _self.payInfo.payType = payData.type;
+            _self.orderFlag = 0;
             _self.productID = payData.productId;
             _self.payInfo.payMobileUrl = payData.url;
             _self.mbOrderId = payData.mbOrderId;
             _self.payAmount = _self.payableAmount = payData.amount;
-        }else if(_self.pageType === '2'){
+        }else if(_self.pageType === '2'){// 超级会员
             _self.payInfo.payType = payData.type;
+            _self.orderFlag = 0;
             _self.payAmount = _self.payableAmount = payData.amount;
+            _self.mbOrderId = payData.mbOrderId;
             _self.payInfo.payMobileUrl = payData.url;
             _self.vipId = payData.vipId;
             _self.vipRecordId = payData.vipRecordId;
             if(!_self.duration) { // 微信支付获取会员开通月份
                 _self.duration = payData.duration;
             }
-        }else if(_self.pageType === '3'){
+        }else if(_self.pageType === '3'){// 优惠券
             _self.payInfo.payType = payData.type;
+            _self.orderFlag = 0;
             _self.payAmount = _self.payableAmount = payData.amount;
+            _self.mbOrderId = payData.mbOrderId;
             _self.couponRecordId = payData.couponRecordId;
             _self.payInfo.payMobileUrl = payData.url;
             _self.couponId = payData.couponId;
@@ -277,10 +299,11 @@ var payContainer = new Vue({
         }else{
             console.log('订单支付');
             _self.payInfo.payType = payData.type;
-            _self.payInfo.payOrderId = payData.orderid;
+            _self.orderFlag = 1;
+            _self.mbOrderId = payData.mbOrderId;
+            _self.payInfo.shopOrderId = payData.shopOrderId;
             _self.payInfo.payUnpaidAmount = payData.amount;
             _self.payInfo.payMobileUrl = payData.url;
-            _self.mbOrderId = payData.mbOrderId;
             _self.payAmount =_self.payableAmount = _self.payInfo.payUnpaidAmount;
         }
         console.log(_self.payInfo.payType);

+ 67 - 0
src/main/resources/static/js/pay/caimei-payunder.js

@@ -0,0 +1,67 @@
+/**
+ *Created by ZHJY on 2020/7/14.
+ */
+var payContainer = new Vue({
+    el:"#payContainer",
+    data: {
+        payAmount:0,
+        loginLoading:true,
+        isRequest:false,
+        orderIdentificationId:'',
+        orderId:0,
+        userId:0
+    },
+    filters: {
+        NumFormat:function(value) {
+            //处理金额
+            if (value) {
+                return Number(value).toFixed(2)
+            } else {
+                return '0.00'
+            }
+        }
+    },
+    methods: {
+        infoPayOrderCheckoutCounter:function(){//初始化订单数据
+            var _self = this;
+            PayApi.PayOrderCheckoutCounter({orderId:_self.orderId},function(response){
+                if(response.code == 0){
+                    // console.log(response);
+                    var data = response.data;
+                    _self.orderNo = data.order.orderNo;
+                    _self.payAmount = data.order.payableAmount-data.order.receiptAmount;
+                    _self.paySuccessCounter = data.order.paySuccessCounter;
+                    _self.loginLoading = false;
+                    _self.isRequest = true;
+                    switch (_self.payInfo.payType) {
+                        case 'WEIXIN':
+                            _self.getWrchatQrcodeShow();
+                            break;
+                        case 'ALIPAY':
+                            _self.getAliPayQrcodeInfo();
+                            break;
+                    }
+
+                }else{
+                    CAIMEI.Alert(response.msg,'确定',false);
+                }
+            })
+        },
+        copyOrderBtnSubmitFn:function(){//复制订单标识
+            var _self = this;
+            var oInput = document.createElement("textarea");
+            oInput.value = _self.orderIdentificationId;
+            document.body.appendChild(oInput);
+            oInput.select(); // 选择对象
+            document.execCommand("Copy"); // 执行浏览器复制命令
+            document.body.removeChild(oInput);
+            CAIMEI.dialog('复制成功');
+        },
+    },
+    mounted: function () {
+        var _self = this;
+        _self.orderId = CAIMEI.getUrlParam('orderId');
+        _self.orderIdentificationId = '#'+ _self.orderId+'#';
+        _self.infoPayOrderCheckoutCounter();
+    }
+});

+ 5 - 0
src/main/resources/static/js/pay/caimei-success.js

@@ -5,6 +5,7 @@ var payContainer = new Vue({
     el:"#payContainer",
     data: {
         type:'',
+        orderId:0,// 订单Id
         pageType:'',//页面类型
         payAmount:0,//本次支付金额
         isRequest:false,
@@ -38,6 +39,9 @@ var payContainer = new Vue({
             }
             //处理根据类型做跳转
             switch (_self.pageType) {
+                case 'unionPay':
+                    _self.openLink = '/user/order/detail.html?orderId='+_self.orderId;
+                    break;
                 case 'www':
                     _self.linkText = '订单列表';
                     _self.openLink = '/user/order/list.html?state=0';
@@ -95,6 +99,7 @@ var payContainer = new Vue({
     },
     mounted: function () {
         var _self = this;
+        _self.orderId = CAIMEI.getUrlParam('orderId') ? CAIMEI.getUrlParam('orderId') : 0;
         _self.pageType = CAIMEI.getUrlParam('pageType');
         _self.payFlag = CAIMEI.getUrlParam('payFlag');
         _self.type = CAIMEI.getUrlParam('type');

+ 46 - 191
src/main/resources/static/js/pay/caimei-wechatpay.js

@@ -3,9 +3,12 @@
  */
 var payContainer = new Vue({
     el:"#payContainer",
+    mixins: [mhWechatMixin,hlbWechatMixin],
     data: {
-        orderID:'',
-        pageType:'',//页面跳转类型 1为二手 0为订单
+        isSubMitStatus:false,
+        paymentChannel:'HLB',
+        shopOrderId:0,
+        pageType:0,//页面跳转类型 0:订单 1:二手 2:超级会员 3:优惠券 4:认证通会员
         payAmount:0,//本次支付金额
         wechatcode:'',//微信code
         state:0,//随机数
@@ -38,201 +41,53 @@ var payContainer = new Vue({
                 _this.couponRecordId = _this.state.couponRecordId;
                 _this.userId = _this.state.userId;
             }else{
-                _this.orderID = _this.state.orderID;
+                _this.shopOrderId = _this.state.shopOrderId;
             }
         },
         WxPaySubmit:function(){
-            if (this.pageType == 1) {
-                this.WxRequestsecondHandPay();
-            } else if (this.pageType == 2) {
-                this.WxRequestPaymentVipFn();
-            } else if (this.pageType == 3) {
-                this.WxRequestPaymentCouponFn();
-            } else if (this.pageType === 4){
-                this.WxRequestPaymentAuthVipFn();
-            } else {
-                this.WxRequestPaymentFn();
+            if(this.paymentChannel == 'HLB'){
+                this.hlbWechatPayFn()
+            }else{
+                this.mhWechatPayFn()
             }
         },
-        // 会员支付
-        WxRequestPaymentVipFn: function(){
-            var _this = this;
-            var params = {
-                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);
-                }
-            });
-        },
-        WxRequestPaymentAuthVipFn: function(){
-            var _this = this;
-            var params = {
-                code: _this.wechatcode,
-                state: _this.rand(1000, 9999),
-                vipId: _this.vipId,
-                vipRecordId: _this.vipRecordId,
-                returnUrl: 'https://www.caimei365.com/',
-            };
-            PayApi.PayAuthVipMiniWxPay(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);
-                }
-            });
-        },
-        // 优惠券支付
-        WxRequestPaymentCouponFn: function(){
-            var _this = this;
-            var params = {
-                code: _this.wechatcode,
-                state: _this.rand(1000, 9999),
-                userId: _this.userId,
-                couponId: _this.couponId,
-                couponRecordId:_this.couponRecordId,
-                returnUrl: 'https://www.caimei365.com/',
-                source:2 //支付来源 1 小程序 2 WWW
-            };
-            PayApi.PayCouponMiniWxPay(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);
-                    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);
-                }
-            });
-        },
-        WxRequestPaymentFn:function(){ // 普通订单支付
-            var _this = this;
-            var params={
-                    payAmount:Math.round(_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){
-                    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);
-                }
-            })
+        hlbWechatPayFn:function () {// 合利宝
+            console.log('=========>合利宝')
+            switch (this.pageType) {
+                case 1:// 二手
+                    this.hlb_WxRequestsecondHandPay();
+                    break;
+                case 2:// 超级会员
+                    this.hlb_WxRequestPaymentVipFn();
+                    break;
+                case 3:// 优惠券
+                    this.hlb_WxRequestPaymentCouponFn();
+                    break;
+                case 4:// 认证通会员
+                    this.hlb_WxRequestPaymentAuthVipFn();
+                    break;
+                default:// 订单
+                    this.hlb_WxRequestPaymentFn();
+            }
         },
-        onBridgeReady:function(data){
-            console.log('支付验证签名',data);
-            WeixinJSBridge.invoke('getBrandWCPayRequest', {
-                        "appId":data.appId,     //公众号名称,由商户传入
-                        "timeStamp":data.timeStamp,//时间戳,自1970年以来的秒数
-                        "nonceStr":data.nonceStr, //随机串
-                        "package":data.package,
-                        "signType":data.signType,        //微信签名方式:
-                        "paySign":data.paySign,  //微信签名
-                    },
-                function(res) {
-                    if(res.err_msg == "get_brand_wcpay_request:ok"){
-                         CAIMEI.dialog('支付成功');
-                        window.open("https://www.caimei365.com/");
-                    }else if(res.err_msg == "get_brand_wcpay_request:cancel"){
-                         CAIMEI.dialog("用户取消支付,请重新扫码支付");
-                        setTimeout(function(){
-                            WeixinJSBridge.call('closeWindow');
-                        },3000);
-                    }else{
-                         CAIMEI.dialog("支付失败,请重新扫码支付");
-                        setTimeout(function(){
-                            WeixinJSBridge.call('closeWindow');
-                        },3000);
-                    }
-            });
+        mhWechatPayFn:function () {// 米花
+            console.log('=========>米花')
+            switch (this.pageType) {
+                case 1:// 二手
+                    this.mh_WxRequestsecondHandPay();
+                    break;
+                case 2:// 超级会员
+                    this.mh_WxRequestPaymentVipFn();
+                    break;
+                case 3:// 优惠券
+                    this.mh_WxRequestPaymentCouponFn();
+                    break;
+                case 4:// 认证通会员
+                    this.mh_WxRequestPaymentAuthVipFn();
+                    break;
+                default:// 订单
+                    this.mh_WxRequestPaymentFn();
+            }
         },
         rand:function (min,max) {//随机数
             return Math.floor(Math.random()*(max-min))+min;

+ 373 - 0
src/main/resources/static/js/pay/mixin/hlb_payMixin.js

@@ -0,0 +1,373 @@
+'use strict';
+
+var hlbPayMixin = function () {// 合利宝支付渠道
+	return {
+		methods: {
+			hlb_PayOrderPcMallPay:function(){// 正常订单网银支付通道
+				var _this = this;
+				var params = {//正常订单
+					payType:'YL',
+					payAmount:_this.payAmount,
+					bankCode:_this.payInfo.payBankNum,
+					returnUrl:'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_this.payAmount,
+					shopOrderId:_this.payInfo.shopOrderId,
+					userType:_this.payInfo.payUserType
+				};
+				_this.isSubMitStatus=true;
+				console.log('正常订单合利宝网银支付通道',params)
+				PayApi.PayOrderPcMallPay(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.iframe = response.data;
+						_this.$nextTick(() => {
+							var onlineForm = document.getElementById('onlineForm');
+							onlineForm.setAttribute('target', '_blank')
+							_this.mbOrderId = onlineForm.P2_orderId.value
+							console.log('mbOrderId',_this.mbOrderId)
+							_this.isSubMitStatus=false;
+							onlineForm.submit();
+							document.getElementById('onlineForm').remove();
+						})
+					}else{
+						_this.isSubMitStatus=false;
+						CAIMEI.Alert(response.msg,'确定',false);
+					}
+				})
+			},
+			hlb_PayOrderPcScanAliPay:function (){// 正常订单支付宝通道
+				var _this = this;
+				var params = {//正常订单
+					payType:'ZFBEWM',
+					payAmount:_this.payAmount,
+					returnUrl:'https://www.caimei365.com/',
+					shopOrderId:_this.payInfo.shopOrderId
+				};
+				_this.isSubMitStatus=true;
+				console.log('正常订单支付宝通道',params)
+				PayApi.PayOrderPcScanAliPay(params,function(response){
+					if(response.code == 0){
+						console.log('data',response.data)
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.rt5_orderId;
+						_this.payInfo.payMobileUrl = response.data.rt8_qrcode;
+						_this.payInfo.payData = {
+							mbOrderId:_this.mbOrderId,
+							type:_this.payInfo.payBankNum,
+							shopOrderId:_this.payInfo.shopOrderId,
+							amount:_this.payAmount,
+							url:_this.payInfo.payMobileUrl
+						};
+						CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+						if(!isPC){
+							location.href = _this.payInfo.payMobileUrl;
+						}else{
+							window.open("/pay/caimei-paymobile.html?pageType=0");
+						}
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			hlb_PayOrderMiniWxPay:function (){// 正常订单微信支付通道
+				console.log('正常订单微信支付通道')
+				var _this = this;
+				if(!isPC){
+					var orderInfo = {//正常订单微信二维码参数
+						pageType:0,
+						shopOrderId:_this.payInfo.shopOrderId,
+						payAmount:_this.payAmount
+					};
+					_this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www-b.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+					location.href = _this.payInfo.payMobileUrl;
+				}else{
+					_this.payInfo.payData = {//正常订单
+						type:_this.payInfo.payBankNum,
+						shopOrderId:_this.payInfo.shopOrderId,
+						amount:_this.payAmount,
+						url:_this.payInfo.payMobileUrl
+					};
+					CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=0");
+					_this.isPayAlert = true;
+				}
+			},
+			hlb_PayCouponUnionPayFn:function () { // 网银支付购买优惠券
+				console.log('网银支付购买优惠券');
+				var _this = this;
+				var params = {
+					source:2, //支付来源 1 小程序 2 WWW
+					payType:'YL',
+					userId:_this.userId,
+					couponId: _this.couponId,
+					couponRecordId:_this.couponRecordId,
+					bankCode: this.payInfo.payBankNum,
+					returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_this.couponInfo.moneyCouponPrice,
+					userType: _this.payInfo.payUserType,
+				};
+				PayApi.PayCouponUnionPay(params, function (response) {
+					if (response.code == 0) {
+						_this.isPayAlert = true;
+						_this.iframe = response.data
+						_this.$nextTick(() => {
+							var onlineForm = document.getElementById('onlineForm');
+							onlineForm.setAttribute('target', '_blank')
+							_this.mbOrderId = onlineForm.P2_orderId.value
+							console.log('mbOrderId',_this.mbOrderId)
+							_this.isSubMitStatus=false;
+							onlineForm.submit();
+						})
+					} else {
+						_this.isSubMitStatus = false;
+						CAIMEI.Alert(response.msg, '确定', false);
+					}
+				});
+			},
+			hlb_PayCouponMiniWxPay: function(){ // 微信支付优惠券
+				console.log('微信支付优惠券');
+				if (!isPC) {
+					var orderInfo = {//普通订单微信二维码参数
+						pageType: 3,
+						payAmount: this.couponInfo.moneyCouponPrice,
+						couponRecordId:this.couponRecordId,
+						couponId: this.couponId,
+						userId : this.userId
+					};
+					this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www-b.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
+					location.href = this.payInfo.payMobileUrl;
+				} else {
+					this.payInfo.payData = {
+						type: this.payInfo.payBankNum,
+						amount: this.couponInfo.moneyCouponPrice,
+						url: this.payInfo.payMobileUrl,
+						couponId:this.couponId,
+						couponRecordId:this.couponRecordId,
+						userId:this.userId
+					};
+					CAIMEI.Storage.setItem('payData', JSON.stringify(this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=3");
+					this.isPayAlert = true;
+				}
+			},
+			hlb_PayCouponAliPay: function(){ // 支付宝支付优惠券
+				var _this = this;
+				console.log('支付宝支付优惠券');
+				var params = {
+					source:2, //支付来源 1 小程序 2 WWW
+					payType:'ZFBEWM',
+					userId:_this.userId,
+					couponId: _this.couponInfo.couponId,
+					couponRecordId:_this.couponRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				PayApi.PayCouponMiniScanAliPay(params, function(response){
+					console.log(response);
+					if (response.code === 0) {
+						_this.isPayAlert = true;
+						_this.mbOrderId = response.data.rt5_orderId;
+						_this.payInfo.payMobileUrl = response.data.rt8_qrcode;
+						_this.payInfo.payData = {
+							type: _this.payInfo.payBankNum,
+							mbOrderId: _this.mbOrderId,
+							amount: _this.couponInfo.moneyCouponPrice,
+							url: _this.payInfo.payMobileUrl,
+							couponId:_this.couponId,
+							userId:_this.userId
+						};
+						CAIMEI.Storage.setItem('payData', JSON.stringify(_this.payInfo.payData));
+						if (!isPC) {
+							location.href = _this.payInfo.payMobileUrl;
+						} else {
+							window.open("/pay/caimei-paymobile.html?pageType=3");
+						}
+					} else {
+						CAIMEI.Alert(response.msg, '确定', false);
+						_this.isSubMitStatus = false;
+					}
+				});
+			},
+			hlb_PayVipPcMallPay: function(){// 超级会员网银支付通道
+				var _this = this;
+				var params = {
+					payType:'YL',
+					bankCode: this.payInfo.payBankNum,
+					returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=vip&type=success&payAmount='+_this.payAmount,
+					userType: _this.payInfo.payUserType,
+					vipRecordId: _this.vipRecordId
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayVipPcMallPay(params, function (response) {
+					if (response.code == 0) {
+						_this.isPayAlert = true;
+						_this.iframe = response.data;
+						_this.$nextTick(() => {
+							var onlineForm = document.getElementById('onlineForm');
+							onlineForm.setAttribute('target', '_blank')
+							_this.mbOrderId = onlineForm.P2_orderId.value
+							console.log('mbOrderId',_this.mbOrderId)
+							_this.isSubMitStatus=false;
+							onlineForm.submit();
+						})
+					} else {
+						_this.isSubMitStatus = false;
+						CAIMEI.Alert(response.msg, '确定', false);
+					}
+				});
+			},
+			hlb_PayVipScanAliPay: function(){ // 超级会员支付宝通道
+				var _this = this;
+				var params = {
+					payType:'ZFBEWM',
+					vipRecordId: _this.vipRecordId,
+					bankCode: _this.payInfo.payBankNum,
+					userType: _this.payInfo.payUserType,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				_this.isSubMitStatus = true;
+				PayApi.PayVipScanAliPay(params, function(response){
+					console.log(response);
+					if (response.code === 0) {
+						_this.isPayAlert = true;
+						_this.isSubMitStatus = false;
+						_this.mbOrderId = response.data.rt5_orderId;
+						_this.payInfo.payMobileUrl = response.data.rt8_qrcode;
+						_this.payInfo.payData = {
+							mbOrderId: _this.mbOrderId,
+							type: _this.payInfo.payBankNum,
+							amount: _this.payAmount,
+							url: _this.payInfo.payMobileUrl,
+						};
+						CAIMEI.Storage.setItem('payData', JSON.stringify(_this.payInfo.payData));
+						if (!isPC) {
+							location.href = _this.payInfo.payMobileUrl;
+						} else {
+							window.open("/pay/caimei-paymobile.html?pageType=2&duration=" + _this.comboInfo.duration);
+						}
+					} else {
+						CAIMEI.Alert(response.msg, '确定', false);
+						_this.isSubMitStatus = false;
+					}
+				});
+			},
+			hlb_PayVipMiniWxPay: function(){ // 超级会员微信支付通道
+				var _this = this;
+				if (!isPC) {
+					var orderInfo = {//普通订单微信二维码参数
+						pageType: 2,
+						vipId: _this.comboInfo.id,
+						vipRecordId: _this.vipRecordId,
+						payAmount: _this.payAmount
+					};
+					_this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www-b.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
+					location.href = _this.payInfo.payMobileUrl;
+				} else {
+					_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;
+				}
+			},
+			hlb_PayOrdersecondUnion:function (){// 二手发布网银支付通道
+				var _this = this;
+				var params = {//二手
+					payType:'YL',
+					bankCode:_this.payInfo.payBankNum,
+					returnUrl:'https://www.caimei365.com/pay/success.html?pageType=second&type=success&payAmount='+_this.payAmount,
+					productId:_this.productID,
+					userType:_this.payInfo.payUserType,
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayOrdersecondUnion(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.iframe = response.data
+						_this.$nextTick(() => {
+							var onlineForm = document.getElementById('onlineForm');
+							onlineForm.setAttribute('target', '_blank')
+							_this.mbOrderId = onlineForm.P2_orderId.value
+							console.log('mbOrderId',_this.mbOrderId)
+							_this.isSubMitStatus=false;
+							onlineForm.submit();
+						})
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			hlb_PayOrdersecondScanAliPay:function (){// 二手发布支付宝通道
+				var _this = this;
+				var params = {//二手
+					payType:'ZFBEWM',
+					returnUrl:'https://www.caimei365.com/',
+					productId:_this.productID,
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayOrdersecondScanAliPay(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.rt5_orderId;
+						_this.payInfo.payMobileUrl = response.data.rt8_qrcode;
+						_this.payInfo.payData = {
+							mbOrderId:_this.mbOrderId,
+							type:_this.payInfo.payBankNum,
+							productId:_this.productID,
+							amount:_this.payAmount,
+							url:_this.payInfo.payMobileUrl
+						};
+						CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+						window.open("/pay/caimei-paymobile.html?pageType=1");
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			hlb_PaySecondMiniWxPay:function (){// 二手发布微信支付通道
+				var _this = this;
+				if(!isPC){// h5跳 H5支付页
+					var orderInfo = {//二手微信二维码参数
+						pageType:1,
+						productId:_this.productID,
+						payAmount:_this.payAmount
+					};
+					_this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www-b.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+					location.href = _this.payInfo.payMobileUrl;
+				}else{// PC 跳扫码支付页
+					_this.payInfo.payData = {//二手
+						type:_this.payInfo.payBankNum,
+						productId:_this.productID,
+						amount:_this.payAmount,
+						url:_this.payInfo.payMobileUrl
+					};
+					CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=1");
+					_this.isPayAlert = true;
+				}
+			},
+			hlb_CopyLinkPaySubmitFn:function (params) {
+				var _this = this;
+				console.log('合利宝支付链接');
+				PayApi.PayOrderPayLink(params,function(response){
+						_this.bankPayLink_url = response.data;
+						var oInput = document.createElement("textarea");
+						oInput.value = _this.bankPayLink_url;
+						document.body.appendChild(oInput);
+						oInput.select(); // 选择对象
+						document.execCommand("Copy"); // 执行浏览器复制命令
+						document.body.removeChild(oInput);
+						CAIMEI.dialog('复制成功');
+					}
+				)
+			}
+		}
+	};
+}();

+ 140 - 0
src/main/resources/static/js/pay/mixin/hlb_wxMixin.js

@@ -0,0 +1,140 @@
+'use strict';
+
+var hlbWechatMixin = function () {
+	return {
+		methods: {
+			hlb_WxRequestPaymentFn:function(){ // 普通订单合利宝公众号支付
+				var _this = this;
+				_this.isSubMitStatus=true;
+				var params={
+					payType:'GZH',
+					payAmount:parseFloat(_this.payAmount),
+					code:_this.wechatcode,
+					state:_this.rand(1000,9999),
+					shopOrderId:_this.shopOrderId,
+					returnUrl:'https://www.caimei365.com/',
+				};
+				console.log('=========>普通订单合利宝公众号支付',params)
+				PayApi.PayOrderPcScanWxPay(params,function(response){
+					_this.hlb_handlResponse(response)
+				})
+			},
+			hlb_WxRequestPaymentVipFn: function(){ // 超级会员合利宝公众号支付
+				var _this = this;
+				_this.isSubMitStatus=true;
+				var params = {
+					payType:'GZH',
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					vipId: _this.vipId,
+					vipRecordId: _this.vipRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				console.log('=========>超级会员合利宝公众号支付',params)
+				PayApi.PayVipMiniWxPay(params,function(response){
+					_this.hlb_handlResponse(response)
+				});
+			},
+			hlb_WxRequestPaymentCouponFn: function(){// 优惠券合利宝公众号支付
+				var _this = this;
+				_this.isSubMitStatus=true;
+				var params = {
+					payType:'GZH',
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					userId: _this.userId,
+					couponId: _this.couponId,
+					couponRecordId:_this.couponRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+					source:2 //支付来源 1 小程序 2 WWW
+				};
+				console.log('=========>优惠券合利宝公众号支付',params)
+				PayApi.PayCouponMiniWxPay(params,function(response){
+					_this.hlb_handlResponse(response)
+				});
+			},
+			hlb_WxRequestPaymentAuthVipFn: function(){// 认证通会员合利宝公众号支付
+				var _this = this;
+				_this.isSubMitStatus=true;
+				var params = {
+					payType:'GZH',
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					vipId: _this.vipId,
+					vipRecordId: _this.vipRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				console.log('=========>认证通会员合利宝公众号支付',params)
+
+				PayApi.PayAuthVipMiniWxPay(params,function(response){
+					_this.hlb_handlResponse(response)
+				});
+			},
+			hlb_WxRequestsecondHandPay:function(){ // 二手发布合利宝公众号支付
+				var _this = this;
+				_this.isSubMitStatus=true;
+				var params = {
+					payType:'GZH',
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					productId: _this.productId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				console.log('=========>二手发布合利宝公众号支付',params)
+				PayApi.PayOrdersecondWechat(params,function(response){
+					_this.hlb_handlResponse(response)
+				});
+			},
+			hlb_handlResponse:function (response) {
+				var _this = this;
+				if(response.code === 0){
+					var PayInfo = JSON.parse(response.data.rt10_payInfo);
+					if (typeof WeixinJSBridge == "undefined"){
+						if( document.addEventListener ){
+							document.addEventListener('WeixinJSBridgeReady', hlb_onBridgeReady, false);
+						}else if (document.attachEvent){
+							document.attachEvent('WeixinJSBridgeReady', hlb_onBridgeReady);
+							document.attachEvent('onWeixinJSBridgeReady', hlb_onBridgeReady);
+						}
+					}else{
+						_this.hlb_onBridgeReady(PayInfo);
+					}
+					_this.isSubMitStatus=false;
+				}else{
+					CAIMEI.dialog("支付链接已失效,请重新扫码支付");
+					_this.isSubMitStatus=false;
+					setTimeout(function(){
+						WeixinJSBridge.call('closeWindow');
+					},3000);
+				}
+			},
+			hlb_onBridgeReady:function(data){// 调起微信公众号支付
+				console.log('支付验证签名',data);
+				WeixinJSBridge.invoke('getBrandWCPayRequest', {
+						"appId":data.appId,     //公众号名称,由商户传入
+						"timeStamp":data.timeStamp,//时间戳,自1970年以来的秒数
+						"nonceStr":data.nonceStr, //随机串
+						"package":data.package,
+						"signType":data.signType,        //微信签名方式:
+						"paySign":data.paySign,  //微信签名
+				},
+				function(res) {
+					if(res.err_msg == "get_brand_wcpay_request:ok"){
+						CAIMEI.dialog('支付成功');
+						window.open("https://www.caimei365.com/");
+					}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
+						CAIMEI.dialog("用户取消支付,请重新扫码支付");
+						setTimeout(function(){
+							WeixinJSBridge.call('closeWindow');
+						},3000);
+					}else{
+						CAIMEI.dialog("支付失败,请重新扫码支付");
+						setTimeout(function(){
+							WeixinJSBridge.call('closeWindow');
+						},3000);
+					}
+				});
+			},
+		}
+	};
+}();

+ 355 - 0
src/main/resources/static/js/pay/mixin/mh_payMixin.js

@@ -0,0 +1,355 @@
+'use strict';
+
+var mhPayMixin = function () {// 米花支付渠道
+	return {
+		methods: {
+			mh_PayOrderTransferUnion:function () {// 正常订单大额网银转账
+				var _this = this;
+				var params = {
+					payAmount:Math.round(_this.payAmount*100),
+					orderId:_this.payInfo.payOrderId
+				}
+				_this.isSubMitStatus=true;
+				PayApi.PayOrderTransferUnion(params,function(response){
+					if(response.code == 0){
+						_this.isPayBigAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						_this.bigPayInfo = JSON.parse(response.data.data.payInfo)
+						console.log('bigPayInfo',_this.bigPayInfo)
+					}else{
+						_this.isSubMitStatus=false;
+						CAIMEI.Alert(response.msg,'确定',false);
+					}
+				})
+			},
+			mh_PayOrderPcMallPay:function(){// 正常订单网银支付
+				var _this = this;
+				var params = {//正常订单
+					payAmount:Math.round(_this.payAmount*100),
+					bankCode:_this.payInfo.payBankNum,
+					returnUrl:'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_this.payAmount,
+					orderId:_this.payInfo.payOrderId,
+					userType:_this.payInfo.payUserType
+				};
+				_this.isSubMitStatus=true;
+				console.log('正常订单米花网银支付通道',params)
+				PayApi.PayOrderPcMallPay(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						window.open(response.data.data.payUrl);
+					}else{
+						_this.isSubMitStatus=false;
+						CAIMEI.Alert(response.msg,'确定',false);
+					}
+				})
+			},
+			mh_PayOrderPcMallAlipay:function (){// 正常订单支付宝支付
+				var _this = this;
+				var params = {//正常订单
+					payAmount:Math.round(_this.payAmount*100),
+					returnUrl:'https://www.caimei365.com/',
+					orderId:_this.payInfo.payOrderId
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayOrderPcMallAlipay(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						_this.payInfo.payMobileUrl = response.data.data.payUrl;
+						_this.payInfo.payData = {
+							mbOrderId:_this.mbOrderId,
+							type:_this.payInfo.payBankNum,
+							orderid:_this.payInfo.payOrderId,
+							amount:_this.payAmount,
+							url:_this.payInfo.payMobileUrl
+						};
+						CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+						if(!isPC){
+							location.href = _this.payInfo.payMobileUrl;
+						}else{
+							window.open("/pay/caimei-paymobile.html?pageType=1");
+						}
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			mh_PayOrderMiniWxPay:function () {// 正常订单微信支付
+				var _this = this;
+				if(!isPC){
+					var orderInfo = {//普通订单微信二维码参数
+						pageType:0,
+						orderID:_this.payInfo.payOrderId,
+						payAmount:_this.payAmount
+					};
+					_this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+					location.href = _this.payInfo.payMobileUrl;
+				}else{
+					_this.payInfo.payData = {//正常订单
+						type:_this.payInfo.payBankNum,
+						orderid:_this.payInfo.payOrderId,
+						amount:_this.payAmount,
+						url:_this.payInfo.payMobileUrl
+					};
+					CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=0");
+					_this.isPayAlert = true;
+				}
+			},
+			mh_PayCouponUnionPayFn:function () {  // 网银支付购买优惠券
+				console.log('网银支付购买优惠券');
+				var _this = this;
+				var params = {
+					bankCode: this.payInfo.payBankNum,
+					returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_this.couponInfo.moneyCouponPrice,
+					userType: _this.payInfo.payUserType,
+					couponId: _this.couponId,
+					couponRecordId:_this.couponRecordId,
+					userId:_this.userId,
+					source:2 //支付来源 1 小程序 2 WWW
+				};
+				PayApi.PayCouponUnionPay(params, function (response) {
+					if (response.code == 0) {
+						_this.isPayAlert = true;
+						_this.isSubMitStatus = false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						window.open(response.data.data.payUrl);
+					} else {
+						_this.isSubMitStatus = false;
+						CAIMEI.Alert(response.msg, '确定', false);
+					}
+				});
+			},
+			mh_PayCouponAliPay: function(){// 支付宝支付优惠券
+				var _this = this;
+				console.log('支付宝支付优惠券');
+				var params = {
+					returnUrl: 'https://www.caimei365.com/',
+					couponId: _this.couponInfo.couponId,
+					userId:_this.userId,
+					couponRecordId:_this.couponRecordId,
+					source:2 //支付来源 1 小程序 2 WWW
+				};
+				PayApi.PayCouponMiniAliPay(params, function(response){
+					console.log(response);
+					if (response.code === 0) {
+						_this.isPayAlert = true;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						_this.payInfo.payMobileUrl = response.data.data.payUrl;
+						_this.payInfo.payData = {
+							type: _this.payInfo.payBankNum,
+							mbOrderId: _this.mbOrderId,
+							amount: _this.couponInfo.moneyCouponPrice,
+							url: _this.payInfo.payMobileUrl,
+							couponId:_this.couponId,
+							userId:_this.userId
+						};
+						CAIMEI.Storage.setItem('payData', JSON.stringify(_this.payInfo.payData));
+						if (!isPC) {
+							location.href = _this.payInfo.payMobileUrl;
+						} else {
+							window.open("/pay/caimei-paymobile.html?pageType=3");
+						}
+					} else {
+						CAIMEI.Alert(response.msg, '确定', false);
+						_this.isSubMitStatus = false;
+					}
+				});
+			},
+			mh_PayCouponMiniWxPay: function(){// 微信支付优惠券
+				console.log('微信支付优惠券');
+				if (!isPC) {
+					var orderInfo = {//普通订单微信二维码参数
+						pageType: 3,
+						payAmount: this.couponInfo.moneyCouponPrice,
+						couponRecordId:this.couponRecordId,
+						couponId: this.couponId,
+						userId : this.userId
+					};
+					this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
+					location.href = this.payInfo.payMobileUrl;
+				} else {
+					this.payInfo.payData = {
+						type: this.payInfo.payBankNum,
+						amount: this.couponInfo.moneyCouponPrice,
+						url: this.payInfo.payMobileUrl,
+						couponId:this.couponId,
+						couponRecordId:this.couponRecordId,
+						userId:this.userId
+					};
+					CAIMEI.Storage.setItem('payData', JSON.stringify(this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=3");
+					this.isPayAlert = true;
+				}
+			},
+			mh_PayVipPcMallPay: function(){ // 网银支付会员
+				console.log('网银支付会员');
+				var _this = this;
+				var params = {
+					bankCode: this.payInfo.payBankNum,
+					returnUrl: 'https://www.caimei365.com/pay/success.html?pageType=www&type=success&payAmount='+_this.payAmount,
+					userType: _this.payInfo.payUserType,
+					vipRecordId: _this.vipRecordId
+				};
+				PayApi.PayVipPcMallPay(params, function (response) {
+					if (response.code == 0) {
+						_this.isPayAlert = true;
+						_this.isSubMitStatus = false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						window.open(response.data.data.payUrl);
+					} else {
+						_this.isSubMitStatus = false;
+						CAIMEI.Alert(response.msg, '确定', false);
+					}
+				});
+			},
+			mh_PayVipAliPay: function(){ // 支付宝支付会员
+				console.log('支付宝支付会员');
+				var _this = this;
+				var params = {
+					bankCode: _this.payInfo.payBankNum,
+					returnUrl: 'https://www.caimei365.com/',
+					userType: _this.payInfo.payUserType,
+					vipRecordId: _this.vipRecordId
+				};
+				console.log(params);
+				PayApi.PayVipAliPay(params, function(response){
+					console.log(response);
+					if (response.code === 0) {
+						_this.isPayAlert = true;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						_this.payInfo.payMobileUrl = response.data.data.payUrl;
+						_this.payInfo.payData = {
+							mbOrderId: _this.mbOrderId,
+							type: _this.payInfo.payBankNum,
+							amount: _this.payAmount,
+							url: _this.payInfo.payMobileUrl,
+						};
+						CAIMEI.Storage.setItem('payData', JSON.stringify(_this.payInfo.payData));
+						if (!isPC) {
+							location.href = _this.payInfo.payMobileUrl;
+						} else {
+							window.open("/pay/caimei-paymobile.html?pageType=2&duration=" + _this.comboInfo.duration);
+						}
+					} else {
+						CAIMEI.Alert(response.msg, '确定', false);
+						_this.isSubMitStatus = false;
+					}
+				});
+			},
+			mh_PayVipMiniWxPay: function(){ // 微信支付会员
+				if (!isPC) {
+					var orderInfo = {//普通订单微信二维码参数
+						couponId: 2,
+						vipId: this.comboInfo.id,
+						vipRecordId: this.vipRecordId,
+						payAmount: this.payAmount
+					};
+					this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state=" + JSON.stringify(orderInfo) + "#wechat_redirect";
+					location.href = this.payInfo.payMobileUrl;
+				} else {
+					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;
+				}
+			},
+			mh_PayOrdersecondUnion:function (){// 二手网银支付
+				var _this = this;
+				var params = {//二手
+					payWay:_this.payInfo.payBankNum,
+					returnUrl:'https://www.caimei365.com/',
+					productId:_this.productID,
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayOrdersecondUnion(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						window.open(response.data.data.payUrl);
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			mh_PayOrdersecondAliPay:function (){// 二手支付宝支付
+				var _this = this;
+				var params = {//二手
+					returnUrl:'https://www.caimei365.com/',
+					productId:_this.productID,
+				};
+				_this.isSubMitStatus=true;
+				PayApi.PayOrdersecondAliPay(params,function(response){
+					if(response.code == 0){
+						_this.isPayAlert = true;
+						_this.isSubMitStatus=false;
+						_this.mbOrderId = response.data.data.mbOrderId;
+						_this.payInfo.payMobileUrl = response.data.data.payUrl;
+						_this.payInfo.payData = {
+							mbOrderId:_this.mbOrderId,
+							type:_this.payInfo.payBankNum,
+							productId:_this.productID,
+							amount:_this.payAmount,
+							url:_this.payInfo.payMobileUrl
+						};
+						CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+						window.open("/pay/caimei-paymobile.html?pageType=1");
+					}else{
+						CAIMEI.Alert(response.msg,'确定',false);
+						_this.isSubMitStatus=false;
+					}
+				})
+			},
+			mh_PaySecondMiniWxPay:function () {// 二手发布微信支付
+				var _this = this;
+				if(!isPC){
+					var orderInfo = {//二手微信二维码参数
+						pageType:1,
+						productId:_this.productID,
+						payAmount:_this.payAmount
+					};
+					_this.payInfo.payMobileUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx91c4152b60ca91a3&redirect_uri=https://www.caimei365.com/pay/wechatpay.html&response_type=code&scope=snsapi_base&state="+JSON.stringify(orderInfo)+"#wechat_redirect";
+					location.href = _this.payInfo.payMobileUrl;
+				}else{
+					_this.payInfo.payData = {//二手
+						type:_this.payInfo.payBankNum,
+						productId:_this.productID,
+						amount:_this.payAmount,
+						url:_this.payInfo.payMobileUrl
+					};
+					CAIMEI.Storage.setItem('payData',JSON.stringify(_this.payInfo.payData));
+					window.open("/pay/caimei-paymobile.html?pageType=1");
+					_this.isPayAlert = true;
+				}
+			},
+			mh_CopyLinkPaySubmitFn:function (params) {
+				var _this = this;
+				console.log('米花支付链接');
+				PayApi.PayOrderPayLink(params,function(response){
+						_this.bankPayLink_url = response.data;
+						var oInput = document.createElement("textarea");
+						oInput.value = _this.bankPayLink_url;
+						document.body.appendChild(oInput);
+						oInput.select(); // 选择对象
+						document.execCommand("Copy"); // 执行浏览器复制命令
+						document.body.removeChild(oInput);
+						CAIMEI.dialog('复制成功');
+					}
+				)
+			}
+		}
+	};
+}();

+ 123 - 0
src/main/resources/static/js/pay/mixin/mh_wxMixin.js

@@ -0,0 +1,123 @@
+'use strict';
+
+var mhWechatMixin = function () {
+	return {
+		methods: {
+			mh_WxRequestPaymentFn:function(){ // 普通订单米花公众号支付
+				console.log('=========>普通订单米花公众号支付')
+				var _this = this;
+				var params={
+					payAmount:Math.round(_this.payAmount*100),
+					code:_this.wechatcode,
+					state:_this.rand(1000,9999),
+					orderId:_this.orderID,
+					returnUrl:'https://www.caimei365.com/',
+				};
+				PayApi.PayOrderMiniWxPay(params,function(response){
+					_this.mh_handlResponse(response)
+				})
+			},
+			mh_WxRequestPaymentVipFn: function(){	// 会员米花公众号支付
+				var _this = this;
+				var params = {
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					vipId: _this.vipId,
+					vipRecordId: _this.vipRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				PayApi.PayVipMiniWxPay(params,function(response){
+					_this.mh_handlResponse(response)
+				});
+			},
+			mh_WxRequestPaymentCouponFn: function(){// 优惠券米花公众号支付
+				var _this = this;
+				var params = {
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					userId: _this.userId,
+					couponId: _this.couponId,
+					couponRecordId:_this.couponRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+					source:2 //支付来源 1 小程序 2 WWW
+				};
+				PayApi.PayCouponMiniWxPay(params,function(response){
+					_this.mh_handlResponse(response)
+				});
+			},
+			mh_WxRequestPaymentAuthVipFn: function(){// 认证通会员米花公众号支付
+				var _this = this;
+				var params = {
+					code: _this.wechatcode,
+					state: _this.rand(1000, 9999),
+					vipId: _this.vipId,
+					vipRecordId: _this.vipRecordId,
+					returnUrl: 'https://www.caimei365.com/',
+				};
+				PayApi.PayAuthVipMiniWxPay(params,function(response){
+					_this.mh_handlResponse(response)
+				});
+			},
+			mh_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){
+					_this.mh_handlResponse(response)
+				});
+			},
+			mh_handlResponse:function (response) {
+				var _this = this;
+				if(response.code == 0){
+					var PayInfo = JSON.parse(response.data.data.payInfo);
+					if (typeof WeixinJSBridge == "undefined"){
+						if( document.addEventListener ){
+							document.addEventListener('WeixinJSBridgeReady', mh_onBridgeReady, false);
+						}else if (document.attachEvent){
+							document.attachEvent('WeixinJSBridgeReady', mh_onBridgeReady);
+							document.attachEvent('onWeixinJSBridgeReady', mh_onBridgeReady);
+						}
+					}else{
+						_this.mh_onBridgeReady(PayInfo);
+					}
+				}else{
+					CAIMEI.dialog("支付链接已失效,请重新扫码支付");
+					setTimeout(function(){
+						WeixinJSBridge.call('closeWindow');
+					},3000);
+				}
+			},
+			mh_onBridgeReady:function(data){// 调起微信公众号支付
+				console.log('支付验证签名',data);
+				WeixinJSBridge.invoke('getBrandWCPayRequest', {
+						"appId":data.appId,     //公众号名称,由商户传入
+						"timeStamp":data.timeStamp,//时间戳,自1970年以来的秒数
+						"nonceStr":data.nonceStr, //随机串
+						"package":data.package,
+						"signType":data.signType,        //微信签名方式:
+						"paySign":data.paySign,  //微信签名
+					},
+					function(res) {
+						if(res.err_msg == "get_brand_wcpay_request:ok"){
+							CAIMEI.dialog('支付成功');
+							window.open("https://www.caimei365.com/");
+						}else if(res.err_msg == "get_brand_wcpay_request:cancel"){
+							CAIMEI.dialog("用户取消支付,请重新扫码支付");
+							setTimeout(function(){
+								WeixinJSBridge.call('closeWindow');
+							},3000);
+						}else{
+							CAIMEI.dialog("支付失败,请重新扫码支付");
+							setTimeout(function(){
+								WeixinJSBridge.call('closeWindow');
+							},3000);
+						}
+					});
+			},
+		}
+	};
+}();

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

@@ -5,6 +5,7 @@ var productDetail = new Vue({
         showProduct: false,
         productId: 0,
         userId: 0,
+        identity:0,
         number: 0,
         productStock: 0,
         pcActType: 0,
@@ -22,6 +23,7 @@ var productDetail = new Vue({
             supplierId: 0,
             userIdentity: 0 //2-会员机构;3-供应商;4-普通机构
         },
+        product:{},// 商品信息
         ladderList: [],//阶梯价
         promotions: {},//促销活动信息
         promotionsId: 0,//活动id
@@ -66,6 +68,8 @@ var productDetail = new Vue({
         isShowMoreButton:false,
         totalPrice:0,  // 勾选配套商品总价格
         totalNumber:0, // 勾选配套商品总数量
+        isShowCaimeiShop:false,
+        isHideButton:false
     },
     filters: {
         TypeFormat: function (value) {
@@ -170,12 +174,16 @@ var productDetail = new Vue({
             ProductApi.GetProductDdtails({userId: GLOBAL_USER_ID, productId: _self.productId}, function (response) {
                 if (response.code == 0) {
                     var product = response.data;
+                    _self.product = response.data;
                     _self.pcActType = product.pcActType;
                     _self.beautyActFlag = product.beautyActFlag;
                     _self.productTypeName = product.typeName;
                     _self.recommendType = product.recommendType ? product.recommendType : 0;
                     _self.archiveId = product.archiveId; // 保存资料列表id
                     _self.productDetailChose = product.productDetailChose; // 同资质机构显示商品详情
+                    if(product.shopType == 2){
+                        _self.isShowCaimeiShop = true
+                    }
                     if (product.userLike && product.userLike == 1) {// 商品收藏
                         _self.collectionType = true
                     } else {
@@ -206,6 +214,10 @@ var productDetail = new Vue({
                     if (product.stock == 0 && product.validFlag != 3) {
                         _self.disabledText = '售罄'
                     }
+                    if(product.productType === 2 && (GLOBAL_CLUB_TYPE != 1)){
+                        _self.isHideButton = true
+                        _self.handleShowProductType()
+                    }
                     _self.getRecommends();
                     _self.getProdcutArchiveDetails();  //获取资料列表
                     // 获取路由hash标识,设置默认展开tab
@@ -218,6 +230,49 @@ var productDetail = new Vue({
                 }
             })
         },
+        handleShowProductType: function (){
+            if(GLOBAL_USER_ID === 0){//游客
+                CAIMEI.Popup({
+                    content: '<div class="payAlert"><p>该商品仅限医美类机构查看,请注册医美机构后继续查看。有采美账号的,请直接登录。</p></div>',
+                    confitmBtnText: '去注册/登录',
+                    cancelBtnText: '关闭'
+                },function(){
+                    // 确定
+                    window.location.href = '/login.html';
+                },function(){
+                    // 关闭
+                    window.history.back(-1);
+                });
+            }else{
+                if(GLOBAL_USER_IDENTITY === 4 ){// 普通机构
+                    CAIMEI.Popup({
+                        content: '<div class="payAlert"><p>该商品仅限医美类机构查看,请升级为医美机构后继续查看。</p></div>',
+                        confitmBtnText: '去升级',
+                        cancelBtnText: '关闭'
+                    },function(){
+                        // 确定
+                        window.location.href = '/user/setting/upgrade.html';
+                    },function(){
+                        // 关闭
+                        window.history.back(-1);
+                    });
+                }else if( GLOBAL_USER_IDENTITY === 2 ){//会员机构
+                    if(GLOBAL_CLUB_TYPE != 1){
+                        CAIMEI.Popup({
+                            content: '<div class="payAlert"><p>该商品仅限医美类机构查看,您暂无权限。您可去机构资料页面查看机构类型。</p></div>',
+                            confitmBtnText: '去查看资料',
+                            cancelBtnText: '关闭'
+                        },function(){
+                            // 确定
+                            window.location.href = '/user/setting/information.html';
+                        },function(){
+                            // 关闭
+                            window.history.back(-1);
+                        });
+                    }
+                }
+            }
+        },
         getProductPrice: function () {//获取商品价格
             var _self = this;
             if (_self.productId === 0) {
@@ -685,7 +740,7 @@ var productDetail = new Vue({
             ProductApi.createCouponRecord({userId:_self.listQuery.userId, couponId:coupon.couponId}, function (response) {
                 if(response.code == 0){
                     let couponRecordId = response.data.couponRecordId
-                    window.location.href = '/pay/caimei-paycash.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
+                    window.location.href = '/pay/caimei-hlbpay.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
                 }else{
                     if(response.code == -1){//个人机构不能购买
                         CAIMEI.Alert('该优惠券仅限医美机构购买,请升级为医美机构后再次购买。', '去升级', true, function(){
@@ -724,10 +779,13 @@ var productDetail = new Vue({
         this.productStock = $("#productStock").val();
         this.getImages();
         // identity: 0个人,1协销,2会员机构,3供应商,4普通机构
-        // visibility:3:所有人可见,2:普通机构可见,1:会员机构可见
+        // visibility:3:所有人可见,2:普通机构可见,1:会员机构可见 4:仅医美机构可见
         var visible = $("#productVisibility").val() * 1;
+        console.log('visible',visible)
         var identity = GLOBAL_USER_IDENTITY;
-        this.showProduct = visible === 3 || identity === 1 || identity === 2 || (identity === 4 && visible === 2);
+        this.identity = identity
+        console.log('identity',identity)
+        this.showProduct = visible === 3 || visible == 4 || identity === 1 || identity === 2 || (identity === 4 && visible === 2);
         if (!this.showProduct) {
             window.location.href = "/404.html?error=未查询到该商品";
         }

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

@@ -148,6 +148,7 @@ var productList = new Vue({
                     }else{
                         _self.listData = _self.listData.concat(resultData);
                     }
+                    console.log('listData',_self.listData)
                     if( _self.listData.length>0){
                         _self.isListEmpty = false;
                     }else{

+ 7 - 1
src/main/resources/static/js/shopping/cart.js

@@ -537,7 +537,7 @@ var shoppingCart = new Vue({
             ProductApi.createCouponRecord({userId:_self.userId, couponId:coupon.couponId}, function (response) {
                 if(response.code == 0){
                     let couponRecordId = response.data.couponRecordId
-                    window.location.href = '/pay/caimei-paycash.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
+                    window.location.href = '/pay/caimei-hlbpay.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
                 }else{
                     if(response.code == -1){//个人机构不能购买
                         CAIMEI.Alert('该优惠券仅限医美机构购买,请升级为医美机构后再次购买。', '去升级', true, function(){
@@ -569,6 +569,12 @@ var shoppingCart = new Vue({
             var _self = this;
             _self.isShowPopup = false;
         },
+        hanldHrefLink:function (shop) {
+            if(shop.shopType == 2){
+                return;
+            }
+            window.open('/supplier-'+shop.shopId+'.html');
+        }
     },
     created: function () {
         if(globalUserData){

+ 20 - 14
src/main/resources/static/js/shopping/confirm.js

@@ -661,7 +661,7 @@ var shoppingConfirm = new Vue({
             var _self = this;
             if( _self.totalPrice<1000){
                 _self.isModelAlert = true;
-                _self.isModelAlertText = '采购金额过小,将扣除500采美豆。建议您使用微信扫描 以下二维码,进入采美旗下“呵呵商城”小程序购买小额 商品。';
+                _self.isModelAlertText = '采购金额过小,将扣除500采美豆。建议您使用微信扫描 以下二维码,进入采美旗下“颜选美学”小程序购买小额 商品。';
             }else{
                 _self.handleClickOrderSubmitMit()
             }
@@ -721,10 +721,10 @@ var shoppingConfirm = new Vue({
                         productId:item.productId,
                         productNum:item.number,
                         presentNum:0,
-                        productType:item.productType
+                        productType:item.giftType
                     })
                 })
-                return {shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
+                return {splitCode:el.splitCode,shopId:el.shopId,note:el.note?el.note:'',productInfo:productInfo}
             });
             if(_self.orderInvoice.type!=0){
                 _self.orderInvoice.type = parseInt(_self.orderInvoice.type)
@@ -746,27 +746,32 @@ var shoppingConfirm = new Vue({
                         CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:Amount}));
                         window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+data.payTotalFee;
                     }else{//余额抵扣部分订单金额或者未支付的
-                        var order = {
-                            orderId:data.orderId,
-                            orderNo:data.orderNo,
-                            orderMark:data.orderMark,
-                            payableAmount:data.payableAmount
-                        };
-                        CAIMEI.Storage.removeItem('confirmOrderInfo');
-                        CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:order}));
-                        window.location.href = '/pay/caimei-paycash.html?type=confirm&orderId='+data.orderId;
+                        if(data.onlinePayFlag === 1){// 走线下支付
+                            window.location.href = '/pay/caimei-payunder.html?orderId='+data.orderId;
+                        }else{
+                            var order = {
+                                orderId:data.orderId,
+                                orderNo:data.orderNo,
+                                orderMark:data.orderMark,
+                                payableAmount:data.payableAmount
+                            };
+                            CAIMEI.Storage.removeItem('confirmOrderInfo');
+                            CAIMEI.Storage.setItem('confirmOrderInfo',JSON.stringify({data:order}));
+                            window.location.href = '/pay/caimei-paylist.html?orderId='+data.orderId;
+                        }
+
                     }
                 }else if(res.code === -3){
                     _self.isModelAlert = true;
                     _self.isShowConfirm = false;
                     _self.submitLoading = false;
-                    _self.isModelAlertText = '您已有2个采购金额过小的订单,本次不能再进行采购。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。';
+                    _self.isModelAlertText = '您已有2个采购金额过小的订单,本次不能再进行采购。您可使用微信扫描以下二维码,进入采美旗下“颜选美学”小程序购买小额商品。';
                     _self.formatConfirmParam();
                 }else if(res.code === -4){
                     _self.isModelAlert = true;
                     _self.isShowConfirm = false;
                     _self.submitLoading = false;
-                    _self.isModelAlertText = '采美豆不足,不能提交订单。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。';
+                    _self.isModelAlertText = '采美豆不足,不能提交订单。您可使用微信扫描以下二维码,进入采美旗下“颜选美学”小程序购买小额商品。';
                     _self.formatConfirmParam();
                 }else{
                     CAIMEI.Alert(res.msg,'确定',true, function(){
@@ -804,6 +809,7 @@ var shoppingConfirm = new Vue({
         var urlType = getUrlParam("type") ? getUrlParam("type")*1 : "";
         if(globalUserData){
             _self.userId = _self.productParam.userId = _self.cartParam.userId = _self.postageParam.userId = _self.supportParm.userId =   globalUserData.userId;
+            _self.confirmParam.unionId = globalUserData.unionId ? globalUserData.unionId : '';
             _self.confirmParam.clubId = globalUserData.clubId
             _self.userIdentity = globalUserData.identity;
             _self.userToken = globalUserData.token;

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

@@ -146,6 +146,7 @@ var supplierHome = new Vue({
                 function (res) {
                     if (res.code === 0 && res.data) {
                         var result = JSON.parse(res.data);
+                        console.log('result',result)
                         _self.listRecord = result.total;
                         var resultData = setSearchProductList(result.items, _self.userId, function () {
                             _self.$forceUpdate();

+ 6 - 0
src/main/resources/static/js/supplier/list.js

@@ -77,6 +77,12 @@ var supplierList = new Vue({
                 }
             });
         },
+        hanldHrefLink:function (shop) {
+            if(shop.shopType == 2){
+                return;
+            }
+            window.open('/supplier-'+shop.shopId+'.html');
+        }
 
     },
     created: function () {

+ 1 - 1
src/main/resources/static/js/user-center/account/coupon-collection.js

@@ -110,7 +110,7 @@ var orderPage = new Vue({
                 ProductApi.createCouponRecord({userId:_self.listQuery.userId, couponId:coupon.couponId}, function (response) {
                     if(response.code == 0){
                         let couponRecordId = response.data.couponRecordId
-                        window.location.href = '/pay/caimei-paycash.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
+                        window.location.href = '/pay/caimei-hlbpay.html?pageType=3&couponId='+coupon.couponId+'&couponRecordId='+couponRecordId;
                     }else{
                         if(response.code == -1){//个人机构不能购买
                             CAIMEI.Alert('该优惠券仅限医美机构购买,请升级为医美机构后再次购买。', '去升级', true, function(){

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

@@ -142,7 +142,7 @@ var memberPage = new Vue({
                     console.log(response);
                     //本地保存一下选中的会员套餐信息
                     window.localStorage.setItem('comboInfo', JSON.stringify(currentCombo));
-                    window.open('/pay/caimei-paycash.html?pageType=2&vipRecordId=' + response.data);
+                    window.open('/pay/caimei-hlbpay.html?pageType=2&vipRecordId=' + response.data);
                     _self.showRenewPopup = false;
                     _self.showMask = false;
                     // this.showConfirmPopup = true;

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

@@ -163,91 +163,67 @@ var orderPage = new Vue({
                 })
             })
         },
-        showModelTypePop: function(){
-            var _self = this;
-            CAIMEI.Popup({
-                content: '<div class="payAlert">' +
-                           '<p>您已通过线下转账的方式支付了订单部分款项,剩余款项依然需要使用线下转账方式,给您带来的不便敬请谅解</p>' +
-                           '<p>待付金额:<em>¥'+toFloat(_self.orderInfo.pendingPayments)+'</em></p>' +
-                           '<ul><li>开户行:中信银行(深圳泰然支行)</li>' +
-                                '<li>银行卡号:6217 6803 0362 0897</li>' +
-                                '<li>户名:周仁声</li>' +
-                                '<li>订单标识:<em class="no">'+_self.orderIdentificationId+'</em><em class="copy">复制</em></li></ul>' +
-                           '<p><i>请在转账备注中填写上述订单标识,方便财务快速审核,提高发货速度</i></p>' +
-                         '</div>',
-                confitmBtnText: '确定',
-                cancelBtnText: '关闭'
-            },function(){
-                // 确定
-                _self.hidePaymentConfirm();
-            },function(){
-                // 关闭
-            });
-        },
         hanldPayOrderFn:function(){//支付订单
             var _self = this;
-            OrderApi.OrderPaymentValidation({orderId:_self.orderId},function(r){
-                if(r.code*1 === 0){
-                    var dataCode = r.data.code;
-                    _self.payModelData = r.data;
-                    switch(dataCode){
-                        case 1:
-                            _self.modelType = 1;
-                            CAIMEI.Popup({
-                                content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(r.data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后您只需再支付<em>¥'+toFloat(r.data.pendingPayments)+'</em></div>',
-                                confitmBtnText: '抵扣,继续付款',
-                                cancelBtnText: '不抵扣,继续付款'
-                            },function(){
-                                // 抵扣,继续付款
-                                _self.hanldPaymentConfirm(1)
-                            },function(){
-                                // 不抵扣,继续付款
-                                _self.hanldCancelConfirm()
-                            });
-                            break;
-                        case 2:
-                            _self.modelType = 2;
-                            CAIMEI.Popup({
-                                content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(r.data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后订单支付完成</div>',
-                                confitmBtnText: '抵扣',
-                                cancelBtnText: '不抵扣,继续付款'
-                            },function(){
-                                // 抵扣全款
-                                _self.hanldPaymentConfirm(2);
-                            },function(){
-                                // 不抵扣,继续付款
-                                _self.hanldCancelConfirm();
-                            });
-                            break;
-                        case -1:
-                            CAIMEI.Alert('订单已申请全部退款,无需再付款!', '确定', false);
-                            break;
-                        default:
-                            if(r.data.onlinePayFlag == 1){
-                                _self.modelType = 3;
-                                _self.showModelTypePop();
-                            }else{
-                                window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+_self.orderId;
-                            }
+            OrderApi.OrderPaymentValidation({orderId:_self.orderId},function(response){
+                if(response.code == 0){
+                    var data = _self.payModelData = response.data;
+                    if(data.balanceFlag == 1){// 0可以走余额抵扣,1不能走余额抵扣
+                        window.location.href = '/pay/caimei-paylist.html?&orderId='+_self.orderId;
+                    }else{
+                        switch(data.code){
+                            case 1:
+                                _self.modelType = 1;
+                                CAIMEI.Popup({
+                                    content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后您只需再支付<em>¥'+toFloat(data.pendingPayments)+'</em></div>',
+                                    confitmBtnText: '抵扣,继续付款',
+                                    cancelBtnText: '不抵扣,继续付款'
+                                },function(){
+                                    // 抵扣,继续付款
+                                    _self.hanldPaymentConfirm(1)
+                                },function(){
+                                    // 不抵扣,继续付款
+                                    _self.hanldCancelConfirm()
+                                });
+                                break;
+                            case 2:
+                                _self.modelType = 2;
+                                CAIMEI.Popup({
+                                    content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后订单支付完成</div>',
+                                    confitmBtnText: '抵扣',
+                                    cancelBtnText: '不抵扣,继续付款'
+                                },function(){
+                                    // 抵扣全款
+                                    _self.hanldPaymentConfirm(2);
+                                },function(){
+                                    // 不抵扣,继续付款
+                                    _self.hanldCancelConfirm();
+                                });
+                                break;
+                            case -1:
+                                CAIMEI.Alert('订单已申请全部退款,无需再付款!', '确定', false);
+                                break;
+                            default:
+                                if(_self.orderInfo.onlinePayFlag == 1){
+                                    window.location.href = '/pay/caimei-payunder.html?orderId='+_self.orderId;
+                                }else{
+                                    window.location.href = '/pay/caimei-paylist.html?orderId='+_self.orderId;
+                                }
+                        }
                     }
                 }else{
-                    CAIMEI.Alert(r.msg, '确定', false);
+                    CAIMEI.Alert(response.msg, '确定', false);
                 }
             })
         },
-        hanldPaymentConfirm:function() {//余额抵扣跳转
+        hanldPaymentConfirm:function(modelType) {//余额抵扣跳转
             var _self = this;
             OrderApi.OrderBalanceDeduction({orderId: _self.orderId}, function (response) {
                 if (response.code == 0) {
-                    if (_self.modelType === 2) {
+                    if (modelType === 2) {
                         window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+_self.payModelData.pendingPayments;
                     } else {
-                        if (_self.orderInfo.onlinePayFlag === 1) {
-                            _self.modelType = 3;
-                            _self.showModelTypePop();
-                        } else {
-                            window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+_self.orderId;
-                        }
+                        window.location.href = '/pay/caimei-payunder.html?orderId='+_self.orderId;
                     }
                 } else {
                     CAIMEI.Alert(response.msg, '确定', false);
@@ -257,10 +233,9 @@ var orderPage = new Vue({
         hanldCancelConfirm:function(){//不使用余额抵扣直接跳转收银台
             var _self = this;
             if(_self.orderInfo.onlinePayFlag == 1){
-                _self.modelType = 3;
-                _self.showModelTypePop();
+                window.location.href = '/pay/caimei-payunder.html?orderId='+_self.orderId;
             }else{
-                window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+_self.orderId;
+                window.location.href = '/pay/caimei-paylist.html?orderId='+_self.orderId;
             }
         },
         hidePaymentConfirm:function(){//隐藏弹窗

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

@@ -107,7 +107,6 @@ var orderPage = new Vue({
                             CAIMEI.dialog('确认成功',true,function () {
                                 _self.GetQueryOrderListData();
                             });
-
                         }else{
                             CAIMEI.Alert(response.msg, '确定', false);
                         }
@@ -238,93 +237,69 @@ var orderPage = new Vue({
         hanldQueryExpressFn:function(orderId){//查看物流
            window.location.href='/user/order/logistics.html?orderId='+orderId;
         },
-        showModelTypePop: function(){
-            var _self = this;
-            CAIMEI.Popup({
-                content: '<div class="payAlert">' +
-                           '<p>您已通过线下转账的方式支付了订单部分款项,剩余款项依然需要使用线下转账方式,给您带来的不便敬请谅解</p>' +
-                           '<p>待付金额:<em>¥'+toFloat(this.payModelData.pendingPayments)+'</em></p>' +
-                           '<ul><li>开户行:中信银行(深圳泰然支行)</li>' +
-                                '<li>银行卡号:6217 6803 0362 0897</li>' +
-                                '<li>户名:周仁声</li>' +
-                                '<li>订单标识:<em class="no">'+this.orderIdentificationId+'</em><em class="copy">复制</em></li></ul>' +
-                           '<p><i>请在转账备注中填写上述订单标识,方便财务快速审核,提高发货速度</i></p>' +
-                         '</div>',
-                confitmBtnText: '确定',
-                cancelBtnText: '关闭'
-            },function(){
-                // 确定
-                _self.hidePaymentConfirm();
-            },function(){
-                // 关闭
-            });
-        },
         hanldPayOrderFn:function(order,orderId){//支付订单
             var _self = this;
             _self.hanldOrderData = order;
             _self.orderIdentificationId = '#'+orderId+'#';
-            OrderApi.OrderPaymentValidation({orderId:orderId},function(r){
-                if(r.code*1 === 0){
-                    var dataCode = r.data.code;
-                    _self.payModelData = r.data;
-                    switch(dataCode){
-                        case 1:
-                            _self.modelType = 1;
-                            CAIMEI.Popup({
-                                content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(r.data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后您只需再支付<em>¥'+toFloat(r.data.pendingPayments)+'</em></div>',
-                                confitmBtnText: '抵扣,继续付款',
-                                cancelBtnText: '不抵扣,继续付款'
-                            },function(){
-                                // 抵扣,继续付款
-                                _self.hanldPaymentConfirm(1)
-                            },function(){
-                                // 不抵扣,继续付款
-                                _self.hanldCancelConfirm()
-                            });
-                            break;
-                        case 2:
-                            _self.modelType = 2;
-                            CAIMEI.Popup({
-                                content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(r.data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后订单支付完成</div>',
-                                confitmBtnText: '抵扣',
-                                cancelBtnText: '不抵扣,继续付款'
-                            },function(){
-                                // 抵扣全款
-                                _self.hanldPaymentConfirm(2);
-                            },function(){
-                                // 不抵扣,继续付款
-                                _self.hanldCancelConfirm()
-                            });
-                            break;
-                        case -1:
-                            CAIMEI.Alert('订单已申请全部退款,无需再付款!', '确定', false);
-                            break;
-                        default:
-                            if(r.data.onlinePayFlag == 1){
-                                _self.modelType = 3;
-                                _self.showModelTypePop();
-                            }else{
-                                window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+orderId;
-                            }
+            OrderApi.OrderPaymentValidation({orderId:orderId},function(response){
+                if(response.code == 0){
+                    var data = _self.payModelData = response.data;
+                    if(data.balanceFlag == 1){// 0可以走余额抵扣,1不能走余额抵扣
+                        window.location.href = '/pay/caimei-paylist.html?&orderId='+orderId;
+                    }else{
+                        switch(data.code){
+                            case 1:
+                                _self.modelType = 1;
+                                CAIMEI.Popup({
+                                    content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后您只需再支付<em>¥'+toFloat(data.pendingPayments)+'</em></div>',
+                                    confitmBtnText: '抵扣,继续付款',
+                                    cancelBtnText: '不抵扣,继续付款'
+                                },function(){
+                                    // 抵扣,继续付款
+                                    _self.hanldPaymentConfirm(1)
+                                },function(){
+                                    // 不抵扣,继续付款
+                                    _self.hanldCancelConfirm()
+                                });
+                                break;
+                            case 2:
+                                _self.modelType = 2;
+                                CAIMEI.Popup({
+                                    content: '<div class="payAlert">您有采美余额<em>¥'+toFloat(data.ableUserMoney)+'</em>暂未使用,是否需要抵扣订单? 抵扣后订单支付完成</div>',
+                                    confitmBtnText: '抵扣',
+                                    cancelBtnText: '不抵扣,继续付款'
+                                },function(){
+                                    // 抵扣全款
+                                    _self.hanldPaymentConfirm(2);
+                                },function(){
+                                    // 不抵扣,继续付款
+                                    _self.hanldCancelConfirm();
+                                });
+                                break;
+                            case -1:
+                                CAIMEI.Alert('订单已申请全部退款,无需再付款!', '确定', false);
+                                break;
+                            default:
+                                if(_self.hanldOrderData.onlinePayFlag == 1){
+                                    window.location.href = '/pay/caimei-payunder.html?orderId='+orderId;
+                                }else{
+                                    window.location.href = '/pay/caimei-paylist.html?orderId='+orderId;
+                                }
+                        }
                     }
                 }else{
-                    CAIMEI.Alert(r.msg, '确定', false);
+                    CAIMEI.Alert(response.msg, '确定', false);
                 }
             })
         },
-        hanldPaymentConfirm:function(type) {//余额抵扣跳转
+        hanldPaymentConfirm:function(modelType) {//余额抵扣跳转
             var _self = this;
             OrderApi.OrderBalanceDeduction({orderId: _self.payModelData.orderId}, function (response) {
                 if (response.code == 0) {
-                    if (type === 2) {
+                    if (modelType === 2) {
                         window.location.href = '/pay/success.html?pageType=www&type=success&payAmount='+_self.payModelData.pendingPayments;
                     } else {
-                        if (response.data.order.onlinePayFlag === 1) {
-                            _self.modelType = 3;
-                            _self.showModelTypePop();
-                        } else {
-                            window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+_self.hanldOrderData.orderId;
-                        }
+                        window.location.href = '/pay/caimei-payunder.html?orderId='+_self.hanldOrderData.orderId;
                     }
                 } else {
                     CAIMEI.Alert(response.msg, '确定', false);
@@ -334,10 +309,9 @@ var orderPage = new Vue({
         hanldCancelConfirm:function(){//不使用余额抵扣直接跳转收银台
             var _self = this;
             if(_self.hanldOrderData.onlinePayFlag == 1){
-                _self.modelType = 3;
-                _self.showModelTypePop();
+                window.location.href = '/pay/caimei-payunder.html?orderId='+_self.hanldOrderData.orderId;
             }else{
-                window.location.href = '/pay/caimei-paycash.html?type=payfirm&orderId='+_self.hanldOrderData.orderId;
+                window.location.href = '/pay/caimei-paylist.html?orderId='+_self.hanldOrderData.orderId;
             }
         },
         hidePaymentConfirm:function(){//隐藏弹窗

+ 7 - 2
src/main/resources/static/js/utils.js

@@ -141,6 +141,7 @@ CAIMEI.Modal = function(content,cancelText,confitmText,callback){
  * @auth charles
  */
 CAIMEI.Popup = function(params,confirmCallback, cancelCallback){
+    document.body.style.overflow = 'hidden';
     $.confirm({
         boxWidth: (isPC?'300px':'70%'),
         title:'提示',
@@ -154,12 +155,16 @@ CAIMEI.Popup = function(params,confirmCallback, cancelCallback){
             cancel: {
                 text: params.cancelBtnText,
                 btnClass: 'btn-cancel',
-                action: cancelCallback?cancelCallback:function(){}
+                action: cancelCallback?cancelCallback:function(){
+                    document.body.style.overflow = 'auto';
+                }
             },
             confirm:{
                 text: params.confitmBtnText,
                 btnClass: 'btn-confirm',
-                action: confirmCallback?confirmCallback:function(){}
+                action: confirmCallback?confirmCallback:function(){
+                    document.body.style.overflow = 'auto';
+                }
             }
         }
     });

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

@@ -31,8 +31,8 @@
                     <div class="foot-icon hehe">
                         <i class="icon mIcon icon-hehe"></i>
                     </div>
-                    <div class="foot-code"><img src="/img/common/qr_code_hehe.png" alt="采美商城"></div>
-                    <P>呵呵商城</P>
+                    <div class="foot-code"><img src="/img/common/qr_code_yan.jpg" alt="颜选美学"></div>
+                    <P>颜选美学</P>
                 </div>
                 <div class="item">
                     <div class="foot-icon caimei">

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

@@ -79,7 +79,7 @@
                         <select>
                             <option value="0">产品</option>
                             <option value="1">供应商</option>
-                            <option value="2">项目仪器</option>
+<!--                            <option value="2">项目仪器</option>-->
                         </select>
                     </div>
                     <input class="keyword" type="text" placeholder="请输入搜索关键词" maxlength="30"/>

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

@@ -123,6 +123,10 @@
                         <p v-if="detail.productType==1">医美</p>
                         <p v-else>非医美</p>
                     </div>
+                    <div class="info price" v-if="detail.publishIdentity">
+                        <span class="label">提&nbsp;&nbsp;供&nbsp;&nbsp;方:</span>
+                        <p>{{ detail.publishIdentity == 1 ? '采美二手代售' : detail.companyName }}</p>
+                    </div>
                 </div>
                 <div class="ercode" v-if="ShowImage && detail.sold == 0" ><img :class="ShowImage?'show':''" src="/img/flea-market/er.png"/></div>
             </div>

+ 326 - 204
src/main/resources/templates/flea-market/form.html

@@ -13,225 +13,345 @@
 
 <!-- 二手商品发布 -->
 <div id="fleaMarketForm" v-cloak="">
-     <div class="bannerimg"><img src="/img/flea-market/banner@2x.png" v-if="isPC"><img src="/img/flea-market/banner3.png " v-else></div>
-      <div class="my-maintenance" id="secondHandrelease">
-            <div class="mt-top"><span class="mt-title">发布信息</span></div>
-            <div class="newsTitle">
-                <p>欢迎您来到采美365网二手商品市场,您可以在这里发布二手设备、产品信息,每个商品需要收取您100元的展示费,展示期为3个月;为了完整展示您的商品,请您认真填写以下内容,谢谢合作。</p>
-            </div>
-            <div class="mt-bottom">
-                <form id="mt-form" method="post" enctype="multipart/form-data" class="login-form common-form">
-                    <div class="unlogin-label spacing" style="letter-spacing: 1px;margin-right: 0"><span class="red-color">*</span>分类:</div>
-                          <div class="secondradio" >
-                              <div v-for="(item,index) in fenlei"  v-model="secondParams.secondHandType"  @click="secondHandRidio(item)"
-                                  :class="currentId==item.value?'select active':''" class="icon mIcon ">
-                                  {{item.name}}
-                              </div>
-                              <span class="release-tips  errTips icon mIcon" v-show="vShow_secondHandType">{{fromMessage}}</span>
-                          </div>
-                          <div class="secondradio"  v-if="isShow" >
-                            <div v-for="(item ,index) in radioList" :key="index" :class="item.isChecked ? 'select active':''"
-                                    @click="secondHandType(item)" class="icon mIcon ">
-                                   {{item.name}}
-                            </div>
-                             <span class="release-tips errTips icon mIcon" v-show="vShow_instrumentType">{{fromMessage}}</span>
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品品牌:</div>
+    <div class="bannerimg"><img src="/img/flea-market/banner@2x.png" v-if="isPC"><img
+            src="/img/flea-market/banner3.png " v-else></div>
+    <div class="my-maintenance" id="secondHandrelease">
+        <div class="mt-top"><span class="mt-title">发布信息</span></div>
+        <div class="newsTitle">
+            <p>欢迎您来到采美365网二手商品市场,您可以在这里发布二手设备、产品信息,展示期为3个月;为了完整展示您的商品,请您认真填写以下商品基本信息,谢谢合作。</p>
+        </div>
+        <div class="mt-bottom">
+            <form id="mt-form" method="post" enctype="multipart/form-data" class="login-form common-form">
+                <div class="unlogin-label spacing" style="letter-spacing: 1px;margin-right: 0"><span
+                        class="red-color">*</span>发布者身份:
+                </div>
+                <div class="secondradio">
+                    <div v-for="(item,index) in publisherActions"
+                         @click="hadldPublishIdentity(item)"
+                         :class="handleCurrent==item.value?'select active':''" class="icon mIcon ">
+                        {{item.name}}
+                    </div>
+                    <span class="release-tips  errTips icon mIcon"
+                          v-show="vShow_PublishIdentity">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_contactName">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>联系人:
+                    </div>
+                    <input type="text" maxlength="15" v-model="secondParams.contactName" id="linkman"
+                           placeholder="请输入联系人姓名">
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_contactName">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_contactMobile">
+                    <div class="unlogin-label spacing"><span class="red-color">*</span>联系方式:</div>
+                    <input type="text" v-model="secondParams.contactMobile"
+                           oninput="value=value.replace(/[^\d]/g,'')"
+                           @blur="handleMobileInput"
+                           id="phoneNum" maxlength="11" placeholder="请输入联系人手机号">
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_contactMobile">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_checkCode">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>验证码:</div>
+                    <input class="code" type="text"  maxlength="6" v-model="secondParams.checkCode" placeholder="请输入验证码">
+                    <a class="getCode" href="javascript:void(0);" @click="getNewMobileCodeFn" :class="[isMobileDisabled  ? 'disabled' : '']">{{ mobileCodeText }}</a>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_checkCode">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing none" id="vShow_currentId">
+                    <div class="unlogin-label spacing"><span class="red-color">*</span>分类:</div>
+                </div>
+                <div class="secondradio" id="vShowsecondHandType">
+                    <div v-for="(item,index) in fenlei"
+                         @click="secondHandRidio(item)"
+                         :class="currentId==item.value?'select active':''" class="icon mIcon ">
+                        {{item.name}}
+                    </div>
+                    <span class="release-tips  errTips icon mIcon" v-show="vShow_secondHandType">{{fromMessage}}</span>
+                </div>
+                <div class="secondradio" v-if="isShow">
+                    <div v-for="(item ,index) in radioList" :key="index" :class="item.isChecked ? 'select active':''"
+                         @click="secondHandType(item)" class="icon mIcon ">
+                        {{item.name}}
+                    </div>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_instrumentType">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_BrandID">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品品牌:
+                    </div>
 
-                            <div class="select" @click="showBrand">
-                                <span class="placeholder" ><i class="icon brand mIcon"></i>{{ brandname }}</span>
-                                <ul v-show="selectBrand">
-                                    <li  v-for="(item,index) in BrandList"   :key="index" :value='item.id' @click="ChangeBrand(item)">{{item.name}}</li>
-                                </ul>
-                            </div>
-                            <input type="text" v-show="shoplogoTwo" v-model="secondParams.brandName" maxlength="20" id="shoplogoTwo" placeholder="请输入商品品牌">
-                             <div class="release-tips errTips icon mIcon" v-show="vShow_BrandID">{{fromMessage}}</div>
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品名称:</div>
-                            <input type="text" maxlength="40"  id="shopname"  v-model="secondParams.name" placeholder="请输入商品名称,不超过40个汉字">
-                            <div class="release-tips errTips icon mIcon" v-show="vShow_Name">{{fromMessage}}</div>
-                        </div>
-                         <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;">出厂日期:</div>
-                            <input type="text"  v-model="secondParams.fixedYears" id="shopyear" maxlength="10" placeholder="请输入出厂日期 如:2020年06月">
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;">公司名称:</div>
-                            <input type="text"  v-model="secondParams.companyName" id="mechanismname" maxlength="30" placeholder="请输入公司名称,不超过30个汉字">
-                        </div>
-                         <div class="unlogin-item input-item shrink-spacing" >
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>交易价:</div>
-                            <input type="text" style="width: 288px;" maxlength="20" id="shopprice"   oninput="value=value.replace(/[^\d]/g, '')"
-                               v-model="secondParams.price"  placeholder="请输入交易价">
-                            <label class="xiangliao" style="color: #E15616;;margin-left: 15px;position: relative;font-size: 14px">
-                            <input type="checkbox" name="Detailed_chat" v-model="secondParams.detailTalkFlags" @click="Detailed($event)" id="Detailed"><label for="Detailed" class="transactionbox"></label>价格详聊</label>
-                            <span class="showflag" v-show="vShow_detailTalkFlag">(勾选代表同意不显示交易价)</span>
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_Price">{{fromMessage}}</span>
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品成色:</div>
-                            <input type="text" maxlength="10" id="shopcolor"v-model="secondParams.productQuality"  placeholder="请输入商品成色,如“9成新”">
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_shopColor">{{fromMessage}}</span>
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>联系人:</div>
-                            <input type="text" maxlength="15" v-model="secondParams.contactName" id="linkman"  placeholder="请输入联系人姓名">
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_contactName">{{fromMessage}}</span>
+                    <div class="select" @click="showBrand">
+                        <span class="placeholder"><i class="icon brand mIcon"></i>{{ brandname }}</span>
+                        <ul v-show="selectBrand">
+                            <li v-for="(item,index) in BrandList" :key="index" :value='item.id'
+                                @click="ChangeBrand(item)">{{item.name}}
+                            </li>
+                        </ul>
+                    </div>
+                    <input type="text" v-show="shoplogoTwo" v-model="secondParams.brandName" maxlength="20"
+                           id="shoplogoTwo" placeholder="请输入商品品牌">
+                    <div class="release-tips errTips icon mIcon" v-show="vShow_BrandID">{{fromMessage}}</div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_Name">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品名称:
+                    </div>
+                    <input type="text" maxlength="40" id="shopname" v-model="secondParams.name"
+                           placeholder="请输入商品名称,不超过40个汉字">
+                    <div class="release-tips errTips icon mIcon" v-show="vShow_Name">{{fromMessage}}</div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_FixedYears">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;">出厂日期:</div>
+                    <input type="text" v-model="secondParams.fixedYears" id="shopyear" maxlength="10"
+                           placeholder="请输入出厂日期 如:2020年06月">
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" v-if="secondParams.publishIdentity == 2">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>公司名称:</div>
+                    <input type="text" v-model="secondParams.companyName" id="mechanismname" maxlength="30"
+                           placeholder="请输入公司名称,不超过30个汉字">
+                    <div class="release-tips errTips icon mIcon" v-show="vShow_companyName">{{fromMessage}}</div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_Price">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>交易价:
+                    </div>
+                    <input type="text" style="width: 288px;" maxlength="20" id="shopprice"
+                           oninput="value=value.replace(/[^\d]/g, '')"
+                           v-model="secondParams.price" placeholder="请输入交易价">
+                    <label class="xiangliao"
+                           style="color: #E15616;;margin-left: 15px;position: relative;font-size: 14px">
+                        <input type="checkbox" name="Detailed_chat" v-model="secondParams.detailTalkFlags"
+                               @click="Detailed($event)" id="Detailed"><label for="Detailed"
+                                                                              class="transactionbox"></label>价格详聊</label>
+                    <span class="showflag" v-show="vShow_detailTalkFlag">(勾选代表同意不显示交易价)</span>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_Price">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_shopColor">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品成色:
+                    </div>
+                    <input type="text" maxlength="10" id="shopcolor" v-model="secondParams.productQuality"
+                           placeholder="请输入商品成色,如“9成新”">
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_shopColor">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_fileType">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>商品包含的文件:</div>
+                    <div class="secondradio" style="margin-bottom: 0;">
+                        <div class="typelist" v-for="(type ,index) in productFileTypeActions" :key='index' value="type.value"
+                             @click="choiceProductFileType(type, index)" :class="type.isChecked ? 'checked' : ''">
+                            <span class="radio"></span>
+                            <span class="rtext"> {{type.name}}</span>
                         </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing"><span class="red-color">*</span>联系方式:</div>
-                            <input type="text"  v-model="secondParams.contactMobile"  oninput="value=value.replace(/[^\d]/g,'')"  id="phoneNum" maxlength="11" placeholder="请输入联系人手机号">
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_contactMobile">{{fromMessage}}</span>
+                    </div>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_fileType">{{fromMessage}}</span>
+                </div>
+                <div class="release-main-container" v-if="secondParams.publishIdentity == 1">
+                    <div class="release-from">
+                        <div class="release-label">身份验证照片:<span style="color:#ffb496">个人请上传身份证正反面照片(照片大小不超过5M)</span>
                         </div>
-                        <div class="release-main-container">
-                            <div class="release-from">
-                                <div class="release-label">身份验证照片:<span style="color:#ffb496">个人请上传身份证正面照片;机构请上传营业执照照片(照片大小不超过5M)</span></div>
-                                <div class="release-input upload image"  id="uploadAuthenticationImage">
-                                    <div class="upload-file" v-if="secondParams.authenticationImage == ''">
-                                        <i class="icon mIcon add"></i>
-                                        <p class="add-text">验证照片</p>
-                                        <input ref="AuthenticationImage" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadAuthenticationImagesFn">
-                                    </div>
-                                    <div class="upload-file" v-else>
-                                        <img :data-original='secondParams.authenticationImage'
-                                             :src="secondParams.authenticationImage"
-                                             :data-image="secondParams.authenticationImage"
-                                             class="upload-img"
-                                             alt="身份验证照片"
-                                             id="ViewerAuthenticationImage"
-                                             @click="showViewerImageFn"
-                                        >
-                                        <i class="icon mIcon del" @click="removeAuthenticationImagesFn"></i>
-                                    </div>
-                                </div>
+                        <div class="release-input upload image" id="uploadAuthenticationImage">
+                            <div class="upload-file" v-if="secondParams.authenticationImage == ''">
+                                <i class="icon mIcon add"></i>
+                                <p class="add-text">身份证正面</p>
+                                <input ref="AuthenticationImage" type="file" name="file" value="" class="input-file"
+                                       accept="image/png,image/jpeg,image/gif,image/jpg"
+                                       @change="uploadAuthenticationImagesFn">
+                            </div>
+                            <div class="upload-file" v-else>
+                                <img :data-original='secondParams.authenticationImage'
+                                     :src="secondParams.authenticationImage"
+                                     :data-image="secondParams.authenticationImage"
+                                     class="upload-img"
+                                     alt="身份验证照片"
+                                     id="ViewerAuthenticationImage"
+                                     @click="showViewerImageFn"
+                                >
+                                <i class="icon mIcon del" @click="removeAuthenticationImagesFn"></i>
                             </div>
                         </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing" style="letter-spacing: 1px;">采美对接人:</div>
-                            <input type="text" maxlength="15" v-model="secondParams.dockingPeopleName"  placeholder="请输入采美对接人姓名,没有可不填">
+                        <div class="release-input upload image" id="uploadAuthenticationBackImage">
+                            <div class="upload-file" v-if="secondParams.authenticationBackImage == ''">
+                                <i class="icon mIcon add"></i>
+                                <p class="add-text">身份证反面</p>
+                                <input ref="AuthenticationBackImage" type="file" name="file" value="" class="input-file"
+                                       accept="image/png,image/jpeg,image/gif,image/jpg"
+                                       @change="uploadAuthenticationBackImageFn">
+                            </div>
+                            <div class="upload-file" v-else>
+                                <img :data-original='secondParams.authenticationBackImage'
+                                     :src="secondParams.authenticationBackImage"
+                                     :data-image="secondParams.authenticationBackImage"
+                                     class="upload-img"
+                                     alt="身份验证照片"
+                                     id="ViewerAuthenticationBackImage"
+                                     @click="showViewerImageFn"
+                                >
+                                <i class="icon mIcon del" @click="removeAuthenticationBackImageFn"></i>
+                            </div>
                         </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing">采美对接人联系方式:</div>
-                            <input type="text"  v-model="secondParams.dockingPeopleMobile"  oninput="value=value.replace(/[^\d]/g,'')"  maxlength="11" placeholder="请输入采美对接人手机号,没有可不填">
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_caimeiMobile">{{fromMessage}}</span>
+                    </div>
+                </div>
+                <div class="release-main-container" v-if="secondParams.publishIdentity == 2">
+                    <div class="release-from">
+                        <div class="release-label">营业执照照片:<span style="color:#ffb496">请上传营业执照照片(照片大小不超过5M)</span>
                         </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing">商品类型:</div>
-                            <div class="secondradio">
-                                <div class="buy icon mIcon" v-for="(item ,index) in beauty" :key='index' value="item.value" @click="getProductType(item.value)" :class="secondType==item.value?'select active':''">
-                                   {{item.name}}
-                                </div>
+                        <div class="release-input upload image" id="uploadLicenseImage">
+                            <div class="upload-file" v-if="secondParams.licenseImage == ''">
+                                <i class="icon mIcon add"></i>
+                                <p class="add-text">营业执照</p>
+                                <input ref="LicenseImage" type="file" name="file" value="" class="input-file"
+                                       accept="image/png,image/jpeg,image/gif,image/jpg"
+                                       @change="uploadLicenseImageFn">
+                            </div>
+                            <div class="upload-file" v-else>
+                                <img :data-original='secondParams.licenseImage'
+                                     :src="secondParams.licenseImage"
+                                     :data-image="secondParams.licenseImage"
+                                     class="upload-img"
+                                     alt="身份验证照片"
+                                     id="ViewerLicenseImage"
+                                     @click="showViewerImageFn"
+                                >
+                                <i class="icon mIcon del" @click="removeLicenseImageFn"></i>
                             </div>
                         </div>
-                        <div class="unlogin-item input-item address-item shrink-spacing" id="Address">
-                            <div class="unlogin-label spacing"><span class="red-color">*</span>联系地址:</div>
-                            <i class="province icon mIcon selected"></i>
-                        <select class="address-input reg-select province" name="provinceID" id="cProvince" @change="province" >
-                            <option value="" >请选择</option>
-                            <option v-for="(item ,index) in provinceArray" :key="index" :value='item.id' >{{item.name}}</option>
-                        </select>
-                        <i class="cCity icon mIcon selected"></i>
-                        <select class="address-input reg-select city" name="cityID" id="cCity" @change="getcity($event)" >
-                            <option value="" >请选择</option>
-                            <option v-for="(item ,index) in cityArray" :key="index" :value="item.id" >{{item.name}}</option>
-                        </select>
-                        <i class="cTown icon mIcon selected"></i>
-                        <select class="address-input reg-select town" name="townID" id="cTown" @change="getcTown($event)">
-                            <option value="" >请选择</option>
-                            <option v-for="(item ,index) in townArray" :key="index" :value="item.id"  >{{item.name}}</option>
-                        </select>
-                        <span class="release-tips errTips icon mIcon" v-show="vShow_TownId">{{fromMessage}}</span>
-                            <textarea type="text" id="addressDetails" class="border-grey address-details" v-model="secondParams.address" maxlength="50" placeholder="请填写详细地址,如街道/小区/门牌等" /></textarea>
-                           <span class="release-tips errTips icon mIcon" v-show="vShow_Address">{{fromMessage}}</span>
+                    </div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;"><span class="red-color">*</span>收款账号:<span class="red-color">(用于接收最终结算金额)</span></div>
+                    <input type="text" v-model="secondParams.cardNumber" id="cardNumber" maxlength="30" placeholder="请输入收款银行卡卡号">
+                    <div class="release-tips errTips icon mIcon" v-show="vShow_cardNumber">{{fromMessage}}</div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing" id="vShow_caimeiMobile">
+                    <div class="unlogin-label spacing" style="letter-spacing: 1px;">采美对接人:</div>
+                    <input type="text" maxlength="15" v-model="secondParams.dockingPeopleName" placeholder="请输入采美对接人姓名,没有可不填">
+                </div>
+                <div class="unlogin-item input-item shrink-spacing">
+                    <div class="unlogin-label spacing">采美对接人联系方式:</div>
+                    <input type="text" v-model="secondParams.dockingPeopleMobile"
+                           oninput="value=value.replace(/[^\d]/g,'')" maxlength="11" placeholder="请输入采美对接人手机号,没有可不填">
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_caimeiMobile">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing">
+                    <div class="unlogin-label spacing">商品类型:</div>
+                    <div class="secondradio">
+                        <div class="buy icon mIcon" v-for="(item ,index) in beauty" :key='index' value="item.value"
+                             @click="getProductType(item.value)" :class="secondType==item.value?'select active':''">
+                            {{item.name}}
                         </div>
-                        <div class="release-main-container">
-                            <div class="release-from">
-                                <div class="release-label"><span class="red-color" >*</span>商品图片:</div>
-                                <div class="release-input upload image"  id="uploadGoodsImages">
-                                    <div class="upload-file"  v-for="(item, index) in GoodsImagesList" :key="index">
-                                        <img :data-original='item'
-                                             :src="item"
-                                             :data-image="item"
-                                             alt="商品图片"
-                                             class="upload-img"
-                                             :id="'ViewerGoodsImages'+index"
-                                             @click="showViewerImageFn2(index)"
-                                        >
-                                        <i class="icon mIcon del" @click="removeGoodsImagesFn(index)"></i>
-                                    </div>
-                                    <div class="upload-file" v-show="GoodsImagesList.length<5">
-                                        <i class="icon mIcon add"></i>
-                                        <p class="add-text">商品图片</p>
-                                        <input ref="goodsImages" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadGoodsImagesFn">
-                                    </div>
-                                    <div class="form-upload-tips">
-                                        <i class="icon mIcon icon-wen"></i>
-                                        <div class="wen-tips">最多上传5张二手商品图片,请尽量全部上传,单张图片不能超过5M</div>
-                                    </div>
-                                </div>
+                    </div>
+                </div>
+                <div class="unlogin-item input-item address-item shrink-spacing" id="vShow_Address">
+                    <div class="unlogin-label spacing"><span class="red-color">*</span>联系地址:</div>
+                    <i class="province icon mIcon selected"></i>
+                    <select class="address-input reg-select province" name="provinceID" id="cProvince"
+                            @change="province">
+                        <option value="">请选择</option>
+                        <option v-for="(item ,index) in provinceArray" :key="index" :value='item.id'>{{item.name}}
+                        </option>
+                    </select>
+                    <i class="cCity icon mIcon selected"></i>
+                    <select class="address-input reg-select city" name="cityID" id="cCity" @change="getcity($event)">
+                        <option value="">请选择</option>
+                        <option v-for="(item ,index) in cityArray" :key="index" :value="item.id">{{item.name}}</option>
+                    </select>
+                    <i class="cTown icon mIcon selected"></i>
+                    <select class="address-input reg-select town" name="townID" id="cTown" @change="getcTown($event)">
+                        <option value="">请选择</option>
+                        <option v-for="(item ,index) in townArray" :key="index" :value="item.id">{{item.name}}</option>
+                    </select>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_TownId">{{fromMessage}}</span>
+                    <textarea type="text" id="addressDetails" class="border-grey address-details"
+                              v-model="secondParams.address" maxlength="50"
+                              placeholder="请填写详细地址,如街道/小区/门牌等"/></textarea>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_Address">{{fromMessage}}</span>
+                </div>
+                <div class="release-main-container">
+                    <div class="release-from">
+                        <div class="release-label"><span class="red-color">*</span>商品图片:</div>
+                        <div class="release-input upload image" id="uploadGoodsImages">
+                            <div class="upload-file" v-for="(item, index) in GoodsImagesList" :key="index">
+                                <img :data-original='item'
+                                     :src="item"
+                                     :data-image="item"
+                                     alt="商品图片"
+                                     class="upload-img"
+                                     :id="'ViewerGoodsImages'+index"
+                                     @click="showViewerImageFn2(index)"
+                                >
+                                <i class="icon mIcon del" @click="removeGoodsImagesFn(index)"></i>
                             </div>
-                            <span class="release-tips errTips icon mIcon" v-show="vShow_GoodsImages">{{fromMessage}}</span>
-                        </div>
-                         <div class="unlogin-item">
-                            <div class="unlogin-label spacing">商品详细信息:</div>
-                            <div class="textarea-wrapper">
-                                <textarea class="border-grey" maxlength="200" v-model="secondParams.productDetails"  cols="70" id="description" rows="6"  placeholder="请填写商品详细信息,对商品进行更详细的描述"></textarea>
-                                <span id="word-limit">不超过200字</span>
+                            <div class="upload-file" v-show="GoodsImagesList.length<5">
+                                <i class="icon mIcon add"></i>
+                                <p class="add-text">商品图片</p>
+                                <input ref="goodsImages" type="file" name="file" value="" class="input-file"
+                                       accept="image/png,image/jpeg,image/gif,image/jpg" @change="uploadGoodsImagesFn">
                             </div>
-                        </div>
-                        <div class="unlogin-item input-item shrink-spacing">
-                            <div class="unlogin-label spacing">二手出让承诺函文件:<span style="color:#ffb496">(仅支持pdf,大小不能超过20M)</span></div>
-                            <div class="upload-file-view">
-                                <input class="upload-file-name" type="text" v-model="secondParams.fileName" disabled="disabled">
-                                <div class="input-file-btn" v-if="secondParams.ossName == ''">
-                                    上传文件
-                                    <input class="input-file-btn"  ref="CommitmentImagefile" type="file" name="file" value="" accept="*.pdf/*.doc*/.docx"  @change="uploadCommitmentFileFn">
-                                </div>
-                                <i class="icon mIcon del file" v-else @click="deleteCommitmentFile"></i>
+                            <div class="form-upload-tips">
+                                <i class="icon mIcon icon-wen"></i>
+                                <div class="wen-tips">最多上传5张二手商品图片,请尽量全部上传,单张图片不能超过5M</div>
                             </div>
                         </div>
-                        <div class="release-main-container">
-                            <div class="release-from">
-                                <div class="release-label">二手出让承诺函图片:<span style="color:#ffb496">(若不方便上传承诺函文件,可对承诺函进行拍照或者截图,再上传图片,照片大小不超过5M)</span></div>
-                                <div class="release-input upload image"  id="uploadCommitmentImage">
-                                    <div class="upload-file" v-if="secondParams.commitmentImage == ''">
-                                        <i class="icon mIcon add"></i>
-                                        <p class="add-text">承诺函图片</p>
-                                        <input ref="CommitmentImage" type="file" name="file" value="" class="input-file" accept="image/png,image/jpeg,image/gif,image/jpg"  @change="uploadCommitmentImagesFn">
-                                    </div>
-                                    <div class="upload-file" v-else>
-                                        <img :data-original='secondParams.commitmentImage'
-                                             :src="secondParams.commitmentImage"
-                                             :data-image="secondParams.commitmentImage"
-                                             class="upload-img"
-                                             alt="身份验证照片"
-                                             id="ViewerCommitmentImage"
-                                             @click="showViewerImageFn1"
-                                        >
-                                        <i class="icon mIcon del" @click="removeCommitmentImagesFn"></i>
-                                    </div>
-                                </div>
-                            </div>
+                    </div>
+                    <span class="release-tips errTips icon mIcon" v-show="vShow_GoodsImages">{{fromMessage}}</span>
+                </div>
+                <div class="unlogin-item">
+                    <div class="unlogin-label spacing">商品详细信息:</div>
+                    <div class="textarea-wrapper">
+                        <textarea class="border-grey" maxlength="200" v-model="secondParams.productDetails" cols="70"
+                                  id="description" rows="6" placeholder="请填写商品详细信息,对商品进行更详细的描述"></textarea>
+                        <span id="word-limit">不超过200字</span>
+                    </div>
+                </div>
+                <div class="unlogin-item input-item shrink-spacing">
+                    <div class="unlogin-label spacing">二手出让承诺函签署文件:<span style="color:#ffb496">(仅支持pdf,大小不能超过20M)</span>
+                    </div>
+                    <div class="upload-file-view">
+                        <input class="upload-file-name" type="text" v-model="secondParams.fileName" disabled="disabled">
+                        <div class="input-file-btn" v-if="secondParams.ossName == ''">
+                            上传文件
+                            <input class="input-file-btn" ref="CommitmentImagefile" type="file" name="file" value=""
+                                   accept="*.pdf/*.doc*/.docx" @change="uploadCommitmentFileFn">
                         </div>
-                        <div class="unlogin-item">
-                            <div class="unlogin-label spacing" ><span class="red-color">*</span>免责声明:</div>
-                            <div class="textarea-wrapper" style="letter-spacing: 1.5px">
-                                鉴于本网站提供的二手版块信息包括但不限于公司名称,商品的简介、性能、描述与说明,相关图片、视频等均由卖家自行提供,
-                                由卖家对其提供的信息承担相应法律责任。买家应自行甄别商品信息并查验商品性状。
-                                本网站对二手版块中买卖双方的交易不提供任何形式的担保与保证,特此声明!
+                        <i class="icon mIcon del file" v-else @click="deleteCommitmentFile"></i>
+                    </div>
+                </div>
+                <div class="release-main-container">
+                    <div class="release-from">
+                        <div class="release-label">二手出让承诺函签署图片:<span style="color:#ffb496">(若不方便上传承诺函签署文件,可对已签署的承诺函进行拍照或者截图,再上传图片,照片大小不超过5M)</span>
+                        </div>
+                        <div class="release-input upload image" id="uploadCommitmentImage">
+                            <div class="upload-file" v-if="secondParams.commitmentImage == ''">
+                                <i class="icon mIcon add"></i>
+                                <p class="add-text">承诺函图片</p>
+                                <input ref="CommitmentImage" type="file" name="file" value="" class="input-file"
+                                       accept="image/png,image/jpeg,image/gif,image/jpg"
+                                       @change="uploadCommitmentImagesFn">
+                            </div>
+                            <div class="upload-file" v-else>
+                                <img :data-original='secondParams.commitmentImage'
+                                     :src="secondParams.commitmentImage"
+                                     :data-image="secondParams.commitmentImage"
+                                     class="upload-img"
+                                     alt="身份验证照片"
+                                     id="ViewerCommitmentImage"
+                                     @click="showViewerImageFn1"
+                                >
+                                <i class="icon mIcon del" @click="removeCommitmentImagesFn"></i>
                             </div>
                         </div>
-                         <div class="BtnAll" >
-                                <button type="button" class="Read" ><input type="checkbox" @click="changeBox"/>已阅读</button>
-                                <button type="button"  @click="submitBtn" id="btn-submit">发布</button>
-                          </div>
-                          <span class="release-tips errTips icon mIcon" v-show="vShow_checkBox">{{fromMessage}}</span>
-                </form>
-          </div>
-         <div class="secondBj thebj"   v-show="PopupShow" :class="PopupShow ? 'show' :'' ">
-             <div class="bjmain theresult">
+                    </div>
+                </div>
+                <div class="release-button">
+                    <div class="buttton-main">
+                        <div class="text">
+                            <input type="checkbox" @click="changeBox"/>
+                            已阅读并同意采美
+                            <span><a href="/help/1039.html" target="_blank" style="color: #1890F9;">《二手出让协议》</a></span>
+                            <span class="release-tips errTips icon mIcon" v-show="vShow_checkBox">{{fromMessage}}</span>
+                        </div>
+                        <button type="button" @click="submitBtn" id="btn-submit">发布</button>
+                    </div>
+                </div>
+            </form>
+
+        </div>
+        <div class="secondBj thebj" v-show="PopupShow" :class="PopupShow ? 'show' :'' ">
+            <div class="bjmain theresult">
                 <span class="title">提示</span>
                 <p>{{ tipsContentText }}</p>
                 <div class="paybtn">
@@ -239,7 +359,7 @@
                     <span class="thegopay gozhofubao" @click="cancelButtonFn">{{ cancelButtonText }}</span>
                 </div>
                 <div class="close closebtn" @click="closePopupShow">×</div>
-             </div>
+            </div>
         </div>
     </div>
 </div>
@@ -247,7 +367,9 @@
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
-<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/second.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript"
+        th:src="@{/js/common/serviceapi/second.service.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/flea-market/form.js(v=${version})}"></script>
 </body>
 </html>

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

@@ -66,7 +66,7 @@
                   </div>
                   <div class="content_list">
                     <p>2.自主发布</p>
-                    <span> 卖家每上传一款商品,占据一个展示位,<span class="bluefont">平台收取每款商品100元的展示费用 ,有效期为<span style="font-size: 48px">6</span>个月</span>
+                    <span> 卖家每上传一款商品,占据一个展示位,<span class="bluefont">有效期为<span style="font-size: 48px">3</span>个月</span>
                            平台提供与该商品匹配的详情信息以及文章信息,降低买家决策成本,以促进销售。特殊政策除外(如特定免费时段)。</span>
                   </div>
                    <div class="content_list">

+ 34 - 0
src/main/resources/templates/help/details.html

@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+  <title>采美365网-公告内容</title>
+  <template th:replace="components/head-link"></template>
+  <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+  <link th:href="@{/css/help/details.css(v=${version})}" rel="stylesheet" type="text/css">
+  <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+<div id="beansPage" v-cloak>
+  <div class="navLayout" v-cloak>
+    <div class="wrap clear">
+      <!--loading-->
+      <div v-if="isRequset" class="loading">
+        <img src="/img/base/loading.gif">
+      </div>
+      <div class="news-container clear" v-else>
+        <div class="news-title" v-text="newsData.title"></div>
+        <div class="news-container-html" v-html="newsData.capacity"></div>
+      </div>
+    </div>
+  </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/utils.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/help/details.js(v=${version})}"></script>
+</body>
+</html>

+ 66 - 0
src/main/resources/templates/help/news.html

@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+  <title>采美365网-所有公告</title>
+  <template th:replace="components/head-link"></template>
+  <link th:href="@{/css/base/center.css(v=${version})}" rel="stylesheet" type="text/css">
+  <link th:href="@{/css/help/news.css(v=${version})}" rel="stylesheet" type="text/css">
+  <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+<!-- 采美豆明细 -->
+<div id="beansPage" v-cloak>
+  <div class="navLayout" v-cloak>
+    <div class="news-title">
+      <div class="news-name">所有公告</div>
+    </div>
+    <div class="wrap clear">
+        <!--loading-->
+        <div v-if="isRequset" class="loading">
+          <img src="/img/base/loading.gif">
+        </div>
+        <div class="news-container clear" v-else>
+          <div class="news-content-list clear" v-if="newsList.length > 0">
+            <a href="javascript:void(0)" class="news-list-cell" v-for="(list, index) in newsList" :key="index" @click="hanldDetails(list.id)">
+              <div class="news-list-le">
+                <span class="new-icon"></span>
+                <p>{{ list.title }}</p>
+              </div>
+              <div class="news-list-ri">
+                {{ list.creationtime }}
+              </div>
+            </a>
+          </div>
+          <div v-else class="empty">
+            <img src="/img/account/icon-coupon-empty@2x.png">
+            <div class="msg"><p>暂无公告~</p></div>
+          </div>
+        </div>
+        <!--分页-->
+        <div v-if="(!isPC) && noMore" class="noMore">---- 没有更多了 ----</div>
+        <div v-if="isPC && pageTotal>1" class="pageWrap clear">
+          <a v-if="listQuery.pageNum>1" class="prev" @click="toPagination(listQuery.pageNum*1-1)" href="javascript:void(0);"></a>
+          <template v-for="n in showPageBtn">
+            <a v-if="n" :class="{'on':(n==listQuery.pageNum)}" @click="toPagination(n)" href="javascript:void(0);" v-text="n"></a>
+            <span v-else>···</span>
+          </template>
+          <a v-if="listQuery.pageNum<pageTotal" class="next" @click="toPagination(listQuery.pageNum*1+1)" href="javascript:void(0);"></a>
+          <span>共<b v-text="pageTotal>1?pageTotal:1"></b>页</span>
+          <span>跳至</span>
+          <input v-model="pageInput" @blur="checkNum()"/>
+          <span>页</span>&nbsp;
+          <a class="btn" href="javascript:void(0);" @click="toPagination(pageInput)">点击跳转</a>
+        </div>
+    </div>
+  </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/utils.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/help/news.js(v=${version})}"></script>
+</body>
+</html>

+ 17 - 1
src/main/resources/templates/index.html

@@ -17,7 +17,7 @@
 <!-- 引用头部 -->
 <template th:replace="components/header"></template>
 <!-- 首页 -->
-<div id="container">
+<div id="container" v-cloak>
     <!--首页图片轮播-->
     <div id="swiper-container" class="swiper-container">
         <ul class="swiper-wrapper swiper-wrapper-banner">
@@ -36,6 +36,18 @@
             <p th:text="${menu.name}"></p>
         </a>
     </div>
+    <div id="new-container" class="section_container" v-if="newsList.length>0">
+        <div class="inner">
+            <div class="new-label">公告:</div>
+            <div class="new-list">
+                <a href="javascript:void(0)" class="new-li" v-for="(list ,index) in newsList" :key="index" @click="hanldDetails(list.id)">
+                    <span class="new-icon"></span>
+                    <p>{{ list.title }}</p>
+                </a>
+            </div>
+            <a href="/news.html" class="new-more"> 更多>> </a>
+        </div>
+    </div>
     <!--首页楼层主体数据-->
     <div class="section_container">
         <div class="inner">
@@ -172,6 +184,7 @@
                                     <!-- 商品/图片 列表 -->
                                     <a :href="pros.link" class="page_main_item ad_04 swiper-slide" target="_blank" v-for="pros in floor.floorImageList">
                                         <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
+                                        <div class="page_main_type" v-if="pros.product && pros.product.productType && pros.product.productType === 2">医疗器械</div>
                                         <div class="page_main_tag" v-if="pros.listType == 2"><p v-text="pros.label"></p></div>
                                         <div class="page_main_text">
                                             <span class="tag" v-if="pros.beautyActFlag == 1">美博会</span>
@@ -306,6 +319,9 @@
                                         <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
                                             <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
                                                 <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                                <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                                    <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
+                                                </th:block>
                                                 <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
                                                 <div class="page_main_text">
                                                     <th:block th:if="${pros.containsKey('product')}">

+ 23 - 0
src/main/resources/templates/pay/caimei-code.html

@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <template th:replace="pay/components/pay-link"></template>
+    <link th:href="@{/css/pay/caimei-paymobile.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<div class="pay-container weixin clear" id="payContainer" >
+    <div class="container">
+
+    </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<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="@{/js/pay/caimei-code.js(v=${version})}"></script>
+
+</body>
+</html>

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

@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <title>采美365网</title>
+    <template th:replace="components/head-link"></template>
+    <link th:href="@{/css/pay/caimei-paycash.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+<div id="payContainer" class="pay-container clear" v-cloak>
+    <div class="wrap" v-if="pageType !== '2' && pageType !== '3'">
+        <div class="pageTitle">
+            <div class="step">
+                <span class="prev">我的购物车</span>
+                <span class="prev">核对订单信息</span>
+                <span class="on">成功提交订单</span>
+            </div>
+            <h1>收银台</h1>
+        </div>
+    </div>
+    <div class="container">
+        <div class="pay-content clear" >
+            <!--二手支付-->
+            <template v-if="pageType === '1'">
+                <div class="pay-title">
+                    <div class="title-money big">
+                        <p class="pay-money-big">付款金额:<span class="red">¥{{payAmount | NumFormat}}</span></p>
+                    </div>
+                </div>
+            </template>
+            <!--购买会员-->
+            <template v-else-if="pageType === '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>{{ comboInfo.price | NumFormat }}</div>
+                        </div>
+                        <div class="svip-indent">套餐{{ comboInfo.duration }}个月</div>
+                    </div>
+                </div>
+            </template>
+            <!--购买优惠券-->
+            <template v-else-if="pageType === '3'">
+                <div class="pay-coupontitle">收银台</div>
+                <div class="pay-coupon">
+                    <div class="pay-coupon-title">购买优惠券 <span>(满¥{{ couponInfo.touchPrice }}减{{ couponInfo.couponAmount }})</span></div>
+                    <div class="pay-coupon-content">待付金额:<span>¥{{ couponInfo.moneyCouponPrice | NumFormat }}</span></div>
+                </div>
+            </template>
+            <!--普通订单-->
+            <template v-else>
+                <div class="pay-title">
+                    <div class="title-money big">
+                        <p class="pay-money-big">待付金额:<span class="red" id="obligation">¥{{obligation | NumFormat}}</span></p>
+                    </div>
+                    <div class="title-money">
+                        <p>应付总额:<span id="payableAmount">¥{{payableAmount | NumFormat}}</span></p>
+                        <p>已付金额:<span id="receiptAmount">¥{{receiptAmount | NumFormat}}</span></p>
+                    </div>
+                    <div class="pay-input">
+                        <p>本次支付:</p>
+                        <p class="input-text">
+                            <span>¥</span>
+                            <input class="input" id="payAmount" v-model="payAmount" type="number" placeholder="输入金额不能大于待付金额" maxlength="10" @input="changePayAmount" @blur="changePayAmountBlur">
+                        </p>
+                    </div>
+                    <div class="title-money">
+                        <p>应付剩余:<span class="red" id="balanceAmount">¥{{balanceAmount | NumFormat}}</span></p>
+                    </div>
+                </div>
+            </template>
+            <div class="pay-ment"  v-if="pageType != '1' && pageType != '2' && pageType != '3'">
+                <div class="pay-record">
+                    <div class="record-title">支付记录</div>
+                    <div class="record-content clear" id="discernReceipt">
+                        <div class="record-li none" v-if="discernReceiptList.length== 0">暂无支付记录</div>
+                        <div class="record-li" v-for="(item, index) in discernReceiptList" :key="index" v-else>
+                            <div class="record-tb">¥{{item.receiptAmount | NumFormat}}</div>
+                            <div class="record-tb">{{payTypeText(item.payType)}}</div>
+                            <div class="record-tb">{{item.receiptDate}}</div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="pay-method">
+                <div class="method-title">选择支付方式</div>
+                <div class="pay-method-tab mf">
+                    <a class="item" href="javascript:void(0);" @click="changeTab(0)" :class ="{ active: tabIndex === 0 }">线上支付</a>
+                </div>
+                <div class="method-content">
+                    <div class="payment" id="mobilePayment" v-if="tabIndex === 0">
+                        <template v-if="pageType !== '2' && pageType != '3'">
+                            <div class="payment-title">{{payStatusText}}</div>
+                        </template>
+                        <div class="pay-bank">
+                            <div class="bank-list" id="mobileContent">
+                                <a v-if="!is_Wechat_bowcr" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(0,'ALIPAY')" :class="{ active: mobileTabIndex === 0 }">
+                                    <img src="/img/pay/iconbank-ali@2x.png" alt="支付宝支付">
+                                </a>
+                                <a v-if="is_Wechat_bowcr && !isPC" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(1,'WEIXIN')" :class="{ active: mobileTabIndex === 1 }">
+                                    <img src="/img/pay/iconbank-wx@2x.png" alt="微信支付">
+                                </a>
+                                <a v-if="isPC" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(1,'WEIXIN')" :class="{ active: mobileTabIndex === 1 }">
+                                    <img src="/img/pay/iconbank-wx@2x.png" alt="微信支付">
+                                </a>
+                                <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(2,'ICBC_B2B')" :class="{ active: mobileTabIndex === 2 }">
+                                    <img src="/img/pay/iconbank-B2Bbank@2x.png" alt="企业网银">
+                                </a>
+                                <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(3,'ICBC_B2C')" :class="{ active: mobileTabIndex === 3 }">
+                                    <img src="/img/pay/iconbank-B2Cbank@2x.png" alt="个人网银">
+                                </a>
+                            </div>
+                        </div>
+                        <div class="pay-bank"  v-if="mobileTabIndex === 2 && isPC">
+                            <div class="bank-list mfw" id="bankContent">
+                                <a href="javascript:void(0);" class="bank-b mIcon" v-for="(item, index) in bankListB2BData" :key="index" :class="{ active: bankTabIndex === index }"  @click="checkBankPay(index,item)">
+                                    <img :src="item.bankLogo" :alt="item.bankName">
+                                </a>
+                            </div>
+                        </div>
+                        <div class="pay-bank"  v-if="mobileTabIndex === 3 && isPC">
+                            <div class="bank-list mfw" id="bankB2CContent">
+                                <a href="javascript:void(0);" class="bank-b mIcon" v-for="(item, index) in bankListB2CData" :key="index" :class="{ active: bankTabIndex === index }"  @click="checkBankPay(index,item)">
+                                    <img :src="item.bankLogo" :alt="item.bankName">
+                                </a>
+                            </div>
+                        </div>
+                        <template v-if="pageType != '1' && pageType != '3'">
+                            <div class="pay-link" v-if="mobileTabIndex === 2 || mobileTabIndex === 3">
+                                <p v-if="isPC">若您在公司的职位无法直接使用网银付款,请点击右侧“复制支付链接”按钮,将该链接发送给公司财务人员进行网银付款</p>
+                                <a href="javascript:void(0);" id="copyLink" @click="copyLinkPaySubmitFn">复制支付链接</a>
+                                <p v-if="!isPC">复制支付链接成功后,将链接发送到电脑端进行付款</p>
+                            </div>
+                        </template>
+                        <template>
+                            <div class="iframe" v-html="iframe" style="display: none;"></div>
+                        </template>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="pay-button-main" v-if="tabIndex == 0">
+        <div class="inner">
+            <div class="pay-button" v-if="mobileTabIndex === 0">
+                <a href="javascript:void(0);" id="payMobileSubmit" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付宝支付','点击','移动支付','','Um_Event_ConfirmMobilePay'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 1">
+                <a href="javascript:void(0);" id="payMobileSubmit1" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上微信支付','点击','移动支付','','Um_Event_ConfirmMobilePay1'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 2">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上企业网银支付','点击','网银支付','','Um_Event_CopyUnionPay'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 3">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit1" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上个人网银支付','点击','网银支付','','Um_Event_CopyUnionPay2'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 4">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit2" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上大额银联支付','点击','网银支付','','Um_Event_CopyUnionPay3'])">立即支付</a>
+            </div>
+        </div>
+    </div>
+    <div class="pay-alert-content" v-if="isPayAlert">
+        <div class="pay-alert">
+            <div class="title"><p>确认提示</p><i class="icon-close" @click.stop="RefreshBody"></i></div>
+            <div class="content">
+                <h1>请在您新打开的页面上完成付款</h1>
+                <p>完成付款后请点击下面的按钮</p>
+            </div>
+            <div class="button" id="payButton"><a href="javascript:void(0);" @click="RefreshBody">已完成支付</a></div>
+        </div>
+    </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></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="@{/js/pay/caimei-bank.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/pay/mixin/hlb_payMixin.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/pay/caimei-hlbpay.js(v=${version})}"></script>
+</body>
+</html>

+ 60 - 57
src/main/resources/templates/pay/caimei-pay.html

@@ -29,55 +29,55 @@
                 </div>
             </div>
             <!-- 维沙 -->
-            <template v-if="organizeId === 3">
-                <div class="pay-goods">
-                    <div class="good-top">
-                        <div class="good-top-inner ws">
-                            <div class="ws-count-price"><span>支付总额:</span><span class="red">¥{{unpaidAmount | NumFormat}}</span></div>
-                            <div>
-                                <div class="ws-bot-right">
-                                    <div class="bot-num"><span>订单号:</span><span class="p">{{orderNo}}</span></div>
-                                    <div class="bot-num"><span>运费:</span><span class="p" id="freight">{{freight}}</span></div>
-                                    <div class="bot-num"><span>经理折扣:</span><span class="p" id="discountFee">¥{{discountFee | NumFormat}}</span></div>
-                                    <div class="bot-num"><span>订单金额:</span><span class="red" id="payTotalFee">¥{{unpaidAmount | NumFormat}}</span></div>
-                                    <div style="clear:both"></div>
-                                </div>
-                                <div class="bot-left" id="goodSlideToggle"@click="slideToggleContent">
-                                    <i class="icon-down" :class="isSiled ? 'roter' : '' "></i>
-                                    <p id="iconText">{{isSiled ? '点击箭头收起订单商品' :'点击箭头展开订单商品'}}</p>
-                                </div>
-                                <div style="clear:both"></div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="good-main" v-if="isSiled">
-                        <div class="list-title">
-                            <div class="t-li"><p>序号</p></div>
-                            <div class="t-li"><p>商品图片</p></div>
-                            <div class="t-li"><p>商品名称</p></div>
-                            <div class="t-li"><p>单价</p></div>
-                            <div class="t-li"><p>数量</p></div>
-                            <div class="t-li"><p>总价</p></div>
-                        </div>
-                        <div class="list-container ws-list-container" id="goodsContainer">
-                            <div class="list-main" v-for="(item, index) in orderProductList" :key="index" :class="{'active':index%2 != 1}">
-                                <div class="t-li"><p>{{index+1}}</p></div>
-                                <div class="t-li"><span class="tag" v-if="item.productType === 1 || item.productType === 2">赠品</span>
-                                    <img :src="item.image" :alt="item.name">
-                                </div>
-                                <div class="t-li"><p>{{item.name}}</p></div>
-                                <div class="t-li"><p>¥{{item.price | NumFormat}}</p></div>
-                                <div class="t-li"><p>{{item.num}}</p></div>
-                                <div class="t-li"><p>¥{{item.totalFee | NumFormat}}</p></div>
-                            </div>
-                        </div>
-                        <div class="list-total"> <span>合计:</span><span class="red">¥{{orderTotalFee | NumFormat}}</span></div>
-                        <div style="clear: both"></div>
-                    </div>
-                </div>
-            </template>
+<!--            <template v-if="organizeId === 3">-->
+<!--                <div class="pay-goods">-->
+<!--                    <div class="good-top">-->
+<!--                        <div class="good-top-inner ws">-->
+<!--                            <div class="ws-count-price"><span>支付总额:</span><span class="red">¥{{unpaidAmount | NumFormat}}</span></div>-->
+<!--                            <div>-->
+<!--                                <div class="ws-bot-right">-->
+<!--                                    <div class="bot-num"><span>订单号:</span><span class="p">{{orderNo}}</span></div>-->
+<!--                                    <div class="bot-num"><span>运费:</span><span class="p" id="freight">{{freight}}</span></div>-->
+<!--                                    <div class="bot-num"><span>经理折扣:</span><span class="p" id="discountFee">¥{{discountFee | NumFormat}}</span></div>-->
+<!--                                    <div class="bot-num"><span>订单金额:</span><span class="red" id="payTotalFee">¥{{unpaidAmount | NumFormat}}</span></div>-->
+<!--                                    <div style="clear:both"></div>-->
+<!--                                </div>-->
+<!--                                <div class="bot-left" id="goodSlideToggle"@click="slideToggleContent">-->
+<!--                                    <i class="icon-down" :class="isSiled ? 'roter' : '' "></i>-->
+<!--                                    <p id="iconText">{{isSiled ? '点击箭头收起订单商品' :'点击箭头展开订单商品'}}</p>-->
+<!--                                </div>-->
+<!--                                <div style="clear:both"></div>-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                    </div>-->
+<!--                    <div class="good-main" v-if="isSiled">-->
+<!--                        <div class="list-title">-->
+<!--                            <div class="t-li"><p>序号</p></div>-->
+<!--                            <div class="t-li"><p>商品图片</p></div>-->
+<!--                            <div class="t-li"><p>商品名称</p></div>-->
+<!--                            <div class="t-li"><p>单价</p></div>-->
+<!--                            <div class="t-li"><p>数量</p></div>-->
+<!--                            <div class="t-li"><p>总价</p></div>-->
+<!--                        </div>-->
+<!--                        <div class="list-container ws-list-container" id="goodsContainer">-->
+<!--                            <div class="list-main" v-for="(item, index) in orderProductList" :key="index" :class="{'active':index%2 != 1}">-->
+<!--                                <div class="t-li"><p>{{index+1}}</p></div>-->
+<!--                                <div class="t-li"><span class="tag" v-if="item.productType === 1 || item.productType === 2">赠品</span>-->
+<!--                                    <img :src="item.image" :alt="item.name">-->
+<!--                                </div>-->
+<!--                                <div class="t-li"><p>{{item.name}}</p></div>-->
+<!--                                <div class="t-li"><p>¥{{item.price | NumFormat}}</p></div>-->
+<!--                                <div class="t-li"><p>{{item.num}}</p></div>-->
+<!--                                <div class="t-li"><p>¥{{item.totalFee | NumFormat}}</p></div>-->
+<!--                            </div>-->
+<!--                        </div>-->
+<!--                        <div class="list-total"> <span>合计:</span><span class="red">¥{{orderTotalFee | NumFormat}}</span></div>-->
+<!--                        <div style="clear: both"></div>-->
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </template>-->
             <!--购买会员-->
-            <template v-else-if="type === 2">
+            <template v-if="type === 2">
                 <div class="pay-svip">
                     <div class="pay-svip-title">购买超级会员</div>
                     <div class="content">
@@ -95,10 +95,8 @@
                     <div class="good-top">
                         <div class="good-top-inner">
                             <div class="bot-right">
-                                <div class="bot-num"><span>运费:</span><span class="p" id="freight">{{freight}}</span></div>
-                                <div class="bot-num"><span>经理折扣:</span><span class="p" id="discountFee">¥{{discountFee | NumFormat}}</span></div>
-                                <div class="bot-num"><span>余额抵扣:</span><span class="p" id="balancePayFee">¥{{balancePayFee | NumFormat}}</span></div>
-                                <div class="bot-num"><span>合计:</span><span class="red" id="payTotalFee">¥{{payTotalFee | NumFormat}}</span></div>
+                                <div class="bot-num"><span>优惠:</span><span class="p" id="eachDiscount">¥{{eachDiscount | NumFormat}}</span></div>
+                                <div class="bot-num"><span>合计:</span><span class="red" id="totalAmount">¥{{totalAmount | NumFormat}}</span></div>
                             </div>
                             <div class="bot-left" id="goodSlideToggle"@click="slideToggleContent">
                                 <i class="icon-down" :class="isSiled ? 'roter' : '' "></i>
@@ -118,7 +116,7 @@
                         <div class="list-container" id="goodsContainer">
                             <div class="list-main" v-for="(item, index) in orderProductList" :key="index" :class="{'active':index%2 != 1}">
                                 <div class="t-li"><p>{{index+1}}</p></div>
-                                <div class="t-li"><span class="tag" v-if="item.productType === 1 || item.productType === 2">赠品</span>
+                                <div class="t-li"><span class="tag" v-if="item.giftType === 1 || item.giftType === 2">赠品</span>
                                     <img :src="item.image" :alt="item.name">
                                 </div>
                                 <div class="t-li"><p>{{item.name}}</p></div>
@@ -131,8 +129,8 @@
                 </div>
                 <div class="pay-ment">
                     <div class="pay-message">
-                        <div class="message-num"><span>本次支付金额:</span><span class="red" id="payableAmount">¥{{payableAmount | NumFormat}}</span></div>
-                        <div class="message-num"><span>剩余支付金额:</span><span class="red" id="payment">¥{{payment | NumFormat}}</span></div>
+                        <div class="message-num"><span>本次支付金额:</span><span class="red" id="payAmount">¥{{payAmount | NumFormat}}</span></div>
+                        <div class="message-num"><span>剩余支付金额:</span><span class="red" id="payableAmount">¥{{payableAmount | NumFormat}}</span></div>
                         <div class="message-num"><span>已支付:</span><span class="red" id="receiptAmount">¥{{receiptAmount | NumFormat}}</span></div>
                     </div>
                     <div class="pay-record">
@@ -154,15 +152,18 @@
             <div class="pay-bank">
                 <div class="bank-title">请选择以下一家银行进行付款<span class="color">(请在倒计时时间内使用<span class="big"> {{ payInfo.payLinkTypeText }} </span>完成本次支付)</span></div>
                 <div class="bank-list" id="bankContent" v-if="payInfo.payLinkType == 1">
-                    <a href="javascript:void(0);" v-if="item.b2B && item.b2B!=''" v-for="(item, index) in bankListData" :key="index" :class="{ active: tabIndex === index }"  @click="changeTab(index,item)">
+                    <a href="javascript:void(0);" class="bank-b mIcon" v-for="(item, index) in bankListB2BData" :key="index" :class="{ active: bankTabIndex === index }"  @click="checkBankPay(index,item)">
                         <img :src="item.bankLogo" :alt="item.bankName">
                     </a>
                 </div>
                 <div class="bank-list" id="bankContentC" v-if="payInfo.payLinkType == 2">
-                    <a href="javascript:void(0);" v-if="item.b2C && item.b2C!=''" v-for="(item, index) in bankListData" :key="index" :class="{ active: tabIndex === index }"  @click="changeTab(index,item)">
+                    <a href="javascript:void(0);" class="bank-b mIcon" v-for="(item, index) in bankListB2CData" :key="index" :class="{ active: bankTabIndex === index }"  @click="checkBankPay(index,item)">
                         <img :src="item.bankLogo" :alt="item.bankName">
                     </a>
                 </div>
+                <template>
+                    <div class="iframe" v-html="iframe" style="display: none;"></div>
+                </template>
             </div>
         </div>
         <div class="pay-button-main">
@@ -199,6 +200,8 @@
 <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/mixin/hlb_payMixin.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/pay/mixin/mh_payMixin.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/pay/caimei-pay.js(v=${version})}"></script>
 </body>
 </html>

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

@@ -91,11 +91,14 @@
                 <div class="method-title">选择支付方式</div>
                 <div class="pay-method-tab mf">
                     <a class="item" href="javascript:void(0);" @click="changeTab(0)" :class ="{ active: tabIndex === 0 }">线上支付</a>
-                    <a class="item" href="javascript:void(0);" @click="changeTab(1)" :class ="{ active: tabIndex === 1 }" v-if="isReceiptStatus">转账支付</a>
+                    <a class="item" href="javascript:void(0);" @click="changeTab(1)" :class ="{ active: tabIndex === 1 }" v-if="isReceiptStatus">线下转账</a>
                 </div>
                 <div class="method-content">
                     <div class="payment" id="mobilePayment" v-if="tabIndex === 0">
-                        <div class="payment-title" v-if="pageType !== '2' && pageType != '3'">{{payStatusText}}</div>
+                        <template v-if="pageType !== '2' && pageType != '3'">
+                            <div class="payment-title">1.{{payStatusText}}</div>
+                            <div class="payment-title">2.大额支付请使用大额银联转账方式进行付款。</div>
+                        </template>
                         <div class="pay-bank">
                             <div class="bank-list" id="mobileContent">
                                 <a v-if="!is_Wechat_bowcr" href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(0,'ALIPAY')" :class="{ active: mobileTabIndex === 0 }">
@@ -113,6 +116,9 @@
                                 <a href="javascript:void(0);" class="bank-a mIcon" @click="checkMobilePay(3,'ICBC_B2C')" :class="{ active: mobileTabIndex === 3 }">
                                     <img src="/img/pay/iconbank-B2Cbank@2x.png" alt="个人网银">
                                 </a>
+                                <a href="javascript:void(0);" v-if="pageType !== '1' && pageType != '2'  && pageType != '3'" class="bank-a mIcon" @click="checkMobilePay(4,'ICBC_B2C')" :class="{ active: mobileTabIndex === 4 }">
+                                    <img src="/img/pay/iconbank-bigbank@2x.png" alt="大额网银转账">
+                                </a>
                             </div>
                         </div>
                         <div class="pay-bank"  v-if="mobileTabIndex === 2 && isPC">
@@ -137,35 +143,26 @@
                             </div>
                         </template>
                     </div>
-                    <div class="payment" id="offlinePayment" v-if="tabIndex === 1">
-                        <div class="payment-transfer">
-                            <div class="payment-transfer-main" id="paymentTransferMain">
-                                <div class="label"><P class="label-title"><i class="icon mIcon"></i>除了线上支付,您还可以通过直接转账的方式付款</P></div>
-                                <div class="label"><P class="label-t">转账信息</P></div>
-                                <div class="label">
-                                    <P class="text">开户行:中信银行(深圳泰然支行)</P>
-                                    <P class="text">银行卡号:6217 6803 0362 0897</P>
-                                    <P class="text">户名:周仁声</P>
-                                </div>
-                                <div class="label">
-                                    <P class="text-p">订单标识:{{orderIdentificationId}}<a href="javascript: void(0);" class="copy" @click="copyOrderBtnSubmitFn">复制</a></P>
-                                </div>
-                                <div class="label"><P class="label-t">特别注意</P></div>
-                                <div class="label"><P class="label-c">请在转账备注中填写上述订单标识,方便财务快速审核,提高发货速度</P></div>
-                            </div>
-                        </div>
-                    </div>
                 </div>
             </div>
         </div>
     </div>
     <div class="pay-button-main" v-if="tabIndex == 0">
         <div class="inner">
-            <div class="pay-button" v-if="mobileTabIndex === 2 || mobileTabIndex === 3">
-                <a v-show="isPC" href="javascript:void(0);" id="paySubmit" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付','点击','网银支付','','Um_Event_CopyUnionPay'])">立即支付</a>
+            <div class="pay-button" v-if="mobileTabIndex === 0">
+                <a href="javascript:void(0);" id="payMobileSubmit" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付宝支付','点击','移动支付','','Um_Event_ConfirmMobilePay'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 1">
+                <a href="javascript:void(0);" id="payMobileSubmit1" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上微信支付','点击','移动支付','','Um_Event_ConfirmMobilePay1'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 2">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上企业网银支付','点击','网银支付','','Um_Event_CopyUnionPay'])">立即支付</a>
             </div>
-            <div class="pay-button" v-else>
-                <a href="javascript:void(0);" id="payMobileSubmit" @click="PayMobileSubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上支付','点击','移动支付','','Um_Event_ConfirmMobilePay'])">立即支付</a>
+            <div class="pay-button" v-if="mobileTabIndex === 3">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit1" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上个人网银支付','点击','网银支付','','Um_Event_CopyUnionPay2'])">立即支付</a>
+            </div>
+            <div class="pay-button" v-if="mobileTabIndex === 4">
+                <a v-show="isPC" href="javascript:void(0);" id="paySubmit2" @click="PaySubmitFn" :class="isSubMitStatus ? 'disabled' : ''" onclick="_czc.push(['_trackEvent','线上大额银联支付','点击','网银支付','','Um_Event_CopyUnionPay3'])">立即支付</a>
             </div>
         </div>
     </div>
@@ -179,6 +176,24 @@
             <div class="button" id="payButton"><a href="javascript:void(0);" @click="RefreshBody">已完成支付</a></div>
         </div>
     </div>
+    <div class="pay-alert-content" v-if="isPayBigAlert">
+        <div class="pay-big-alert">
+            <div class="title"><p>大额银联转账信息</p><i class="icon-close" @click.stop="closeBigAlert"></i></div>
+            <div class="content">
+                <p class="text">请使用银行手机app或者网银输入以下信息进行转账。 每次发起支付请求,收款账号都会变化,请使用最新的收款账号进行转账。</p>
+                <p>户名: <span>{{ bigPayInfo.receiveName }}</span></p>
+                <p>收款账号: <span>{{ bigPayInfo.receiveAccountNo }}</span></p>
+                <p>银行: <span>{{ bigPayInfo.accountName }}</span></p>
+                <p>收款方开户地: <span>{{ bigPayInfo.areaInfo }}</span></p>
+                <p>收款网点: <span>{{ bigPayInfo.accountName }}</span></p>
+            </div>
+            <div class="button">
+                <a class="btn btn-close" href="javascript:void(0);" @click="closeBigAlert">换种支付方式</a>
+                <a class="btn btn-confirm" href="javascript:void(0);" @click="RefreshBigBody">已完成转账,请点击</a>
+            </div>
+        </div>
+    </div>
+
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

+ 119 - 0
src/main/resources/templates/pay/caimei-paylist.html

@@ -0,0 +1,119 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <template th:replace="components/head-link"></template>
+    <link th:href="@{/css/pay/caimei-paylist.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<!-- 引用头部 -->
+<template th:replace="components/header"></template>
+<!-- 内容 -->
+<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="{active: isRequest}" v-show="isRequest">
+        <div class="pay-content">
+            <div class="pay-title">
+                <div class="pay-title-le" v-if="isPC">支付订单<span>(因线上支付政策调整,请对每家店铺分别进行付款;若需要直接转账支付订单,请点击右侧按钮查看线下转账信息)</span></div>
+                <template v-else>
+                    <div class="pay-title-t">支付订单</div>
+                    <div class="pay-title-p">(因线上支付政策调整,请对每家店铺分别进行付款;若需要直接转账支付订单,请点击右侧按钮查看线下转账信息)</div>
+                </template>
+                <div class="pay-title-btn" @click="handleAlert">查看线下转账信息</div>
+            </div>
+            <div class="pay-list-title" v-if="isPC">
+                <div class="pay-list-view t1">商品信息</div>
+                <div class="pay-list-view t2">单价(元)</div>
+                <div class="pay-list-view t3">数量</div>
+                <div class="pay-list-view t4">小计(元)</div>
+            </div>
+            <div class="pay-list-cell clear" v-for="(list, index) in list" :key="index" :style="{paddingBottom : !isPC && list.paystaut == 0 ? '13.4vw' : '20px'}">
+                <div class="list-cell-title">
+                    <div class="list-cell-logo">
+                        <img :src="list.shopLogo" alt="">
+                    </div>
+                    <div class="list-cell-name" v-text="list.shopName"></div>
+                </div>
+                <div class="list-cell-content clear" v-for="(pros, prosIndex) in list.orderProductList" :key="prosIndex">
+                    <div class="list-cell-pros p1">
+                        <div class="cell-pros-image">
+                            <img :src="pros.image" alt="">
+                        </div>
+                        <div class="cell-pros-name">
+                            <p v-text="pros.name"></p>
+                        </div>
+                    </div>
+                    <div class="list-cell-pros p2">
+                        <span v-if="!isPC">单价:</span>
+                        <p>¥{{pros.price  | NumFormat}}</p>
+                    </div>
+                    <div class="list-cell-pros p3">
+                        <span v-if="!isPC">数量:</span>
+                        <p>{{ pros.num }}</p>
+                    </div>
+                    <div class="list-cell-pros p4">
+                        <span v-if="!isPC">小计(元):</span>
+                        <p>¥{{pros.totalAmount | NumFormat}}</p>
+                    </div>
+                </div>
+                <div class="list-cell-button">
+                    <div class="list-cell-vleft btn">
+                        <div class="list-cell-btn" v-if="list.receiptStatus != 3" @click="handlePayOrder(list.shopOrderId)">支付</div>
+                        <div class="list-cell-msg" v-if="list.obligation>0">
+                            待付:<span class="red">¥{{list.obligation | NumFormat}}</span>
+                        </div>
+                    </div>
+                    <div class="list-cell-vleft">
+                        <div class="list-cell-msg" v-if="list.receiptAmount>0">
+                            已付:<span>¥{{list.receiptAmount | NumFormat}}</span>
+                        </div>
+                        <div class="list-cell-msg" v-if="list.eachDiscount>0">
+                            优惠:<span>¥{{list.eachDiscount | NumFormat}}</span>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="pay-alert-content" v-if="isPayBigAlert" :class="isPayBigAlert ? 'show' : 'none'">
+        <div class="pay-big-alert">
+            <div class="title"><p>线下转账信息</p><i class="icon-close" @click.stop="closeBigAlert"></i></div>
+            <div class="content">
+                <div class="content-top">
+                    <div class="content-viw">
+                        待付金额:<span class="red">¥{{ paidAmount | NumFormat }}</span>
+                    </div>
+                    <div class="content-viw">
+                        开户行:<span>中信银行(深圳泰然支行)</span>
+                    </div>
+                    <div class="content-viw">
+                        户名:<span>周仁声</span>
+                    </div>
+                    <div class="content-viw">
+                        银行卡号:<span>6217 6803 0362 0897</span>
+                    </div>
+                    <div class="content-viw">
+                        订单标识:<span v-text="orderIdentificationId"></span><span class="copy" @click="copyOrderBtnSubmitFn">复制</span>
+                    </div>
+                </div>
+                <div class="content-bot">
+                    <p>特别注意:</p>
+                    <p>请在转账备注中填写上述订单标识,方便采美财务人员快速审核,提高发货速度</p>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<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/pay/caimei-paylist.js(v=${version})}"></script>
+
+</body>
+</html>

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

@@ -24,9 +24,12 @@
             <div class="pay-codecontent">
                 <div class="pay-amount">
                     <div class="pay-amount-text">
-                        <p v-if="pageType == '2'">超级会员套餐:{{ duration }}个月 </p>
+                        <p v-if="pageType == '2'">超级会员套餐:<span>{{ duration }}个月</span></p>
                         <p>交易金额: <span>¥{{payAmount | NumFormat}}</span> </p>
-                        <p>收款方: <span>深圳市采美信息技术有限公司</span> </p>
+                        <template>
+                            <p v-if="pageType == '2' || pageType == '3'">收款方: <span>深圳市采美信息技术有限公司</span> </p>
+                            <p v-else>收款方: <span>{{ shopName }}</span> </p>
+                        </template>
                         <p v-if="pageType!='1' && pageType!='2' && pageType!='3'">订单号: <span>{{orderNo}}</span> </p>
                     </div>
                     <div class="pay-amount-icon"><img src="/img/pay/icon-pay@2x.png" alt=""></div>
@@ -52,9 +55,12 @@
             <div class="pay-codecontent">
                 <div class="pay-amount">
                     <div class="pay-amount-text">
-                        <p v-if="pageType == '2'">超级会员套餐:{{ duration }}个月 </p>
+                        <p v-if="pageType == '2'">超级会员套餐:<span>{{ duration }}个月</span> </p>
                         <p>交易金额: <span>¥{{payAmount | NumFormat}}</span> </p>
-                        <p>收款方: <span>深圳市采美信息技术有限公司</span> </p>
+                        <template>
+                            <p v-if="pageType == '2' || pageType == '3'">收款方: <span>深圳市采美信息技术有限公司</span> </p>
+                            <p v-else>收款方: <span>{{ shopName }}</span> </p>
+                        </template>
                         <p v-if="pageType!='1' && pageType!='2' && pageType!='3'">订单号: <span>{{orderNo}}</span> </p>
                     </div>
                     <div class="pay-amount-icon"><img src="/img/pay/icon-pay@2x.png" alt=""></div>

+ 60 - 0
src/main/resources/templates/pay/caimei-payunder.html

@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="https://www.thymeleaf.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="https://www.thymeleaf.org ">
+<head>
+    <template th:replace="pay/components/pay-link"></template>
+    <link th:href="@{/css/pay/caimei-payunder.css(v=${version})}" rel="stylesheet" type="text/css">
+    <template th:replace="components/analysis"></template>
+</head>
+<body>
+<div class="head-wrap">
+    <div class="inner clear">
+        <div class="logo"><a href="/index.html"><img src="/img/base/index_logo.png" alt=""></a></div>
+        <div class="text">收银台</div>
+        <input type="hidden" th:value="${coreServer}" id="coreServer">
+        <input type="hidden" th:value="${agent}" id="userAgent">
+    </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="{active: isRequest}" v-show="isRequest">
+        <div class="pay-content clearfix">
+            <div class="pay-title">提示:本次交易暂不支持线上支付,请使用线下转账方式付款。</div>
+            <div class="pay-amount">
+                <p>待付金额:</p>
+                <h1>¥{{ payAmount | NumFormat }}</h1>
+            </div>
+            <div class="pay-bank">
+                <div class="pay-bank-content">
+                    <div class="content-viw">
+                        开户行:<span>中信银行(深圳泰然支行)</span>
+                    </div>
+                    <div class="content-viw">
+                        户名:<span>周仁声</span>
+                    </div>
+                    <div class="content-viw">
+                        银行卡号:<span>6217 6803 0362 0897</span>
+                    </div>
+                    <div class="content-viw">
+                        订单标识:<span v-text="orderIdentificationId"></span><span class="copy" @click="copyOrderBtnSubmitFn">复制</span>
+                    </div>
+                </div>
+            </div>
+            <div class="pay-msg">
+                <p>特别注意:请在转账备注中填写上述订单标识,方便采美财务人员快速审核,提高发货速度</p>
+            </div>
+        </div>
+    </div>
+</div>
+<!-- 引入底部 -->
+<template th:replace="components/footer"></template>
+<template th:replace="components/foot-link"></template>
+<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/pay/caimei-payunder.js(v=${version})}"></script>
+
+</body>
+</html>

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

@@ -18,16 +18,34 @@
     </div>
 </div>
 <div class="pay-container clearfix" id="payContainer" :class="isRequest ? 'active' : ''">
-    <div class="pay-content clearfix">
+    <template v-if="pageType === 'unionPay'">
+        <div class="pay-content union clearfix">
+            <div class="success-image">
+                <img src="/img/pay/icon-payerror@2x.png" alt="">
+            </div>
+            <div class="success-content">
+                <div class="text">
+                    大额银联转账耗时较久,大致需要 <span>5-15分钟</span> 才能到账成功。后续您可在订单详情页面查看订单的已支付金额和订单状态。
+                </div>
+                <div class="success-button">
+                    <a class="btn btn-home" href="/index.html">回首页</a>
+                    <a class="btn btn-link" :href="openLink">查看订单</a>
+                </div>
+            </div>
+        </div>
+    </template>
+    <template v-else>
+        <div class="pay-content clearfix">
             <div class="success-icon">
                 <div class="icon" :class="isSuccess ? 'icon-success' : 'icon-error'"></div>
             </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"><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>
+    </template>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>

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

@@ -21,7 +21,7 @@
             <div class="mount"><span>¥</span>{{payAmount}}</div>
         </div>
     </div>
-    <div class="pay-button"><div class="btn" @click="WxPaySubmit">立即支付</div></div>
+    <div class="pay-button"><div class="btn" @click="WxPaySubmit" :class="isSubMitStatus ? 'disabled' : ''">立即支付</div></div>
     <div class="pay-logo">
         <div class="logo">采美365网</div>
     </div>
@@ -33,6 +33,8 @@
 <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/lib/js/viewport-sitting.js(v=${version})}"></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="@{/js/pay/mixin/hlb_wxMixin.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/pay/mixin/mh_wxMixin.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/pay/caimei-wechatpay.js(v=${version})}"></script>
 </body>
 </html>

+ 37 - 31
src/main/resources/templates/product/detail.html

@@ -22,7 +22,8 @@
     <input type="hidden" th:value="${product?.visibility}" id="productVisibility">
     <div class="wrap">
         <div class="productBox clear">
-            <div class="imageBox" id="imgShown">
+            <div class="imageBox" id="imgShown" th:object="${product}">
+                <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
                 <div v-if="isPC" class="bigImage">
                     <img :src="images[0]">
                     <span class="mask"></span>
@@ -241,28 +242,30 @@
                 </div>
                 <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 && 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) ||
+                <template v-if="!isHideButton">
+                    <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
+                        <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) ||
                                     (priceObj.priceFlag==2 && GLOBAL_VIP_FLAG === 1) ||
                                     (priceObj.priceFlag==3 && GLOBAL_CLUB_TYPE === 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"
-                           onclick="_czc.push(['_trackEvent','商品详情','点击','立即购买','','Um_Event_ProductBuyConfirm'])">立即购买</a>
-                    </div>
-                </template>
-                <template v-else>
-                    <div class="btnBox">
-                        <a href="javascript:void(0);" class="upgrade" @click="toLogin" v-if="!isNoneDisabled"
-                           onclick="_czc.push(['_trackEvent','商品详情','点击','登录查看价格','','Um_Event_ProductLoginPrice'])">登录查看价格</a>
-                    </div>
+                            <a href="javascript:void(0);" class="cart icon" @click='addShopCart()' v-if="!isNoneDisabled"
+                               onclick="_czc.push(['_trackEvent','商品详情','点击','加入购物车','','Um_Event_ProductAddCart'])">加入购物车</a>
+                            <a href="javascript:void(0);" class="buy" @click="buyNowSubmit()" v-if="!isNoneDisabled"
+                               onclick="_czc.push(['_trackEvent','商品详情','点击','立即购买','','Um_Event_ProductBuyConfirm'])">立即购买</a>
+                        </div>
+                    </template>
+                    <template v-else>
+                        <div class="btnBox">
+                            <a href="javascript:void(0);" class="upgrade" @click="toLogin" v-if="!isNoneDisabled"
+                               onclick="_czc.push(['_trackEvent','商品详情','点击','登录查看价格','','Um_Event_ProductLoginPrice'])">登录查看价格</a>
+                        </div>
+                    </template>
                 </template>
             </div>
         </div>
@@ -285,7 +288,8 @@
                             <div class="product-supporting-list" v-for="(pros,index) in defaultSupportingList" :class="index == 0 ? 'active' : ''">
                                 <div class="tr tr-1">
                                     <a :href="'/product-'+pros.productId+'.html'" target="_blank">
-                                        <img :src="pros.image" :alt="pros.name">
+                                        <img class="smalltype" src="/img/base/icon-smalltype@2x.png" alt="" v-if="pros.productType == 2">
+                                        <img class="images" :src="pros.image" :alt="pros.name">
                                     </a>
                                 </div>
                                 <div class="tr tr-2">
@@ -597,21 +601,23 @@
             <div class="shopBox">
                 <div class="hd">供应商信息</div>
                 <div class="bd">
-                    <a th:href="@{'/supplier-'+ ${product.shopId} +'.html'}">
+                    <a href="javascript:void(0);">
                         <div class="name"><span th:text="${product.shopTitle}"></span><i
                                 th:if="not${#strings.isEmpty(product.license)}" class="icon shop"></i></div>
                     </a>
-                    <template th:if="not${#strings.isEmpty(product.businessScope)}">
-                        <div class="tit">经营范围:</div>
-                        <div class="con" th:text="${product.businessScope}"></div>
-                    </template>
-                    <template th:if="not${#strings.isEmpty(product.shopAddress)}">
-                        <div class="tit">所在地区:</div>
-                        <div class="con" th:text="${product.shopAddress}"></div>
+                    <template v-if="!isShowCaimeiShop">
+                        <template th:if="not${#strings.isEmpty(product.businessScope)}">
+                            <div class="tit">经营范围:</div>
+                            <div class="con" th:text="${product.businessScope}"></div>
+                        </template>
+                        <template th:if="not${#strings.isEmpty(product.shopAddress)}">
+                            <div class="tit">所在地区:</div>
+                            <div class="con" th:text="${product.shopAddress}"></div>
+                        </template>
+                        <div class="tit">满意度:<i th:each="i:${#numbers.sequence(1,5)}" class="icon heart"></i></div>
+                        <a th:href="@{'/supplier-'+ ${product.shopId} +'.html'}" class="btn"
+                           onclick="_czc.push(['_trackEvent','商品详情','点击','查看主页','','Um_Event_ProductShopHome'])">查看主页</a>
                     </template>
-                    <div class="tit">满意度:<i th:each="i:${#numbers.sequence(1,5)}" class="icon heart"></i></div>
-                    <a th:href="@{'/supplier-'+ ${product.shopId} +'.html'}" class="btn"
-                       onclick="_czc.push(['_trackEvent','商品详情','点击','查看主页','','Um_Event_ProductShopHome'])">查看主页</a>
                 </div>
             </div>
             <div class="contact">

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

@@ -171,6 +171,7 @@
             <div v-if="!GLOBAL_USER_ID">
                 <ul class="clear mfw">
                     <li class="productItem" th:each="product : ${productListJson}" th:object="${product}">
+                        <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
                         <a class="image" th:href="'/product-'+ *{productId} +'.html'">
                             <img src="/img/base/placeholder.png"  th:attr="data-original=*{image}" th:alt="*{name}">
                             <p class="name">
@@ -191,6 +192,7 @@
                 <ul class="clear mfw">
                     <!--登陆后获取动态数据-->
                     <li class="productItem" v-for="p in listData">
+                        <div class="page_main_type" v-if="p.productType === 2">医疗器械</div>
                         <a class="image" :href="'/product-'+p.productId+'.html'">
                             <img src="/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>

+ 5 - 1
src/main/resources/templates/product/instrument.html

@@ -105,8 +105,9 @@
                                     </a>
                                 </template>
                                 <!-- 商品/图片 列表 -->
-                                <a :href="pros.link" class="page_main_item ad_04 swiper-slide" target="_blank" v-for="pros in floor.floorImageList">
+                                <a :href="pros.link" class="page_main_item ad_04 swiper-slide" target="_blank" v-for="pros in floor.floorImageList" v-if="floor.floorImageList.length>0">
                                     <img class="page_main_image" src="/img/base/placeholder.png" :data-original="pros.image" :alt="pros.name">
+                                    <div class="page_main_type" v-if="pros.product && pros.product.productType && pros.product.productType === 2">医疗器械</div>
                                     <div class="page_main_tag" v-if="pros.listType == 2"><p v-text="pros.label"></p></div>
                                     <div class="page_main_text">
                                         <span class="tag" v-if="pros.beautyActFlag == 1">美博会</span>
@@ -243,6 +244,9 @@
                                     <th:block th:each="pros : ${floor.get('floorImageList')}"  th:object="${pros}">
                                         <a th:href="*{link}" class="page_main_item ad_04 swiper-slide" target="_blank">
                                             <img class="page_main_image" src="/img/base/placeholder.png" th:attr="data-original=*{image}" th:alt="*{name}">
+                                            <th:block th:if="${pros.get('product')}!=null" th:object="${pros.get('product')}">
+                                                <div class="page_main_type" th:if="*{productType}==2">医疗器械</div>
+                                            </th:block>
                                             <div class="page_main_tag" th:if="*{listType}==2"><p th:text="*{label}"></p></div>
                                             <div class="page_main_text">
                                                 <th:block th:if="${pros.containsKey('product')}">

+ 1 - 0
src/main/resources/templates/product/list.html

@@ -144,6 +144,7 @@
             <!--商品列表-->
             <ul class="productList clear mfw">
                 <li class="productItem " v-for="p in listData">
+                    <div class="page_main_type" v-if="p.productType === 2">医疗器械</div>
                     <a class="image" :href="'/product-'+p.productId+'.html'">
                         <img src="/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>

+ 1 - 0
src/main/resources/templates/product/product-coupon.html

@@ -28,6 +28,7 @@
         <div class="coupon-content clear">
             <ul class="productList clear mfw">
                 <li class="productItem " v-for="p in listData">
+                    <div class="page_main_type" v-if="p.productType == 2">医疗器械</div>
                     <a class="image" :href="'/product-'+p.productId+'.html'">
                         <img src="/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>

+ 1 - 0
src/main/resources/templates/product/product-supporting.html

@@ -33,6 +33,7 @@
                 </div>
                 <div class="list-image">
                     <a :href="'/product-'+pros.productId+'.html'">
+                        <img class="smalltype" src="/img/base/icon-bigtype@2x.png" alt="" v-if="pros.productType == 2">
                         <img :src="pros.image" :alt="pros.name">
                     </a>
                 </div>

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

@@ -4,7 +4,7 @@
 <head>
     <title>采美365网-商品列表</title>
     <template th:replace="components/head-link"></template>
-    <link th:href="@{/css/product/list.css(v=${version})}" rel="stylesheet" type="text/css">
+    <link th:href="@{/css/product/promotions.css(v=${version})}" rel="stylesheet" type="text/css">
     <template th:replace="components/analysis"></template>
 </head>
 <body>
@@ -36,8 +36,9 @@
         <!--商品列表-->
         <ul class="productList clear mfw">
             <li class="productItem mfc" v-for="p in listData">
-                <div class="item">
+                <div class="">
                     <a class="image" :href="'/product-'+p.productId+'.html'" target="_blank">
+                        <div class="page_main_type" v-if="p.productType == 2">医疗器械</div>
                         <img :src="p.image" :alt="p.name">
                     </a>
                     <a class="name" :href="'/product-'+p.productId+'.html'" target="_blank">

Some files were not shown because too many files changed in this diff