Bläddra i källkod

分类商品列表增加筛选项、商品详情增加配套商品、确认订单增加订单金额不足1000元弹窗提示信息

zhengjinyi 3 år sedan
förälder
incheckning
afd71dfa36

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

@@ -77,7 +77,45 @@ li{list-style:none;}
 .productBox .detailBox .concatBox{height:120px;padding:15px}
 .productBox .detailBox .concatBox img{height:120px;width:auto}
 .productBox .detailBox .upgrade{background:#F94B4B;border-radius:2px;display:inline-block;text-align:center;color:#FFFFFF;height:40px;line-height:40px;padding:0 30px;font-size:16px}
-
+/*配套商品*/
+.product-supporting{width: 100%;min-height: 200px;background-color: #FFFFFF;box-sizing: border-box;padding: 16px;margin-bottom: 16px;}
+.product-supporting-title{width: 100%;height: 30px;line-height: 30px;text-align: left;font-size: 16px;color: #333333;font-weight: bold;}
+.product-supporting-content{width: 100%;height: auto;}
+.product-supporting-td{width: 100%;height: 38px;line-height: 38px;}
+.product-supporting-td p{font-size: 14px;color: #627386;float: left;text-align: center;}
+.product-supporting-td p.td-1{width: 10%;text-align: left;}
+.product-supporting-td p.td-2{width: 25%;text-align: center;}
+.product-supporting-td p.td-3{width: 15%;}
+.product-supporting-td p.td-4{width: 15%;}
+.product-supporting-td p.td-5{width: 20%;}
+.product-supporting-td p.td-6{width: 15%;}
+.product-supporting-list{width: 100%;height: 102px;box-sizing: border-box;padding: 16px;}
+.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-2{width:25%;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%;line-height: 70px}
+.product-supporting-list .tr-4{width:15%;box-sizing: border-box;padding: 16px 0 0 44px;text-align: left;}
+.product-supporting-list .tr-4 .price .price_text_tag .svip-tag,
+.product-supporting-list .tr-4 .price .price_text_tag .listTag{-webkit-transform: translateX(4px);-ms-transform: translateX(4px);transform: translateX(4px)}
+.product-supporting-list .tr-4 .price .svip-tag{width:100%;height:22px;letter-spacing:0}
+.product-supporting-list .tr-4 .price .couponTag{margin: 0 4px 0 0;float: left;}
+.product-supporting-list .tr-4 .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}
+.product-supporting-list .tr-4 .price .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+.product-supporting-list .tr-4 .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}
+.product-supporting-list .tr-4 .price .svip-tag .svip-price span{color: #333}
+.product-supporting-list .tr-5{width:20%;box-sizing: border-box;padding: 16px 0;}
+.product-supporting-list .tr-5 .number{display:inline-block;width:96px;line-height:24px;height:24px;box-sizing:border-box;border:1px solid #FFE6DC;border-radius:2px;font-size:0;white-space:nowrap;text-align:center;overflow:hidden;vertical-align:top}
+.product-supporting-list .tr-5 .number>em{display:inline-block;width:24px;height:22px;background:#FFE6DC;font-size:20px;font-style:normal;line-height:20px;vertical-align:top;cursor:pointer}
+.product-supporting-list .tr-5 .number input{width:48px;border:none;line-height:22px;font-size:14px;vertical-align:top;text-align:center;color:#E15616}
+.product-supporting-list .tr-6{width:15%;box-sizing: border-box;padding: 16px 0;}
+.product-supporting-button{width: 100%;height: auto;}
+.product-supporting-button .product-supporting-total{width: 100%;height: 44px;text-align: right;line-height: 44px;font-size: 16px;color: #22272E;}
+.product-supporting-button .product-supporting-btn{width: 100%;height: 36px;text-align: right;}
+.product-supporting-button .product-supporting-btn .btn{width: 128px;height: 36px;text-align: center;border: 1px solid #E15621;float: right;margin-left: 20px;line-height: 36px;font-size: 14px;}
+.product-supporting-button .product-supporting-btn .btn.add{background-color: #FFE6DC;color: #E15621;}
+.product-supporting-button .product-supporting-btn .btn.buy{background-color: #E15621;color: #FFFFFF;}
 .recommendBox{margin-bottom:16px;overflow: hidden;}
 .recommendBox .hd{font-size:16px;color:#4A4F58;font-weight:bold;padding:16px 15px}
 #productRecommend{padding:16px 5px;background: #fff}

+ 49 - 2
src/main/resources/static/css/product/instruement-list.css

@@ -1,9 +1,24 @@
 .productItem .price .price_text_tag{-webkit-transform: scale(0.8) translateX(-20px);-ms-transform: scale(0.8) translateX(-20px);transform: scale(0.8) translateX(-20px)}
 
 @media screen and (min-width:768px){
-    #productList{width: 1184px;margin:32px auto}
+    #productList{width: 1184px;margin:32px auto;position: relative;}
     .crumbs-nav{height: 40px}
     .crumbs-nav .crumbs-link{color:#4a4f58 }
+    .product-brand{width:1184px;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-more{width: 50px;height: 32px;line-height: 32px;font-size: 14px;margin: 0 auto;color: #909090;text-align: left;transition: all 0.2s;cursor: pointer;box-sizing: border-box;position: absolute;right: 24px;top: 24px;}
+    .product-brand-more .icon:before{background-position: -93px 7px;width: 20px;height: 32px;right: 0;position: absolute;}
+    .product-brand-list{width: 970px;float: left;box-sizing: border-box;padding:0 24px;height: 44px;overflow: scroll;overflow-x: hidden;overflow-y:auto;}
+    .product-brand-list.show{height: 88px;}
+    .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;}
+    .sortBox{width:1184px;margin:16px auto;box-sizing:border-box;text-align:center;background:#FFFFFF;position: relative;}
+    .sortBox li{float: left;}
     .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:27px}
     .sortBox li:after{border-width:5px 5px 0 5px;border-color:#BEC2C9 transparent transparent transparent;top:34px}
@@ -12,6 +27,11 @@
     .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;}
+
     .classification .class-nav-main div,.classification .class-nav-main li{text-align:center;display:inline-block;line-height:64px;color:#4a4f58;font-size:16px;cursor:pointer;padding:0 16px}
     #listClassify{margin:0 auto;-webkit-box-sizing:border-box;box-sizing:border-box;background:rgba(255,255,255,1);border-radius:0 0 2px 2px}
     .classification{border-bottom:1px solid #f7f7f7;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-flex}
@@ -63,10 +83,11 @@
 
 
 @media screen and (max-width:768px){
+    #productList{position: relative;}
     .sortBox{width:100%;margin:1px auto;box-sizing:border-box;background:#FFF;}
     .sortBox li{width:15vw;height:11.6vw;line-height:11.6vw;text-align:center;font-size:3.4vw;color:#93979F;position:relative;margin:0 5vw}
     .sortBox li.on,.sortBox li.up,.sortBox li.down{color:#E15616}
-    .sortBox li:before,.sortBox li:after{position:absolute;right:1vw;content:'';width:0;height:0;border-style:solid}
+    .sortBox li:before,.sortBox li:after{position:absolute;right:0;content:'';width:0;height:0;border-style:solid}
     .sortBox li:before{border-width:0 .8vw .8vw .8vw;border-color:transparent transparent #BEC2C9 transparent;top:5vw}
     .sortBox li:after{border-width:.8vw .8vw 0 .8vw;border-color:#BEC2C9 transparent transparent transparent;top:6.5vw}
     .sortBox li:first-child:before,.sortBox li:first-child:after{display:none}
@@ -104,5 +125,31 @@
     .productItem .price .price_text_tag .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 .price_text_tag .svip-tag .svip-price span{color: #333}
     .productItem .price .price_text_tag .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;}
+
 }
 

+ 35 - 6
src/main/resources/static/css/product/list.css

@@ -10,11 +10,14 @@ li{list-style:none}
     .product-brand-more{width: 50px;height: 32px;line-height: 32px;font-size: 14px;margin: 0 auto;color: #909090;text-align: left;transition: all 0.2s;cursor: pointer;box-sizing: border-box;position: absolute;right: 24px;top: 24px;}
     .product-brand-more .icon:before{background-position: -93px 7px;width: 20px;height: 32px;right: 0;position: absolute;}
     .product-brand-list{width: 970px;float: left;box-sizing: border-box;padding:0 24px;height: 44px;overflow: scroll;overflow-x: hidden;overflow-y:auto;}
-    .product-brand-list.show{line-height: 88px;}
+    .product-brand-list.show{height: 88px;}
     .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 a{width: 100%;height: 100%;display: block;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.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;}
-    .sortBox{width:1184px;margin:16px auto;box-sizing:border-box;font-size:0;text-align:center;background:#FFFFFF;position: relative;}
+    .product-brand-list .brand-list.checked a:hover{color: #E15621;}
+    .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}
@@ -25,8 +28,8 @@ li{list-style:none}
     .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{float: right;}
-    .sortBox-checked .coll-span{display: block;float: left;margin-left: 20px;height: 28px;line-height: 16px;box-sizing: border-box;padding: 6px 0;display: flex;cursor: pointer;}
+    .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;}
 
@@ -78,11 +81,12 @@ li{list-style:none}
 * 移动端
 */
 @media screen and (max-width:768px){
+    #productList{position: relative;}
     /*footer{display:none!important;}*/
     .sortBox{width:100%;margin:1px auto;box-sizing:border-box;background:#FFF;}
     .sortBox li{width:15vw;height:11.6vw;line-height:11.6vw;text-align:center;font-size:3.4vw;color:#93979F;position:relative;margin:0 5vw}
     .sortBox li.on,.sortBox li.up,.sortBox li.down{color:#E15616}
-    .sortBox li:before,.sortBox li:after{position:absolute;right:1vw;content:'';width:0;height:0;border-style:solid}
+    .sortBox li:before,.sortBox li:after{position:absolute;right:0vw;content:'';width:0;height:0;border-style:solid}
     .sortBox li:before{border-width:0 .8vw .8vw .8vw;border-color:transparent transparent #BEC2C9 transparent;top:5vw}
     .sortBox li:after{border-width:.8vw .8vw 0 .8vw;border-color:#BEC2C9 transparent transparent transparent;top:6.5vw}
     .sortBox li:first-child:before,.sortBox li:first-child:after{display:none}
@@ -127,6 +131,31 @@ li{list-style:none}
     .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;}
 
 }
 

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

@@ -237,6 +237,20 @@ li{list-style:none}
     .listWrap .cartItem .priceTag .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
     .listWrap .cartItem .priceTag .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:24px;padding-right:2px;margin-left:-27px;line-height:22px;background:#F0CB72;opacity:1;border-radius:2px;font-size:14px}
     .listWrap .cartItem .priceTag .svip-tag .svip-price span{color: #333}
+    /*订单金额偏小弹窗提示*/
+    .confirm-Model{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background: rgba(0,0,0,0.3);z-index: 9999;}
+    .confirm-Model .model-content{width: 389px;height: 342px;background: #FFFFFF;border-radius: 2px;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;z-index: 9998;}
+    .confirm-Model .model-content .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: #F8F8F8;padding: 0 14px;}
+    .confirm-Model .model-content .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;}
+    .confirm-Model .model-content .content{margin: 24px 0 0 0;width: 100%;height: auto;line-height: 24px;float: left;padding: 0 14px;box-sizing: border-box;}
+    .confirm-Model .model-content .content p{text-align: left;font-size: 12px;color: #666666;font-weight: normal;}
+    .confirm-Model .model-content .content p.small{font-size:12px;color: #E15621;}
+    .confirm-Model .model-content .content-image {width: 100%;height: 128px;float: left;margin-bottom: 20px;}
+    .confirm-Model .model-content .content-image img{width: 128px;height: 128px;display: block;margin: 0 auto;}
+    .confirm-Model .model-content .button{width: 100%;height: 32px;float: left;padding: 0 14px;box-sizing: border-box;}
+    .confirm-Model .model-content .button a{height: 32px;padding: 0 15px;display: block;margin-left: 10px;border-radius: 2px;font-size: 14px;text-align: center;line-height: 32px;color: #FFFFFF;float: right;box-sizing: border-box;border: 1px solid #FFFFFF;}
+    .confirm-Model .model-content .button a.cancel{background: #FFFFFF;border-color: #B8BFCA;color: #333333;}
+    .confirm-Model .model-content .button a.confirm{background: #E15616;}
 
 }
 
@@ -428,6 +442,20 @@ li{list-style:none}
     .coupon-popup .coupon-list-cell .coupon-tags{height: 4.8vw;line-height: 4.8vw;text-align: center;background-color: #f94b4b;color: #FFF;border-radius: 1.6vw 0 1.6vw 0;position: absolute;top: 0;left: 0;padding: 0 1.5vw;font-size: 3vw;}
     .coupon-popup .coupon-list-cell{background: url("/img/account/icon-coupon-uesb@h52x.png") no-repeat;background-size: cover;}
     .coupon-popup .coupon-list-cell.none{background: url("/img/account/icon-coupon-received@h52x.png") no-repeat;background-size: cover;}
+    /*订单金额偏小弹窗提示*/
+    .confirm-Model{width: 100%;height: 100%;position: fixed;top: 0;left: 0;background: rgba(0,0,0,0.3);z-index: 9999;}
+    .confirm-Model .model-content{width: 74.6vw;height: 100.8vw;background: #FFFFFF;border-radius: 2vw;position: absolute;top: 0;right: 0;left: 0;bottom: 0;margin: auto;z-index: 9998;}
+    .confirm-Model .model-content .title{width: 100%;height: 11vw;box-sizing: border-box;font-size: 14px;line-height: 11vw;text-align: left;color: #333333;float: left;position: relative;border-bottom: 1px solid #EFEFEF;background-color: #FFFFFF;padding: 0 14px;}
+    .confirm-Model .model-content .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;}
+    .confirm-Model .model-content .content{margin: 4.8vw 0 4.8vw 0;width: 100%;height: auto;line-height: 4.8vw;float: left;box-sizing: border-box;}
+    .confirm-Model .model-content .content p{text-align: left;font-size: 3.4vw;color: #666666;font-weight: normal;}
+    .confirm-Model .model-content .content p.small{font-size:3vw;color: #E15621;}
+    .confirm-Model .model-content .content-image {width: 100%;height: 128px;float: left;margin-bottom: 20px;}
+    .confirm-Model .model-content .content-image img{width: 29.5vw;height: 29.5vw;display: block;margin: 0 auto;}
+    .confirm-Model .model-content .button{width: 100%;height: 9.9vw;float: left;box-sizing: border-box;}
+    .confirm-Model .model-content .button a{width: 100%;height: 9.9vw;display: block;border-radius: 2px;font-size: 3.4vw;text-align: center;line-height: 9.9vw;color: #FFFFFF;float: right;box-sizing: border-box;border: 1px solid #FFFFFF;}
+    .confirm-Model .model-content .button a.cancel{background: #FFFFFF;border-color: #B8BFCA;color: #333333;}
+    .confirm-Model .model-content .button a.confirm{background: #E15616;margin-bottom: 2vw}
 
 }
 

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


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

@@ -41,6 +41,11 @@ var productDetail = new Vue({
         trainingType: '',
         isShowPopup: false,
         currentTab: 1,
+        listQuery:{
+            userId:0,
+            pageNum:1,
+            pageSize:12,
+        },
         couponParam: {// 获取弹窗优惠券领取参数
             userId: 0,
             productId: 0,
@@ -51,6 +56,7 @@ var productDetail = new Vue({
         productCoupon: [], 							// 优惠券
         productCouponList: [],						// 优惠券弹窗列表
         collectionType:false,                       // 商品收藏状态
+        supportingList:[]
 
     },
     filters: {
@@ -75,6 +81,44 @@ var productDetail = new Vue({
         }
     },
     methods: {
+        // 是否显示vip标签价格
+        showVipPriceTag: function(product){
+            return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
+        },
+        PromotionsFormat:function(promo){//促销活动类型数据处理
+            if(promo!=null){
+                if(promo.type == 1 && promo.mode == 1){
+                    return true
+                }else{
+                    return false
+                }
+            }
+            return false
+        },
+        getCollectionProductList: function () {// 获取收藏商品列表
+            var _self = this;
+            ProductApi.getProductUserLikeList(_self.listQuery,function (response) {
+                if (response.code === 0 ) {
+                    var data = response.data;
+                    // _self.listRecord = data.totalRecord;
+                    if(data.results.length > 0 ){
+                        var list = data.results.map((el,index)=>{
+                            el.isChecked = false;
+                            return el;
+                        });
+                        if(isPC){
+                            _self.supportingList = list;
+                        }else{
+                            _self.supportingList = _self.supportingList.concat(list);
+                        }
+                    }else{
+                        _self.supportingList = [];
+                    }
+                }else {
+                    CAIMEI.Alert(response.msg, '确定');
+                }
+            });
+        },
         getImages: function () {
             var _self = this;
             if (!this.productId) {
@@ -475,7 +519,7 @@ var productDetail = new Vue({
     },
     created: function () {
         this.productId = this.couponParam.productId = $("#productId").val();
-        this.userId = this.couponParam.userId = GLOBAL_USER_ID;
+        this.userId = this.couponParam.userId = this.listQuery.userId = GLOBAL_USER_ID;
         this.productStock = $("#productStock").val();
         this.getImages();
         // identity: 0个人,1协销,2会员机构,3供应商,4普通机构
@@ -493,7 +537,7 @@ var productDetail = new Vue({
         this.getProductPrice();
         this.getParameters();
         this.queryProductDetilsCoupons();
-
+        this.getCollectionProductList();
         // $('.productInfo').slide({
         //     mainCell:".tabCon"
         //     ,titCell:".tabTit span"

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

@@ -35,8 +35,16 @@ var productList = new Vue({
             { name: '三诺激光', isChecked: false },
             { name: '三诺激光', isChecked: false },
             { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
         ],
-        isAllChecked:false,
+        checkedBrandList:[],
+        checkedBrandLength:0,
+        isProductScreen:false,
+        isActiviChecked:false,
+        isNewsChecked:false,
         isShowAllBrands:false
     },
     filters: {
@@ -65,9 +73,6 @@ var productList = new Vue({
         }
     },
     methods: {
-        showMoreItem(){
-            this.isShowAllBrands = true;
-        },
         // 是否显示vip标签价格
         showVipPriceTag: function(product){
             return (product.priceFlag !== 1 && product.svipProductFlag === 1 && ((GLOBAL_USER_IDENTITY === 4 && GLOBAL_VIP_FLAG === 1) || GLOBAL_USER_IDENTITY === 2));
@@ -137,6 +142,32 @@ var productList = new Vue({
                 }
             });
         },
+        choiceBrand:function(brand,index){// 选择品牌
+            var _self = this;
+            brand.isChecked = !brand.isChecked
+            if (brand.isChecked) {
+                _self.checkedBrandList.push(brand)
+            } else {
+                _self.checkedBrandList.splice(index, 1)
+            }
+            _self.checkedBrandLength = _self.checkedBrandList.length
+            console.log('checkedBrandList', _self.checkedBrandList)
+        },
+        showMoreItem:function(){// 点击更多品牌
+            this.isShowAllBrands = !this.isShowAllBrands;
+        },
+        hanldCheckedActivi:function(){// 选择促销商品选项
+            this.isActiviChecked = !this.isActiviChecked;
+        },
+        hanldCheckedNews:function(){// 选择新品选项
+            this.isNewsChecked = !this.isNewsChecked;
+        },
+        showIsProductScreen:function(){//
+            this.isProductScreen = true;
+        },
+        handleConfirmScreen:function(){
+            this.isProductScreen = false;
+        }
         // getListByCategory: function (path, categoryId) {
         //     var _self = this;
         //     $.getJSON(spiServer+"/search/query/product/"+ path ,{

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

@@ -22,7 +22,26 @@ var productList = new Vue({
             pageNum: 1,
             idType:1
         },
-        addhtml:'<span class="tag">美博会</span>'
+        addhtml:'<span class="tag">美博会</span>',
+        brandLists: [
+            { name: '斯蒂芬斯', isChecked: false },
+            { name: 'Beautsecre', isChecked: false },
+            { name: '意大利DEP', isChecked: false },
+            { name: '美生美', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+            { name: '三诺激光', isChecked: false },
+        ],
+        checkedBrandList:[],
+        checkedBrandLength:0,
+        isProductScreen:false,
+        isActiviChecked:false,
+        isNewsChecked:false,
+        isShowAllBrands:false
     },
      filters:{
          NumFormat:function(value) {//处理金额
@@ -104,6 +123,32 @@ var productList = new Vue({
             }
             return false
         },
+        choiceBrand:function(brand,index){// 选择品牌
+            var _self = this;
+            brand.isChecked = !brand.isChecked
+            if (brand.isChecked) {
+                _self.checkedBrandList.push(brand)
+            } else {
+                _self.checkedBrandList.splice(index, 1)
+            }
+            _self.checkedBrandLength = _self.checkedBrandList.length
+            console.log('checkedBrandList', _self.checkedBrandList)
+        },
+        showMoreItem:function(){// 点击更多品牌
+            this.isShowAllBrands = !this.isShowAllBrands;
+        },
+        hanldCheckedActivi:function(){// 选择促销商品选项
+            this.isActiviChecked = !this.isActiviChecked;
+        },
+        hanldCheckedNews:function(){// 选择新品选项
+            this.isNewsChecked = !this.isNewsChecked;
+        },
+        showIsProductScreen:function(){//
+            this.isProductScreen = true;
+        },
+        handleConfirmScreen:function(){
+            this.isProductScreen = false;
+        }
     },
     created:function () {
         var userInfo = localStorage.getItem('userInfo');

+ 23 - 6
src/main/resources/static/js/shopping/confirm.js

@@ -118,6 +118,9 @@ var shoppingConfirm = new Vue({
         couponList:[], // 可用优惠券列表
         isCouponShow:false,
         svipReducedPrice: 0, //超级会员优惠金额
+        isModelAlert:false, // 订单不足提示弹窗
+        isModelAlertText:'',
+        isShowConfirm:true
     },
     computed: {
 
@@ -663,6 +666,17 @@ var shoppingConfirm = new Vue({
             return ((arg1*m-arg2*m)/m).toFixed(n);
         },
         submitOrder: function(){
+            var _self = this;
+            if( _self.confirmParam.payInfo.orderShouldPayFee<1000){
+                _self.isModelAlert = true;
+                _self.isModelAlertText = '采购金额过小,将扣除500采美豆。建议您使用微信扫描 以下二维码,进入采美旗下“呵呵商城”小程序购买小额 商品。';
+            }else if(_self.confirmParam.payInfo.orderShouldPayFee<1000 && _self.userBeans<0){
+                _self.isModelAlert = true;
+                _self.isShowConfirm = false;
+                _self.isModelAlertText = '采美豆不足,不能提交订单。您可使用微信扫描以下二维码,进入采美旗下“呵呵商城”小程序购买小额商品。';
+            }
+        },
+        handleClickOrderSubmitMit:function () {
             var _self = this;
             if(_self.submitLoading){return false;}
             if(!_self.confirmParam.addressId){
@@ -726,7 +740,7 @@ var shoppingConfirm = new Vue({
                 _self.confirmParam.orderInvoice = _self.orderInvoice;
             }
             var hanldPostageFlag =
-            _self.confirmParam.payInfo.postage = parseInt(_self.hanldPostage).toFixed(2);
+                _self.confirmParam.payInfo.postage = parseInt(_self.hanldPostage).toFixed(2);
             _self.confirmParam.payInfo.postageFlag = parseInt(_self.hanldPostageFlag);
             _self.confirmParam.payInfo.orderShouldPayFee = parseFloat(_self.hanldShouldPayFee).toFixed(2);
             _self.confirmParam.payInfo = JSON.stringify(_self.confirmParam.payInfo);
@@ -743,11 +757,11 @@ var shoppingConfirm = new Vue({
                         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
-                            };
+                            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;
@@ -764,6 +778,9 @@ var shoppingConfirm = new Vue({
                 }
             });
         },
+        handleCloseModel:function () {
+            this.isModelAlert = false;
+        },
         getProductIds: function(list){// 获取订单商品id列表
             var productIds = [];
             list.forEach(function(supplier){

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

@@ -71,7 +71,9 @@ var orderPage = new Vue({
                     11:'退款回收',
                     12:'登录奖励',
                     13:'查看商品资料',
-                    14:'购买超级会员'
+                    14:'购买超级会员',
+                    15:'系统退回',
+                    16:'系统扣除',
                 };
             Object.keys(stateTextObject).forEach(function(key){
                 if(key == state){

+ 114 - 0
src/main/resources/templates/product/detail.html

@@ -258,6 +258,120 @@
                 </template>
             </div>
         </div>
+        <!--配套商品区域-->
+        <div class="wrap">
+            <div class="product-supporting">
+                <!--PC-->
+                <template v-if="isPC">
+                    <div class="product-supporting-title">配套商品</div>
+                    <div class="product-supporting-content">
+                        <div class="product-supporting-td">
+                            <p class="td-1">商品图片</p>
+                            <p class="td-2">商品名称</p>
+                            <p class="td-3">规格</p>
+                            <p class="td-4">价格</p>
+                            <p class="td-5">采购量</p>
+                            <p class="td-6">选择</p>
+                        </div>
+                        <div class="product-supporting-pro">
+                            <div class="product-supporting-list" v-for="pros in supportingList">
+                                <div class="tr tr-1">
+                                    <img :src="pros.image" :alt="pros.name">
+                                </div>
+                                <div class="tr tr-2">
+                                    <p v-html="pros.name"></p>
+                                </div>
+                                <div class="tr tr-3">
+                                    <p v-html="pros.unit"></p>
+                                </div>
+                                <div class="tr tr-4">
+                                    <div class="price">
+                                        <!--用户身份 0、个人 1、协销 2、会员机构 3、供应商 4,普通机构-->
+                                        <template v-if="GLOBAL_USER_ID && GLOBAL_USER_ID>0">
+                                            <!--0公开价格 1不公开价格 2仅对会员机构公开-->
+                                            <div class="main_price_unde" v-if="pros.priceFlag==1">¥价格未公开</div>
+                                            <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
+                                            <template
+                                                    v-else-if="GLOBAL_USER_IDENTITY === 2 || (pros.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && pros.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                                                <div class="main_price_show"
+                                                     :class="{none: PromotionsFormat(pros.promotions) || (pros.svipProductFlag === 1 && showVipPriceTag(pros))}">
+                                                    ¥{{ (PromotionsFormat(pros.promotions) || showVipPriceTag(pros) ? pros.originalPrice :
+                                                    pros.price ) | NumFormat }}
+                                                </div>
+                                            </template>
+                                            <!--机构价仅会员可见 && 用户是普通机构-->
+                                            <div class="main_price_unde" v-else-if="pros.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">
+                                                ¥会员可见
+                                            </div>
+                                            <!--供应商除自己的商品外,也显示价格等级-->
+                                            <div class="price_grade" v-else><span class="bold">¥</span><i
+                                                    :class="'icon mIcon i'+pros.priceGrade"></i></div>
+                                            <div class="price_text_tag clear">
+                                                <p class="couponTag" v-if="pros.couponsLogo">优惠券</p>
+                                                <template v-if="pros.svipProductFlag === 1">
+                                                    <div class="svip-tag">
+                                                        <div class="svip-icon">SVIP</div>
+                                                        <template v-if="showVipPriceTag(pros)">
+                                                            <div class="svip-price">
+                                                                <span v-html="pros.svipPriceTag"></span>
+                                                            </div>
+                                                        </template>
+                                                    </div>
+                                                </template>
+                                                <template v-else>
+                                                    <p class="listTag" v-if="pros.actStatus==1">{{pros.promotions.name}}
+                                                        <span v-if="pros.priceFlag != 1 && PromotionsFormat(pros.promotions)">:¥{{pros.price | NumFormat}}</span>
+                                                    </p>
+                                                </template>
+                                            </div>
+                                        </template>
+                                        <template v-else>
+                                            <div class="price_grade"><span class="bold">¥</span><i
+                                                    :class="'icon mIcon i'+pros.priceGrade"></i></div>
+                                            <div class="price_text_tag">
+                                                <p class="couponTag" v-if="pros.couponsLogo">优惠券</p>
+                                                <template v-if="pros.svipProductFlag === 1">
+                                                    <div class="svip-tag">
+                                                        <div class="svip-icon">SVIP</div>
+                                                    </div>
+                                                </template>
+                                                <template v-else>
+                                                    <p class="listTag" v-if="pros.actStatus==1">{{p.promotions.name}}</p>
+                                                </template>
+                                            </div>
+                                        </template>
+                                    </div>
+                                </div>
+                                <div class="tr tr-5">
+                                    <span class="number">
+                                        <em class="sub" @click="">-</em>
+                                        <input type="number" :value="pros.number" v-model="pros.number" @change="">
+                                        <em class="add" @click="">+</em>
+                                    </span>
+                                </div>
+                                <div class="tr tr-6">
+                                    <input class="check" type="checkbox" @change="" v-model="pros.isChecked">
+                                </div>
+                            </div>
+                        </div>
+                        <div class="product-supporting-button">
+                            <div class="product-supporting-total">
+                                <p>共 <span>100</span>件商品,合计:<span>50000</span></p>
+                            </div>
+                            <div class="product-supporting-btn">
+                                <div class="btn buy">立即购买</div>
+                                <div class="btn add">加入购物车</div>
+                            </div>
+                        </div>
+                    </div>
+                </template>
+                <!--H5-->
+                <template v-else>
+
+                </template>
+            </div>
+        </div>
+        <!--相关推荐区域-->
         <div class="recommendBox" v-if="recommends.length>0">
             <div class="hd">相关推荐</div>
             <div id="productRecommend" class="swiper-container">

+ 63 - 1
src/main/resources/templates/product/instruelist.html

@@ -53,6 +53,55 @@
                     </div>
                 </div>
             </div>
+        </template>
+        <!--品牌选择-->
+        <template v-if="isPC">
+            <div class="product-brand clear">
+                <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">
+                    <p class="title">品牌</p>
+                    <p v-if="!isPC" class="num">已选中<span>{{ checkedBrandLength }}</span>个品牌</p>
+                </div>
+                <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
+                    <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"
+                         @click="choiceBrand(brand, index)" :class="brand.isChecked ? 'checked' : ''">
+                        <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+                    </div>
+                </div>
+                <div class="product-brand-more" :class="isShowAllBrands ? 'show' : ''" @click="showMoreItem">{{
+                    isShowAllBrands ? '收起' : '更多' }} <i class="icon mIcon"></i></div>
+            </div>
+        </template>
+        <template v-else>
+            <div class="product-brand-fiexd" v-if="isProductScreen">
+                <div class="product-brand clear">
+                    <div class="product-screen">
+                        <div class="sortBox-new" @click="hanldCheckedActivi">
+                            <span>促销商品</span>
+                            <span class="coll-checked" :class="[isActiviChecked ? 'checked': '']"></span>
+                        </div>
+                        <div class="sortBox-new" @click="hanldCheckedNews">
+                            <span>新品</span>
+                            <span class="coll-checked" :class="[isNewsChecked ? 'checked': '']"></span>
+                        </div>
+                    </div>
+                    <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">
+                        <p class="title">品牌</p>
+                        <p v-if="!isPC" class="num">已选中<span>{{ checkedBrandLength }}</span>个品牌</p>
+                    </div>
+                    <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
+                        <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"
+                             @click="choiceBrand(brand, index)" :class="brand.isChecked ? 'checked' : ''">
+                            <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+                        </div>
+                    </div>
+                    <div class="product-brand-more" :class="isShowAllBrands ? 'show' : ''" @click="showMoreItem">{{
+                        isShowAllBrands ? '收起' : '查看全部' }} <i
+                                class="icon mIcon"></i></div>
+                    <div class="product-screen-btn" @click="handleConfirmScreen">
+                        <div class="sub-button">确定</div>
+                    </div>
+                </div>
+            </div>
         </template>
             <div class="sortBox classification">
                 <ul class="mfc class-nav-main">
@@ -78,7 +127,20 @@
                             @click="toSortList('price',1)"><span>价格</span></li>
                             <li v-else @click="toSortList('price',0)"><span>价格</span></li>
                         </template>
+                        <template v-if="!isPC">
+                            <li @click="showIsProductScreen"><span>筛选</span></li>
+                        </template>
                 </ul>
+                <div class="sortBox-checked" v-if="isPC">
+                    <div class="sortBox-new" @click="hanldCheckedActivi">
+                        <span class="coll-checked" :class="[isActiviChecked ? 'checked': '']"></span>
+                        <span>促销商品</span>
+                    </div>
+                    <div class="sortBox-new" @click="hanldCheckedNews">
+                        <span class="coll-checked" :class="[isNewsChecked ? 'checked': '']"></span>
+                        <span>新品</span>
+                    </div>
+                </div>
             </div>
         </div>
         <!--商品列表-->
@@ -141,7 +203,7 @@
                                         </div>
                                     </template>
                                     <!--会员可见-->
-                                    <div class="main_price_unde" v-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
+                                    <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
                                     <!--其他-->
                                     <div class="price_grade" v-else><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
                                 </template>

+ 121 - 70
src/main/resources/templates/product/list.html

@@ -19,53 +19,53 @@
         <span>&gt;</span> <a href="javascript:void(0);" @click="toPagination(1)" v-text="params.keyword"></a>
     </div>
 
-<!--    <template v-if="isPC && listData && listData.length>0">-->
-<!--        &lt;!&ndash; 面包屑 &ndash;&gt;-->
-<!--        <div v-if="searchFlag" class="crumbs">-->
-<!--            <span>搜索结果</span>-->
-<!--            <span>&gt;</span> <a href="javascript:void(0);" @click="toPagination(1)" v-text="params.keyword"></a>-->
-<!--        </div>-->
-<!--        <div v-else class="crumbs">-->
-<!--            <a href="/">首页</a>-->
-<!--            <template v-if="params.bid && params.bid>0">-->
-<!--                <template v-if="params.sid && params.sid>0">-->
-<!--                    <span>&gt;</span> <a :href="'/product/list.html?category='+params.bid+'-0-0'" v-text="bigType"></a>-->
-<!--                    <template v-if="params.tid && params.tid>0">-->
-<!--                        <span>&gt;</span> <a :href="'/product/list.html?category='+params.bid+'-'+params.sid+'-0'" v-text="smallType"></a>-->
-<!--                        <span>&gt;</span> <span v-text="tinyType"></span>-->
-<!--                    </template>-->
-<!--                    <template v-else>-->
-<!--                        <span>&gt;</span> <span v-text="smallType"></span>-->
-<!--                    </template>-->
-<!--                </template>-->
-<!--                <template v-else>-->
-<!--                    <span>&gt;</span> <span v-text="bigType"></span>-->
-<!--                </template>-->
-<!--            </template>-->
-<!--        </div>-->
-<!--        &lt;!&ndash;分类&ndash;&gt;-->
-<!--        <div v-if="(!searchFlag)" id="listClassify" class="classifyBox">-->
-<!--            <div class="clsTab">-->
-<!--                <template v-for="(big,i) in classify">-->
-<!--                    <a :class="{'on': params.bid==big.bigTypeID}" v-if="big.validFlag==1" href="javascript:void(0);" v-text="big.name"></a>-->
-<!--                </template>-->
-<!--            </div>-->
-<!--            <div class="clsCon">-->
-<!--                <div class="tabItem" v-for="big in classify" :bid="big.bigTypeID" style="display: none;">-->
-<!--                    <div class="line" :class="{'on': params.sid==small.smallTypeID}" v-for="small in big.smalltypeList" v-if="small.validFlag==1">-->
-<!--                        <div class="lft" :class="{'on': params.sid==small.smallTypeID}">-->
-<!--                            <a :href="'/product/list.html?category='+big.bigTypeID+'-'+small.smallTypeID+'-0'" v-text="small.name"></a>-->
-<!--                        </div>-->
-<!--                        <div class="rgt">-->
-<!--                            <template v-for="tiny in small.tinytypeList">-->
-<!--                                <a v-if="tiny.validFlag==1" :class="{'on': params.tid==tiny.tinyTypeID}" :href="'/product/list.html?category='+big.bigTypeID+'-'+small.smallTypeID+'-'+tiny.tinyTypeID" v-text="tiny.name"></a>-->
-<!--                            </template>-->
-<!--                        </div>-->
-<!--                    </div>-->
-<!--                </div>-->
-<!--            </div>-->
-<!--        </div>-->
-<!--    </template>-->
+    <!--    <template v-if="isPC && listData && listData.length>0">-->
+    <!--        &lt;!&ndash; 面包屑 &ndash;&gt;-->
+    <!--        <div v-if="searchFlag" class="crumbs">-->
+    <!--            <span>搜索结果</span>-->
+    <!--            <span>&gt;</span> <a href="javascript:void(0);" @click="toPagination(1)" v-text="params.keyword"></a>-->
+    <!--        </div>-->
+    <!--        <div v-else class="crumbs">-->
+    <!--            <a href="/">首页</a>-->
+    <!--            <template v-if="params.bid && params.bid>0">-->
+    <!--                <template v-if="params.sid && params.sid>0">-->
+    <!--                    <span>&gt;</span> <a :href="'/product/list.html?category='+params.bid+'-0-0'" v-text="bigType"></a>-->
+    <!--                    <template v-if="params.tid && params.tid>0">-->
+    <!--                        <span>&gt;</span> <a :href="'/product/list.html?category='+params.bid+'-'+params.sid+'-0'" v-text="smallType"></a>-->
+    <!--                        <span>&gt;</span> <span v-text="tinyType"></span>-->
+    <!--                    </template>-->
+    <!--                    <template v-else>-->
+    <!--                        <span>&gt;</span> <span v-text="smallType"></span>-->
+    <!--                    </template>-->
+    <!--                </template>-->
+    <!--                <template v-else>-->
+    <!--                    <span>&gt;</span> <span v-text="bigType"></span>-->
+    <!--                </template>-->
+    <!--            </template>-->
+    <!--        </div>-->
+    <!--        &lt;!&ndash;分类&ndash;&gt;-->
+    <!--        <div v-if="(!searchFlag)" id="listClassify" class="classifyBox">-->
+    <!--            <div class="clsTab">-->
+    <!--                <template v-for="(big,i) in classify">-->
+    <!--                    <a :class="{'on': params.bid==big.bigTypeID}" v-if="big.validFlag==1" href="javascript:void(0);" v-text="big.name"></a>-->
+    <!--                </template>-->
+    <!--            </div>-->
+    <!--            <div class="clsCon">-->
+    <!--                <div class="tabItem" v-for="big in classify" :bid="big.bigTypeID" style="display: none;">-->
+    <!--                    <div class="line" :class="{'on': params.sid==small.smallTypeID}" v-for="small in big.smalltypeList" v-if="small.validFlag==1">-->
+    <!--                        <div class="lft" :class="{'on': params.sid==small.smallTypeID}">-->
+    <!--                            <a :href="'/product/list.html?category='+big.bigTypeID+'-'+small.smallTypeID+'-0'" v-text="small.name"></a>-->
+    <!--                        </div>-->
+    <!--                        <div class="rgt">-->
+    <!--                            <template v-for="tiny in small.tinytypeList">-->
+    <!--                                <a v-if="tiny.validFlag==1" :class="{'on': params.tid==tiny.tinyTypeID}" :href="'/product/list.html?category='+big.bigTypeID+'-'+small.smallTypeID+'-'+tiny.tinyTypeID" v-text="tiny.name"></a>-->
+    <!--                            </template>-->
+    <!--                        </div>-->
+    <!--                    </div>-->
+    <!--                </div>-->
+    <!--            </div>-->
+    <!--        </div>-->
+    <!--    </template>-->
     <!--loading-->
     <div v-if="listLoading" class="loading">
         <img src="/img/base/loading.gif">
@@ -79,15 +79,54 @@
     </div>
     <template v-else>
         <!--品牌选择-->
-        <div class="product-brand clear">
-            <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">品牌</div>
-            <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
-                <div class="brand-list" v-for="(brand,index) in brandLists" :key="index">
-                    <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+        <template v-if="isPC">
+            <div class="product-brand clear">
+                <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">
+                    <p class="title">品牌</p>
+                    <p v-if="!isPC" class="num">已选中<span>{{ checkedBrandLength }}</span>个品牌</p>
                 </div>
+                <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
+                    <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"
+                         @click="choiceBrand(brand, index)" :class="brand.isChecked ? 'checked' : ''">
+                        <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+                    </div>
+                </div>
+                <div class="product-brand-more" :class="isShowAllBrands ? 'show' : ''" @click="showMoreItem">{{
+                    isShowAllBrands ? '收起' : '更多' }} <i class="icon mIcon"></i></div>
             </div>
-            <div class="product-brand-more" @click="showMoreItem">更多<i class="icon mIcon"></i></div>
-        </div>
+        </template>
+        <template v-else>
+            <div class="product-brand-fiexd" v-if="isProductScreen">
+                <div class="product-brand clear">
+                    <div class="product-screen">
+                        <div class="sortBox-new" @click="hanldCheckedActivi">
+                            <span>促销商品</span>
+                            <span class="coll-checked" :class="[isActiviChecked ? 'checked': '']"></span>
+                        </div>
+                        <div class="sortBox-new" @click="hanldCheckedNews">
+                            <span>新品</span>
+                            <span class="coll-checked" :class="[isNewsChecked ? 'checked': '']"></span>
+                        </div>
+                    </div>
+                    <div class="product-brand-name" :class="isShowAllBrands ? 'show' : ''">
+                        <p class="title">品牌</p>
+                        <p v-if="!isPC" class="num">已选中<span>{{ checkedBrandLength }}</span>个品牌</p>
+                    </div>
+                    <div class="product-brand-list" :class="isShowAllBrands ? 'show' : ''">
+                        <div class="brand-list" v-for="(brand,index) in brandLists" :key="index"
+                             @click="choiceBrand(brand, index)" :class="brand.isChecked ? 'checked' : ''">
+                            <a href="javascript:void(0)" :title="brand.name" v-html="brand.name"></a>
+                        </div>
+                    </div>
+                    <div class="product-brand-more" :class="isShowAllBrands ? 'show' : ''" @click="showMoreItem">{{
+                        isShowAllBrands ? '收起' : '查看全部' }} <i
+                                class="icon mIcon"></i></div>
+                    <div class="product-screen-btn" @click="handleConfirmScreen">
+                        <div class="sub-button">确定</div>
+                    </div>
+                </div>
+            </div>
+        </template>
         <!--排序-->
         <div class="sortBox">
             <ul class="mfc clear">
@@ -113,16 +152,19 @@
                         @click="toSortList('price',1)"><span>价格</span></li>
                     <li v-else @click="toSortList('price',0)"><span>价格</span></li>
                 </template>
+                <template v-if="!isPC">
+                    <li @click="showIsProductScreen"><span>筛选</span></li>
+                </template>
             </ul>
-            <div class="sortBox-checked">
-                <div class="sortBox-new" @click="">
-                    <span class="coll-checked" :class="[isAllChecked ? 'checked': '']"></span>
-                    <span>新品</span>
-                </div>
-                <div class="sortBox-new" @click="">
-                    <span class="coll-checked" :class="[isAllChecked ? 'checked': '']"></span>
+            <div class="sortBox-checked" v-if="isPC">
+                <div class="sortBox-new" @click="hanldCheckedActivi">
+                    <span class="coll-checked" :class="[isActiviChecked ? 'checked': '']"></span>
                     <span>促销商品</span>
                 </div>
+                <div class="sortBox-new" @click="hanldCheckedNews">
+                    <span class="coll-checked" :class="[isNewsChecked ? 'checked': '']"></span>
+                    <span>新品</span>
+                </div>
             </div>
         </div>
         <!--商品列表-->
@@ -156,16 +198,21 @@
                             <!--0公开价格 1不公开价格 2仅对会员机构公开-->
                             <div class="main_price_unde" v-if="p.priceFlag==1">¥价格未公开</div>
                             <!-- 资质机构 || (价格全部机构可见 && 普通机构) || (供应商 && 商品为供应商下的商品) || 超级会员用户 -->
-                            <template v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
+                            <template
+                                    v-else-if="GLOBAL_USER_IDENTITY === 2 || (p.priceFlag === 0 && GLOBAL_USER_IDENTITY === 4) || (GLOBAL_USER_IDENTITY === 3 && p.shopId === GLOBAL_SHOP_ID) || GLOBAL_VIP_FLAG === 1">
                                 <div class="main_price_show"
-                                    :class="{none: PromotionsFormat(p.promotions) || (p.svipProductFlag === 1 && showVipPriceTag(p))}">
-                                    ¥{{ (PromotionsFormat(p.promotions) || showVipPriceTag(p) ? p.originalPrice : p.price ) | NumFormat }}
+                                     :class="{none: PromotionsFormat(p.promotions) || (p.svipProductFlag === 1 && showVipPriceTag(p))}">
+                                    ¥{{ (PromotionsFormat(p.promotions) || showVipPriceTag(p) ? p.originalPrice :
+                                    p.price ) | NumFormat }}
                                 </div>
                             </template>
                             <!--机构价仅会员可见 && 用户是普通机构-->
-                            <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">¥会员可见</div>
+                            <div class="main_price_unde" v-else-if="p.priceFlag==2 && GLOBAL_USER_IDENTITY === 4">
+                                ¥会员可见
+                            </div>
                             <!--供应商除自己的商品外,也显示价格等级-->
-                            <div class="price_grade" v-else><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                            <div class="price_grade" v-else><span class="bold">¥</span><i
+                                    :class="'icon mIcon i'+p.priceGrade"></i></div>
                         </template>
                         <template v-else>
                             <div class="price_text_tag">
@@ -179,7 +226,8 @@
                                     <p class="listTag" v-if="p.actStatus==1">{{p.promotions.name}}</p>
                                 </template>
                             </div>
-                            <div class="price_grade"><span class="bold">¥</span><i :class="'icon mIcon i'+p.priceGrade"></i></div>
+                            <div class="price_grade"><span class="bold">¥</span><i
+                                    :class="'icon mIcon i'+p.priceGrade"></i></div>
                         </template>
                     </div>
                 </a>
@@ -191,10 +239,12 @@
     <div v-if="isPC && pageTotal>1" class="pageWrap clear">
         <a v-if="params.num>1" class="prev" @click="toPagination(params.num*1-1)" href="javascript:void(0);"></a>
         <template v-for="n in showPageBtn">
-            <a v-if="n" :class="{'on':(n==params.num)}" @click="toPagination(n)" href="javascript:void(0);" v-text="n"></a>
+            <a v-if="n" :class="{'on':(n==params.num)}" @click="toPagination(n)" href="javascript:void(0);"
+               v-text="n"></a>
             <span v-else>···</span>
         </template>
-        <a v-if="params.num<pageTotal" class="next" @click="toPagination(params.num*1+1)" href="javascript:void(0);"></a>
+        <a v-if="params.num<pageTotal" class="next" @click="toPagination(params.num*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()"/>
@@ -205,7 +255,8 @@
 <!-- 引入底部 -->
 <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/product.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/product/list.js(v=${version})}"></script>
 </body>
 </html>

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

@@ -399,7 +399,28 @@
             </div>
         </div>
     </div>
-
+    <!--订单采购量不足提示-->
+    <div class="confirm-Model" v-if="isModelAlert">
+        <div class="model-content">
+            <div class="title"><p>提示</p><i class="icon-close" @click.stop="handleCloseModel"></i></div>
+            <div class="content">
+                <p>{{ isModelAlertText }}</p>
+                <p class="small" v-if="userBeans<0">注:采购金额过小的订单,需要扣除500采美豆</p>
+            </div>
+            <div class="content-image">
+                <img src="/img/common/qr_code_hehe.jpg" alt="呵呵商城">
+            </div>
+            <div class="button" id="payButton">
+                <template v-if="isShowConfirm">
+                    <a class="btn confirm" href="javascript:void(0);" @click.stop="handleClickOrderSubmitMit">继续提交</a>
+                    <a class="btn cancel" href="javascript:void(0);" @click.stop="handleCloseModel" v-if="isShowConfirm">取消</a>
+                </template>
+                <template v-else>
+                    <a class="btn confirm" href="javascript:void(0);" @click.stop="handleCloseModel">了解</a>
+                </template>
+            </div>
+        </div>
+    </div>
 </div>
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>