diff --git a/apps/web-antd/src/views/marketing/coupon/components/CouponEditorDrawer.vue b/apps/web-antd/src/views/marketing/coupon/components/CouponEditorDrawer.vue index 7a9b2e3..321f7dc 100644 --- a/apps/web-antd/src/views/marketing/coupon/components/CouponEditorDrawer.vue +++ b/apps/web-antd/src/views/marketing/coupon/components/CouponEditorDrawer.vue @@ -12,7 +12,6 @@ import type { import { Button, - Checkbox, DatePicker, Drawer, Form, @@ -21,7 +20,6 @@ import { Radio, Select, Spin, - Switch, } from 'ant-design-vue'; /** * 文件职责:优惠券编辑抽屉。 @@ -55,7 +53,6 @@ const emit = defineEmits<{ (event: 'setName', value: string): void; (event: 'setPerUserLimit', value: null | number): void; (event: 'setRelativeValidDays', value: null | number): void; - (event: 'setStatus', value: boolean): void; (event: 'setStoreIds', value: string[]): void; (event: 'setStoreScopeMode', value: MarketingCouponStoreScopeMode): void; (event: 'setTotalQuantity', value: null | number): void; @@ -65,16 +62,6 @@ const emit = defineEmits<{ (event: 'submit'): void; }>(); -function onChannelsChange(value: Array) { - emit( - 'setChannels', - value.filter( - (item): item is MarketingCouponChannel => - item === 'delivery' || item === 'pickup' || item === 'dine_in', - ), - ); -} - function onStoreIdsChange(value: Array) { emit('setStoreIds', value.map(String)); } @@ -140,19 +127,11 @@ function onRelativeValidDaysChange(value: null | number | string) { emit('setRelativeValidDays', parseNullableNumber(value)); } -function onChannelsGroupChange(value: unknown[]) { - onChannelsChange((value ?? []).map(String)); -} - function onStoreIdsSelectChange(value: unknown) { const values = Array.isArray(value) ? value : []; onStoreIdsChange(values.map(String)); } -function onStatusChange(value: unknown) { - emit('setStatus', value === true || value === 'true'); -} - function parseNullableNumber(value: null | number | string) { if (value === null || value === undefined || value === '') { return null; @@ -160,6 +139,16 @@ function parseNullableNumber(value: null | number | string) { const numeric = Number(value); return Number.isNaN(numeric) ? null : numeric; } + +function resolveToggledChannels( + channels: MarketingCouponChannel[], + channel: MarketingCouponChannel, +) { + if (channels.includes(channel)) { + return channels.filter((item) => item !== channel); + } + return [...channels, channel]; +}