This commit is contained in:
aaron 2025-03-28 19:14:32 +08:00
parent 02b96f1117
commit 97028220d9

View File

@ -199,10 +199,20 @@
</template>
<template v-if="column.key === 'quantity'">
<a-input-number
v-model:value="formState.coupon_config[record.id]"
:value="getCouponConfigValue(record.id, 'count')"
:min="0"
size="small"
:disabled="!isSelectedCoupon(record.id)"
@change="(value) => handleCouponConfigChange(record.id, 'count', value)"
/>
</template>
<template v-if="column.key === 'days'">
<a-input-number
:value="getCouponConfigValue(record.id, 'days')"
:min="1"
size="small"
:disabled="!isSelectedCoupon(record.id)"
@change="(value) => handleCouponConfigChange(record.id, 'days', value)"
/>
</template>
</template>
@ -449,6 +459,12 @@ export default defineComponent({
key: 'quantity',
width: 120,
align: 'center'
},
{
title: '有效天数',
key: 'days',
width: 120,
align: 'center'
}
]
@ -469,20 +485,41 @@ export default defineComponent({
return formState.value.selected_coupons.includes(couponId);
}
//
const getCouponConfigValue = (couponId, field) => {
return formState.value.coupon_config[couponId]?.[field] ?? (field === 'count' ? 0 : 7)
}
//
const handleCouponConfigChange = (couponId, field, value) => {
if (!formState.value.coupon_config[couponId]) {
formState.value.coupon_config[couponId] = {
count: 1,
days: 7
}
}
formState.value.coupon_config[couponId][field] = value
}
//
const handleCouponSelect = (couponId, checked) => {
if (checked) {
//
if (!isSelectedCoupon(couponId)) {
formState.value.selected_coupons.push(couponId);
// 1
// 17
if (!formState.value.coupon_config[couponId]) {
formState.value.coupon_config[couponId] = 1;
formState.value.coupon_config[couponId] = {
count: 1,
days: 7
};
}
}
} else {
//
formState.value.selected_coupons = formState.value.selected_coupons.filter(id => id !== couponId);
//
delete formState.value.coupon_config[couponId];
}
}
@ -521,8 +558,11 @@ export default defineComponent({
const selectedCoupons = []
Object.entries(record.coupon_config || {}).forEach(([key, value]) => {
if (value && value > 0) {
couponConfig[key] = value
if (value && value.count > 0) {
couponConfig[key] = {
count: value.count,
days: value.days || 7 // 7
}
selectedCoupons.push(parseInt(key))
}
})
@ -557,9 +597,12 @@ export default defineComponent({
//
const couponConfig = {}
formState.value.selected_coupons.forEach(couponId => {
const quantity = formState.value.coupon_config[couponId]
const quantity = formState.value.coupon_config[couponId].count
if (quantity && quantity > 0) {
couponConfig[couponId] = quantity
couponConfig[couponId] = {
count: quantity,
days: formState.value.coupon_config[couponId].days || 7
}
}
})
@ -731,7 +774,9 @@ export default defineComponent({
qrCodeUrl,
qrCodeLoading,
handleGetQrCode,
handleQrCodeModalCancel
handleQrCodeModalCancel,
getCouponConfigValue,
handleCouponConfigChange
}
}
})