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