diff --git a/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue b/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue index 65922f2..e064e24 100644 --- a/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue +++ b/CatmDogd-Mall-Front-test/src/views/model/AppletConfig/priceConfig.vue @@ -210,59 +210,86 @@ - - 套餐免费额度配置 + + 免费宠物数量配置 - - - - - + + + + 配置每种宠物类型的免费数量,超出免费数量的宠物将按照对应的额外费用收费。 + 例如:配置猫免费3只,用户有5只猫时,前3只免费,后2只按猫的额外费用收费。 + + - + - 免费规则配置 - 添加规则 + 免费宠物数量配置 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 删除 - - - + + + + + 猫 + + + + + + + + + + + 小型犬 + + + + + + + + + + + 中型犬 + + + + + + + + + + + 大型犬 + + + + + + + + @@ -438,35 +465,20 @@ price: 10 // 猫基础费用 } }, - // 套餐免费额度配置 - freeQuota: { - threshold: 30, // 免费阈值金额 - rules: [ - { - type: 'cat', - count: 3, - freeAmount: 30, - description: '3只及以上猫免费30元' - }, - { - type: 'smallDog', - count: 2, - freeAmount: 30, - description: '2只及以上小型犬免费30元' - }, - { - type: 'mediumDog', - count: 1, - freeAmount: 30, - description: '1只及以上中型犬免费30元' - }, - { - type: 'mixed', - count: 0, - freeAmount: 25, - description: '混合类型免费25元(1猫1小型犬)' - } - ] + // 免费宠物数量配置 + freePetConfig: { + cat: { + freeCount: 3 // 猫免费数量 + }, + smallDog: { + freeCount: 2 // 小型犬免费数量 + }, + mediumDog: { + freeCount: 1 // 中型犬免费数量 + }, + largeDog: { + freeCount: 0 // 大型犬免费数量 + } }, // 节假日配置 - 后台配置的节假日列表 holidays: [ @@ -495,6 +507,22 @@ ], 'basePrice.perKm': [ { required: true, message: '请输入每公里费用', trigger: 'blur' } + ], + 'freePetConfig.cat.freeCount': [ + { required: true, message: '请输入猫咪免费数量', trigger: 'blur' }, + { type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' } + ], + 'freePetConfig.smallDog.freeCount': [ + { required: true, message: '请输入小型犬免费数量', trigger: 'blur' }, + { type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' } + ], + 'freePetConfig.mediumDog.freeCount': [ + { required: true, message: '请输入中型犬免费数量', trigger: 'blur' }, + { type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' } + ], + 'freePetConfig.largeDog.freeCount': [ + { required: true, message: '请输入大型犬免费数量', trigger: 'blur' }, + { type: 'number', min: 0, message: '免费数量不能小于0', trigger: 'blur' } ] } }; @@ -528,7 +556,21 @@ if (response.rows && response.rows.length > 0) { const config = response.rows[0]; if (config.paramValueText) { - this.priceConfig = JSON.parse(config.paramValueText); + const savedConfig = JSON.parse(config.paramValueText); + // 合并配置,确保新字段有默认值 + this.priceConfig = { + ...this.priceConfig, + ...savedConfig + }; + // 确保freePetConfig字段存在 + if (!this.priceConfig.freePetConfig) { + this.priceConfig.freePetConfig = { + cat: { freeCount: 3 }, + smallDog: { freeCount: 2 }, + mediumDog: { freeCount: 1 }, + largeDog: { freeCount: 0 } + }; + } // 设置节假日日期 this.holidayDates = this.priceConfig.holidays || []; } @@ -591,20 +633,6 @@ }); }, - // 添加免费规则 - addFreeRule() { - this.priceConfig.freeQuota.rules.push({ - type: 'cat', - count: 0, - freeAmount: 0, - description: '' - }); - }, - - // 删除免费规则 - removeFreeRule(index) { - this.priceConfig.freeQuota.rules.splice(index, 1); - }, // 获取城市名称 getCityName(city) {