Browse Source

Merge branch 'zhongqi-delivery'

shish 8 months ago
parent
commit
75da931418

+ 4 - 0
mallApp/src/pages/billing/affirmGhs.vue

@@ -560,6 +560,10 @@ export default {
 					this.$msg('没有获取到跑腿费')
 					this.$msg('没有获取到跑腿费')
 					return false
 					return false
 				}
 				}
+				if(Number(this.form.openIntraCity) == 2){
+					this.$msg('跑腿不可用,请用其它方式')
+					return false
+				}
 			}
 			}
 			uni.showLoading({mask:true})
 			uni.showLoading({mask:true})
 			buyItem(params).then(res => {
 			buyItem(params).then(res => {

+ 5 - 10
mallApp/src/pages/order/buy.vue

@@ -87,7 +87,7 @@ export default {
       hasMap: 0, // 是否具备定位功能 0不具备 1具备
       hasMap: 0, // 是否具备定位功能 0不具备 1具备
       // 是否收配送费: True-收配送费  False-在配送范围内(小于 hsFreeKm),不收配送费
       // 是否收配送费: True-收配送费  False-在配送范围内(小于 hsFreeKm),不收配送费
       isFreight: false,
       isFreight: false,
-      // 是否支持跑腿送: 0不支持 1支持
+      // 是否支持跑腿送: 0不支持 1支持  2暂不可用
       openIntraCity: 0,
       openIntraCity: 0,
       // 花束多少公里内免费配送
       // 花束多少公里内免费配送
       hsFreeKm: 0,
       hsFreeKm: 0,
@@ -128,19 +128,14 @@ export default {
     },
     },
     mayPayAmount(){
     mayPayAmount(){
       let price = (this.goodsInfo.price || 0) * (this.goodsInfo.buyNum || 0)
       let price = (this.goodsInfo.price || 0) * (this.goodsInfo.buyNum || 0)
-     
-      // 如果不是免跑腿费,则加上跑腿费
-      if(!this.isFreeDelivery){
-        price = Number(this.freightPrice)+Number(price)
-      }
-      
+      price = Number(this.freightPrice)+Number(price)
       return parseFloat(price.toFixed(2))
       return parseFloat(price.toFixed(2))
     }
     }
   },
   },
   methods: {
   methods: {
     init() {
     init() {
       let goodsInfo = uni.getStorageSync("buyGoodsDetil") || {}
       let goodsInfo = uni.getStorageSync("buyGoodsDetil") || {}
-      this.isFreight = goodsInfo.freightType == '0' // True:收配送费  False:不收配送费。  运费计算方式,0按距离计算 1免运费
+      this.isFreight = goodsInfo.freightType == 0 // True:收配送费  False:不收配送费(在配送范围内,不收配送费)--  freightType:运费计算方式,0按距离计算  1免运费(在配送范围内,不收配送费)
 
 
       getOrderShop()
       getOrderShop()
       //getShopUser();
       //getShopUser();
@@ -199,7 +194,7 @@ export default {
     createOrderFn() {
     createOrderFn() {
       let form = {}
       let form = {}
       if (this.form.sendType == 2) {
       if (this.form.sendType == 2) {
-        if(this.form.hasMap == 0) {
+        if(this.form.hasMap == 0 || this.openIntraCity == 2) {
           this.$msg('跑腿不可用,请用其它方式')
           this.$msg('跑腿不可用,请用其它方式')
           return
           return
         }
         }
@@ -246,7 +241,7 @@ export default {
           uni.removeStorageSync("buyGoodsDetil")
           uni.removeStorageSync("buyGoodsDetil")
           let orderSn = res.data.orderSn?res.data.orderSn:''
           let orderSn = res.data.orderSn?res.data.orderSn:''
           let id = res.data.id?res.data.id:0
           let id = res.data.id?res.data.id:0
-          let totalPrice = res.data.totalPrice?res.data.totalPrice:0
+          let totalPrice = res.data.totalPrice ? res.data.totalPrice : 0
           this.$util.pageTo({url:"/pages/callback/pay?pageStatus=1&orderSn="+orderSn+'&hdId='+hdId+'&account='+account+'&id='+id+'&couponId=0&totalPrice='+totalPrice,type:2})
           this.$util.pageTo({url:"/pages/callback/pay?pageStatus=1&orderSn="+orderSn+'&hdId='+hdId+'&account='+account+'&id='+id+'&couponId=0&totalPrice='+totalPrice,type:2})
         }
         }
       })
       })

+ 40 - 50
mallApp/src/pages/order/components/app-delivery.vue

@@ -115,13 +115,9 @@
             <picker mode="multiSelector" :value="form.reachPeriod" :range="timeOptions" @change="bindTimeChange">
             <picker mode="multiSelector" :value="form.reachPeriod" :range="timeOptions" @change="bindTimeChange">
               <view class="uni-input" style="width:450upx;">{{form.reachPeriod}}<text style="margin-left:10upx;">前</text></view>
               <view class="uni-input" style="width:450upx;">{{form.reachPeriod}}<text style="margin-left:10upx;">前</text></view>
             </picker>
             </picker>
-        </tui-list-cell>
-        
+        </tui-list-cell>        
       </div>
       </div>
 
 
-
-
-    
     <!-- 省市联动 -->
     <!-- 省市联动 -->
     <simple-address ref="simpleAddress" :region="orderShop.region" :pickerValueDefault="cityPickerValueDefault" @onConfirm="onCityConfirm" >
     <simple-address ref="simpleAddress" :region="orderShop.region" :pickerValueDefault="cityPickerValueDefault" @onConfirm="onCityConfirm" >
     </simple-address>
     </simple-address>
@@ -223,7 +219,15 @@ export default {
   computed: {
   computed: {
     ...mapGetters({ orderShop: "getOrderShop" }),
     ...mapGetters({ orderShop: "getOrderShop" }),
     ...mapGetters({ shopUser: "getShopUser" }),
     ...mapGetters({ shopUser: "getShopUser" }),
+    /**
+     * 是否免跑腿费
+     * @returns {boolean}
+     */
     isFreeDelivery(){
     isFreeDelivery(){
+      if(this.isFreight){
+        return false
+      }
+
       const distanceInKm = Number(this.showDistance) || 0;
       const distanceInKm = Number(this.showDistance) || 0;
       const freeKm = Number(this.hsFreeKm) || 0;
       const freeKm = Number(this.hsFreeKm) || 0;
       
       
@@ -233,24 +237,6 @@ export default {
       }
       }
       
       
       return false;
       return false;
-    },
-    /**
-     * 计算跑腿费(使用 prop 的 showDistance)
-     * 新规则:距离 <= 免费公里数时免费,距离 > 免费公里数时按超出部分计费
-     */
-    calculatedDeliveryCost(){
-      const distanceInKm = Number(this.showDistance) || 0;
-      const freeKm = Number(this.hsFreeKm) || 0;
-      const addFee = Number(this.hsAddFee) || 0;
-      
-      // 距离大于免费公里数时,计算超出部分的费用
-      if(distanceInKm > freeKm){
-        const extraKm = distanceInKm - freeKm;
-        const cost = extraKm * addFee;
-        return parseFloat(cost.toFixed(2));
-      }
-      
-      return 0;
     }
     }
   },
   },
   watch: {
   watch: {
@@ -312,33 +298,8 @@ export default {
     modifyShow(){
     modifyShow(){
 			this.form.showAddress = this.form.province+this.form.city+this.form.address+this.form.floor
 			this.form.showAddress = this.form.province+this.form.city+this.form.address+this.form.floor
 		},
 		},
-    /**
-     * 根据指定距离计算跑腿费
-     * @param {Number} distanceInKm - 距离(单位:公里)
-     * @returns {Number} 跑腿费
-     */
-    calculateDeliveryCostByDistance(distanceInKm){
-      const freeKm = Number(this.hsFreeKm) || 0;
-      const addFee = Number(this.hsAddFee) || 0;
-      
-      // 距离小于等于免费公里数时,免费
-      if(distanceInKm <= freeKm){
-        return 0;
-      }
-      
-      // 距离大于免费公里数时,计算超出部分的费用
-      if(distanceInKm > freeKm){
-        let extraKm = distanceInKm - freeKm;
-        //向上取整,不足1公里的按1公里算
-        extraKm = Math.ceil(extraKm)
-        const cost = extraKm * addFee;
-        return parseFloat(cost.toFixed(2));
-      }
-      
-      return 0;
-    },
     triggerGetDeliveryQuotes() {
     triggerGetDeliveryQuotes() {
-      if (this.form.receiveUserName && this.form.receiveMobile && this.form.address) {
+      if (this.openIntraCity == 1 && this.form.receiveUserName && this.form.receiveMobile && this.form.address) {
         this.getDeliveryQuotes();
         this.getDeliveryQuotes();
       }
       }
     },
     },
@@ -402,7 +363,7 @@ export default {
       
       
       // 使用当前选择的配送平台的距离来计算跑腿费
       // 使用当前选择的配送平台的距离来计算跑腿费
       const distanceInKm = item.distance ? parseFloat((item.distance / 1000).toFixed(2)) : 0;
       const distanceInKm = item.distance ? parseFloat((item.distance / 1000).toFixed(2)) : 0;
-      const calculatedCost = this.calculateDeliveryCostByDistance(distanceInKm);
+      const calculatedCost = this.calculateDeliveryCostByDistance(item.priceNumber, distanceInKm);
       
       
       this.form.sendCost = calculatedCost;
       this.form.sendCost = calculatedCost;
 			this.form.deliveryPlatform = item.en_name;
 			this.form.deliveryPlatform = item.en_name;
@@ -418,6 +379,35 @@ export default {
         deliveryBracketContent: item.bracketContent
         deliveryBracketContent: item.bracketContent
       })
       })
 		},
 		},
+    /**
+     * 根据指定距离计算跑腿费
+     * @param {Number} distanceInKm - 距离(单位:公里)
+     * @returns {Number} 跑腿费
+     */
+     calculateDeliveryCostByDistance(sendCost, distanceInKm){
+      if(this.isFreight){
+        return sendCost
+      }
+
+      const freeKm = Number(this.hsFreeKm) || 0;
+      const addFee = Number(this.hsAddFee) || 0;
+      
+      // 距离小于等于免费公里数时,免费
+      if(distanceInKm <= freeKm){
+        return 0;
+      }
+      
+      // 距离大于免费公里数时,计算超出部分的费用
+      if(distanceInKm > freeKm){
+        let extraKm = distanceInKm - freeKm;
+        //向上取整,不足1公里的按1公里算
+        extraKm = Math.ceil(extraKm)
+        const cost = extraKm * addFee;
+        return parseFloat(cost.toFixed(2));
+      }
+      
+      return 0;
+    }
   }
   }
 };
 };
 </script>
 </script>