瀏覽代碼

微信授权登录与购物车计算

chao 4 年之前
父節點
當前提交
f75d51c134

+ 14 - 10
src/main/resources/static/css/shopping/shopping.css

@@ -39,6 +39,7 @@ li{list-style:none}
     .listWrap .supplierBtn em{color:#f55c5c;font-size:16px}
     .listWrap .supplierBtn .note{float:left;}
     .listWrap .supplierBtn .note input{width:600px;height:36px;line-height:36px;background:#F7F7F7;border-radius:5px;border:none;padding:0 10px;font-size:14px}
+    .listWrap .supplierBtn .item{line-height:50px;}
     .listWrap .cartItem{width:100%;height:100px;line-height:100px;margin-top:10px;padding:14px 0;font-size:16px}
     .listWrap .cartItem:first-child{margin-top:0}
     .listWrap .cartItem .c2{text-align:left}
@@ -84,16 +85,17 @@ li{list-style:none}
     .summaryWrap .summary .item{display:inline-block;margin-right:32px;position:relative}
     .summaryWrap .summary .check{width:14px;height:14px;line-height:14px;vertical-align:top;margin:18px 16px 0 16px}
     .summaryWrap .summary .delete{margin-left:16px;color:#f55c5c}
-    .summaryWrap .summary .right .item{position:relative;text-align:right}
-    .summaryWrap .summary .right .item em{color:#f55c5c}
     .summaryWrap .summary .submit{display:inline-block;width:232px;height:50px;line-height:50px;text-align:center;background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);border-radius:2px;color:#FFF}
     .summaryWrap .summary .submit.dis{background:#999;}
     .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
-    .summaryWrap .summary .item .del{position:absolute;right:0;top:-20px;cursor:pointer;height:24px;font-size:14px}
-    .summaryWrap .summary .item .del em{position:absolute;top:-12px;height:24px;white-space:nowrap;right:0;background:#ff4500;line-height:24px;color:#FFF;padding:0 12px;border-radius:2px}
-    .summaryWrap .summary .item .del em:before{content:'';width:0;height:0;border-width:5px 5px 0 5px;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:24px;left:50%}
     .summaryWrap .summary .back{color:#f55c5c}
     .summaryWrap .summary .back .icon:before{width:20px;height:20px;background-position:-345px 0;margin-right:15px}
+    .priceTotal{position:relative;text-align:right;height: 50px;line-height: 50px;display:inline-block;}
+    .priceTotal em{color:#f55c5c}
+    .priceTotal .dl{position:absolute;right:0;top:-20px;cursor:pointer;height:24px;font-size:12px}
+    .priceTotal .dl em{position:absolute;top:-12px;height:24px;white-space:nowrap;right:0;background:#ff4500;line-height:24px;color:#FFF;padding:0 12px;border-radius:2px;font-size:14px}
+    .priceTotal .dl em:before{content:'';width:0;height:0;border-width:5px 5px 0 5px;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:24px;left:50%}
+
     /* 收货地址 */
     .addressWrap{padding:16px;position:relative;    box-sizing: border-box;
     text-align: center;
@@ -200,10 +202,11 @@ li{list-style:none}
     .listWrap .supplierTit .price{width:22vw;height:6.4vw;position:absolute;right:0;top:2vw;}
     .listWrap .supplierTit .priceTag .tag{top:0;}
     .listWrap .cartItem{padding:2.2vw 3.3vw;height:24vw;line-height:24vw;position:relative}
-    .listWrap .supplierBtn{border-top:1px solid #F7F7F7;width:93vw;margin:0 auto;line-height:10.6vw;color:#22272e;font-size:3.4vw;text-align:right}
+    .listWrap .supplierBtn{border-top:1px solid #F7F7F7;width:93vw;margin:0 auto;padding-bottom:2vw;color:#22272e;font-size:3.4vw;text-align:right}
     .listWrap .supplierBtn em{color:#f55c5c}
     .listWrap .supplierBtn .note{text-align:left;white-space:nowrap;overflow:hidden}
     .listWrap .supplierBtn .note input{width:79vw;height:8vw;line-height:8vw;background:#F7F7F7;border-radius:1vw;border:none;padding:0 2vw;font-size:3.1vw}
+    .listWrap .supplierBtn .item{display:inline-block;padding-top:2vw;line-height:7vw;}
     .listWrap .supplierItem .c0{float:left;width:9.6vw;text-align:center}
     .listWrap .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:middle}
     .listWrap .supplierItem .c1{float:left;width:24vw;position:relative;}
@@ -233,12 +236,13 @@ li{list-style:none}
     .summaryWrap .summary .right{height:11.2vw;line-height:11.2vw}
     .summaryWrap .summary .check{width:3.5vw;height:3.5vw;line-height:3.5vw;vertical-align:top;margin:3vw 3vw 0 3.3vw}
     .summaryWrap .summary .delete{width:12vw;height:6vw;line-height:6vw;display:inline-block;text-align:center;color:#f55c5c}
-    .summaryWrap .summary .right .item{position:relative;text-align:right;margin-left:6.8vw}
-    .summaryWrap .summary .right .item em{color:#f55c5c}
     .summaryWrap .summary .submit{display:inline-block;width:30.4vw;height:11.2vw;line-height:11.2vw;text-align:center;background-color:#e15616;border-radius:2px;color:#FFF}
     .summaryWrap.fixed{position:fixed;bottom:0;left:0;margin:0;z-index:99999;box-shadow:20px 20px 102px rgba(0,0,0,0.1)}
-    .summaryWrap .summary .item .del{position:absolute;right:0;top:-4vw;cursor:pointer;height:6vw;font-size:3.1vw}
-    .summaryWrap .summary .item .del em{position:absolute;top:0;left:100%;height:5vw;white-space:nowrap;background:#ff4500;line-height:5vw;color:#FFF;padding:0 1vw;border-radius:2px}
+    .priceTotal{position:relative;text-align:right;margin-left:6.8vw;height:10.6vw;line-height:18vw;display:inline-block;}
+    .priceTotal em{color:#f55c5c}
+    .priceTotal .dl{position:absolute;right:0;top:3vw;cursor:pointer;height:5vw;line-height:5vw;font-size:3.1vw}
+    .priceTotal .dl em{position:absolute;top:-5vw;left:0;height:5vw;white-space:nowrap;background:#ff4500;line-height:5vw;color:#FFF;padding:0 1vw;border-radius:2px}
+    .priceTotal .dl em:before{content:'';width:0;height:0;border-width:1vw 1vw 0 1vw;border-style:solid;border-color:#ff4500 transparent;position:absolute;top:5vw;left:50%}
     /* 收货地址 */
     .addressWrap{box-sizing:border-box;width:100%;position:relative}
     .addressWrap .info,.model-address-content .content .list{line-height:7.4vw;background:#FFF;padding:3.3vw}

+ 12 - 11
src/main/resources/static/js/base.js

@@ -1,16 +1,5 @@
 var spiServer = $("#spiServer").val();
 var isPC = ($(window).width()>768);
-var userAgent = navigator.userAgent.toLowerCase();
-if (userAgent.match(/MicroMessenger/i)) {
-    // 微信浏览器自动授权登录
-    var urlForWeChat = 'https://www.caimei365.com/we_chat/redirect_uri.html';
-    $.get(spiServer+'/user/authorizationLink?redirectUri='+urlForWeChat, function(r){
-        if(r.code===0 && r.data){
-            localStorage.setItem("loginBeforePath", window.location.href);
-            window.location.href = r.data;
-        }
-    });
-}
 var globalUserData = '';
 var GLOBAL_TOKEN = 'X-Token';
 var GLOBAL_USER_ID = 0;
@@ -22,6 +11,18 @@ if(localStorage.getItem('userInfo')){
     GLOBAL_USER_ID = globalUserData.userId;
     GLOBAL_USER_IDENTITY = globalUserData.identity ? globalUserData.identity : globalUserData.userIdentity;
     GLOBAL_SHOP_ID = globalUserData.shopId;
+} else {
+    var userAgent = navigator.userAgent.toLowerCase();
+    if (userAgent.match(/MicroMessenger/i)) {
+        // 微信浏览器自动授权登录
+        var urlForWeChat = 'https://www.caimei365.com/we_chat/redirect_uri.html';
+        $.get(spiServer+'/user/authorizationLink?redirectUri='+urlForWeChat, function(r){
+            if(r.code===0 && r.data){
+                localStorage.setItem("loginBeforePath", window.location.href);
+                window.location.href = r.data;
+            }
+        });
+    }
 }
 // 头部
 var globalHead = new Vue({

+ 32 - 17
src/main/resources/static/js/shopping/cart.js

@@ -142,50 +142,65 @@ var shoppingCart = new Vue({
         computedPrice: function(){
             var _self = this;
             this.$nextTick(function(){
-                var originalPrice = 0;
-                var reducedPrice = 0;
                 var totalPrice = 0;
+                var reducedPrice = 0;
+                var originalPrice = 0;
                 var kindCount = 0;
                 var totalCount = 0;
                 _self.listData.forEach(function(supplier){
-                    var supplierOriginalPrice = 0;
                     var supplierPrice = 0;
+                    var supplierReducedPrice = 0;
                     if(supplier.cartList.length>0){
                         supplier.cartList.forEach(function(cart){
                             if (_self.submitIds.includes(cart.productId*1)){
-                                supplierOriginalPrice += cart.originalPrice*cart.number;
                                 supplierPrice += cart.price*cart.number;
                                 kindCount += 1;
                                 totalCount += cart.number;
+                                // 单品满减
+                                if(cart.promotions && cart.promotions.type*1===1 && cart.promotions.mode*1===2){
+                                    // 单品满减-重新计算供应商总价/满减金额
+                                    if(cart.price*cart.number >= cart.promotions.touchPrice){
+                                        supplierPrice -= cart.promotions.reducedPrice;
+                                        supplierReducedPrice += cart.promotions.reducedPrice;
+                                    }
+                                }
                             }
-                        })
+                        });
+                        // 店铺满减
+                        if(supplier.promotions && supplier.promotions.mode*1===2){
+                            // 店铺满减-计算供应商总价/满减金额
+                            if(supplierPrice >= supplier.promotions.touchPrice){
+                                supplierPrice -= supplier.promotions.reducedPrice;
+                                supplierReducedPrice += supplier.promotions.reducedPrice;
+                            }
+                        }
                     }
-                    supplier.originalPrice = supplierOriginalPrice;
-                    originalPrice += supplier.originalPrice;
                     supplier.totalPrice = supplierPrice;
+                    supplier.reducedPrice = supplierReducedPrice;
+                    supplier.originalPrice = (supplierPrice+supplierReducedPrice);
                     totalPrice += supplier.totalPrice;
+                    reducedPrice += supplier.reducedPrice;
+                    originalPrice += supplier.originalPrice;
                 });
+                // 总促销计算
                 _self.promotionsList.forEach(function(promotions){
-                    if(promotions.mode ===2){
-                        var promotionsPrice = 0;
+                    // 凑单满减
+                    if(promotions.mode*1===2 && promotions.type*1===2){
+                        var total = 0;
                         promotions.productList.forEach(function(product){
                             if (_self.submitIds.includes(product.productId*1)){
-                                promotionsPrice += product.number * product.price;
+                                total += product.number * product.price;
                             }
                         });
-                        if(promotionsPrice>=promotions.touchPrice){
-                            reducedPrice += promotions.reducedPrice;
+                        if(total>=promotions.touchPrice){
                             totalPrice -= promotions.reducedPrice;
+                            reducedPrice += promotions.reducedPrice;
                         }
-                    } else if (promotions.type===1 && promotions.mode ===1) {
-                        promotions.productList.forEach(function(product){
-                            reducedPrice += product.number * (product.originalPrice - product.price);
-                        });
                     }
                 });
+                _self.totalPrice = totalPrice;
                 _self.reducedPrice = reducedPrice;
                 _self.originalPrice = originalPrice;
-                _self.totalPrice = totalPrice;
                 _self.kindCount = kindCount;
                 _self.totalCount = totalCount;
             });

+ 3 - 1
src/main/resources/static/js/shopping/confirm.js

@@ -108,7 +108,9 @@ var shoppingConfirm = new Vue({
                     _self.balance.userMoney = r.data.userMoney;
                     _self.balance.originUserMoney = r.data.userMoney;
                     _self.payInfo.orderShouldPayFee = r.data.totalPrice;
-                    _self.invoice =  r.data.invoice;
+                    if(r.data.invoice){
+                        _self.invoice =  r.data.invoice;
+                    }
                     _self.getAddressList(_self.userId,20);
                 }else{
                     CAIMEI.Alert(r.msg, '确定', false);

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

@@ -154,7 +154,9 @@
                     <div v-if="isPC" class="c7"><span class="del" @click="deleteCartOne(cart.productId)">×<em class="tips">删除</em></span></div>
                 </div>
                 <div class="supplierBtn">
-                    <span>合计:<em>¥{{ supplier.totalPrice | NumFormat}}</em></span>
+                    <span :class="supplier.reducedPrice>0?'priceTotal':'item'">合计:<em>¥{{ supplier.totalPrice | NumFormat}}</em>
+                        <span v-if="supplier.reducedPrice>0" class="dl"><del v-text="'¥'+toFloat(supplier.originalPrice)"></del><em>减{{'¥'+toFloat(supplier.reducedPrice)}}</em></span>
+                    </span>
                 </div>
             </div>
             <div class="invalidTit" v-if="invalidData.length>0">
@@ -197,7 +199,9 @@
                 <div class="item">商品数量:<em v-text="totalCount"></em></div>
             </div>
             <div class="right mfbt">
-                <div class="item">合计:<em v-text="'¥'+toFloat(totalPrice)"></em><span v-if="reducedPrice>0" class="del"><del v-text="'¥'+toFloat(originalPrice)"></del><em>减{{'¥'+toFloat(reducedPrice)}}</em></span></div>
+                <div  :class="reducedPrice>0?'item priceTotal':'item'">合计:<em v-text="'¥'+toFloat(totalPrice)"></em>
+                    <span v-if="reducedPrice>0" class="dl"><del v-text="'¥'+toFloat(originalPrice)"></del><em>减{{'¥'+toFloat(reducedPrice)}}</em></span>
+                </div>
                 <a class="submit" href="javascript:void(0);" @click="submitCart()">去结算</a>
             </div>
         </div>

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

@@ -193,7 +193,9 @@
                     <div v-if="isPC" class="c6"><span v-text="'¥'+toFloat(cart.price*cart.number)"></span></div>
                 </div>
                 <div class="supplierBtn">
-                    <span>合计:<em v-text="'¥'+toFloat(supplier.totalPrice)"></em></span>
+                    <span :class="supplier.reducedPrice>0?'priceTotal':'item'">合计:<em v-text="'¥'+toFloat(supplier.totalPrice)"></em>
+                        <span v-if="supplier.reducedPrice>0" class="dl"><del v-text="'¥'+toFloat(supplier.originalPrice)"></del><em>减{{'¥'+toFloat(supplier.reducedPrice)}}</em></span>
+                    </span>
                     <div class="note">留言:<input type="text" v-model="supplier.note" placeholder="告诉卖家您的特殊要求"></div>
                 </div>
             </div>

+ 3 - 1
src/main/resources/templates/we_chat/redirect_uri.html

@@ -40,7 +40,9 @@
                 location.href="/index.html";
             }
         }else{
-            CAIMEI.Alert(r.msg,'确定',false);
+            CAIMEI.Alert(r.msg,'确定',true, function(){
+                location.href="/index.html";
+            });
         }
     });
 </script>