diff --git a/pages/newOrder/confirmOrder.vue b/pages/newOrder/confirmOrder.vue index a55a550..25e1b20 100644 --- a/pages/newOrder/confirmOrder.vue +++ b/pages/newOrder/confirmOrder.vue @@ -155,9 +155,9 @@ - 提前熟悉 - ¥{{ (price_config.preFamiliarize && price_config.preFamiliarize.price) || 40 }} - + 提前熟悉 + ¥{{ (price_config && price_config.preFamiliarize && price_config.preFamiliarize.price) || 40 }} + 费用总计 @@ -216,7 +216,7 @@ * - 价格{{ price_config.preFamiliarize.price }}元/次 + 价格{{ (price_config && price_config.preFamiliarize && price_config.preFamiliarize.price) || 40 }}元/次 * @@ -391,14 +391,20 @@ this.getCouponList() // this.totalPrice = this.$globalData.newOrderData.totalPrice - this.companionLevelTitle = this.$globalData.newOrderData.companionLevel.paramValue + this.companionLevelTitle = (this.$globalData.newOrderData.companionLevel && this.$globalData.newOrderData.companionLevel.paramValue) || '' }, methods: { companionLevelPrice(){ let companionLevel = this.$globalData.newOrderData.companionLevel - let price = Number(companionLevel.paramValueText) * this.isAddPrice() - - return price * this.$store.state.memberRate + if (!companionLevel || !companionLevel.paramValueText) { + return 0 + } + let paramValueText = isNaN(companionLevel.paramValueText) ? 0 : Number(companionLevel.paramValueText) + let addPrice = this.isAddPrice() + let memberRate = isNaN(this.$store.state.memberRate) ? 1 : Number(this.$store.state.memberRate) + let price = paramValueText * addPrice + + return price * memberRate }, //判断当前选中的地址是否加价 isAddPrice(){ @@ -475,7 +481,9 @@ const pets = dailyPets[date]; const priceDetails = [] // 基础服务 - 根据是否为节假日设置价格 - const baseServiceCost = Number(this.isHoliday(date) ? this.holidayPrice : this.normalPrice) + const holidayPrice = isNaN(this.holidayPrice) ? 75 : Number(this.holidayPrice) + const normalPrice = isNaN(this.normalPrice) ? 75 : Number(this.normalPrice) + const baseServiceCost = Number(this.isHoliday(date) ? holidayPrice : normalPrice) const largeDogCount = pets.filter(pet => pet.petType === 'dog' && pet.bodyType.includes('大型')).length; let mediumDogCount = pets.filter(pet => pet.petType === 'dog' && pet.bodyType.includes('中型')).length; @@ -607,7 +615,13 @@ console.log(baseServiceCost + additionalCost + multServicesTotalCost + customServiceCost); console.log(baseServiceCost , additionalCost , multServicesTotalCost , customServiceCost); - const totalCost = parseFloat((baseServiceCost + additionalCost + multServicesTotalCost + Number(customServiceCost))).toFixed(2) + // 确保所有数值都是有效的数字,避免NaN + const safeBaseServiceCost = isNaN(baseServiceCost) ? 0 : Number(baseServiceCost) + const safeAdditionalCost = isNaN(additionalCost) ? 0 : Number(additionalCost) + const safeMultServicesTotalCost = isNaN(multServicesTotalCost) ? 0 : Number(multServicesTotalCost) + const safeCustomServiceCost = isNaN(customServiceCost) ? 0 : Number(customServiceCost) + + const totalCost = parseFloat(safeBaseServiceCost + safeAdditionalCost + safeMultServicesTotalCost + safeCustomServiceCost).toFixed(2) // 所有宠物定制服务总项数,每个类型的服务只算一次 const acc = [] pets.map(pet => { @@ -649,7 +663,15 @@ // 计算宠物定制服务费用 calculatePetCustomServiceCost(pet) { console.log('pet.customServices',pet.customServices) - const customServiceCost = pet.customServices.reduce((acc, item) => acc + Number(item.price) * item.quantity, 0) + // 确保customServices存在且为数组 + if (!pet.customServices || !Array.isArray(pet.customServices)) { + return '0.00' + } + const customServiceCost = pet.customServices.reduce((acc, item) => { + const price = isNaN(item.price) ? 0 : Number(item.price) + const quantity = isNaN(item.quantity) ? 0 : Number(item.quantity) + return acc + price * quantity + }, 0) console.log('customServiceCost',customServiceCost) return parseFloat(customServiceCost).toFixed(2) }, @@ -687,22 +709,29 @@ // 将价格配置赋值给组件 this.price_config = priceConfig || {} - // 获取伴宠师等级价格和城市倍率 - let companionPrice = this.$globalData.newOrderData.companionLevelPrice || 0 - let cityPriceRate = this.$globalData.newOrderData.cityPriceRate || 1 + // 获取伴宠师等级价格和城市倍率,确保都是有效数字 + let companionPrice = isNaN(this.$globalData.newOrderData.companionLevelPrice) ? 0 : Number(this.$globalData.newOrderData.companionLevelPrice) + let cityPriceRate = isNaN(this.$globalData.newOrderData.cityPriceRate) ? 1 : Number(this.$globalData.newOrderData.cityPriceRate) + let memberRate = isNaN(this.$store.state.memberRate) ? 1 : Number(this.$store.state.memberRate) if(priceConfig.basePrice && priceConfig.basePrice.holiday){ - this.holidayPrice = Number((priceConfig.basePrice.holiday * this.$store.state.memberRate * cityPriceRate) + companionPrice).toFixed(2) + const holidayBasePrice = isNaN(priceConfig.basePrice.holiday) ? 75 : Number(priceConfig.basePrice.holiday) + this.holidayPrice = Number((holidayBasePrice * memberRate * cityPriceRate) + companionPrice).toFixed(2) + } else { + this.holidayPrice = 75 } if(priceConfig.basePrice && priceConfig.basePrice.normal){ - this.normalPrice = Number((priceConfig.basePrice.normal * this.$store.state.memberRate * cityPriceRate) + companionPrice).toFixed(2) + const normalBasePrice = isNaN(priceConfig.basePrice.normal) ? 75 : Number(priceConfig.basePrice.normal) + this.normalPrice = Number((normalBasePrice * memberRate * cityPriceRate) + companionPrice).toFixed(2) + } else { + this.normalPrice = 75 } - if(priceConfig.holidays && priceConfig.holidays.length > 0){ + if(priceConfig.holidays && Array.isArray(priceConfig.holidays) && priceConfig.holidays.length > 0){ this.holidayDate = priceConfig.holidays }else{ this.holidayDate = [] } - this.discountMemberText = (this.$store.state.memberRate * 10) + this.discountMemberText = (memberRate * 10) }, // 判断是否为节假日 isHoliday(date) { diff --git a/pages_order/order/orderList.vue b/pages_order/order/orderList.vue index 5ae7d37..44d4c6d 100644 --- a/pages_order/order/orderList.vue +++ b/pages_order/order/orderList.vue @@ -275,6 +275,8 @@ return '已关闭'; case 5: return '无效订单'; + case 6: + return '已取消'; case 11: return '服务中'; }