import { useEffect, useMemo } from 'react' import { useMutation, useQuery } from '@tanstack/react-query' import { useNavigate, useSearchParams } from 'react-router-dom' import dayjs from 'dayjs' import { Button, Card, Checkbox, Col, DatePicker, Form, Input, InputNumber, Radio, Row, Select, Space, message } from 'antd' import { HomeOutlined } from '@ant-design/icons' import client, { apiPrefix, unwrap, type ApiResponse } from '../../api/client' import { resourceApi } from '../../api/resources' const productOptions = [ '인터넷', 'TV', '집전화', '인터넷전화', '신용카드', '기타', '홈IOT', '동반', '후결합', '재약정', '소호', '원스톱', '렌탈', ] const options = (values: string[]) => values.map((value) => ({ value, label: value })) export default function OpenHomeSaleWritePage() { const navigate = useNavigate() const [search] = useSearchParams() const editId = search.get('id') ? Number(search.get('id')) : null const [form] = Form.useForm() const companies = useQuery({ queryKey: ['homesale-write-companies'], queryFn: () => resourceApi.list('companies', { size: 200 }) }) const inOptions = useMemo( () => (companies.data?.items ?? []).filter((c) => String(c.type) === 'IN').map((c) => ({ value: c.id, label: String(c.name) })), [companies.data], ) const detail = useQuery({ queryKey: ['homesale-detail', editId], queryFn: async () => { const { data } = await client.get>>(`${apiPrefix()}/homesales/${editId}`) return unwrap(data) }, enabled: Boolean(editId) }) useEffect(() => { if (!detail.data) return const row = detail.data const phone = String(row.phone ?? '').replace(/\D/g, '') form.setFieldsValue({ ...row, installDate: row.installDate ? dayjs(String(row.installDate)) : dayjs(), receiptDate: row.receiptDate ? dayjs(String(row.receiptDate)) : dayjs(), products: String(row.products ?? '').split(',').map((v) => v.trim()).filter(Boolean), phone1: phone.slice(0, 3) || '010', phone2: phone.slice(3, 7), phone3: phone.slice(7, 11), status: row.status === '대기' ? '판매대기' : '판매완료' }) }, [detail.data, form]) const save = useMutation({ mutationFn: async (values: Record) => { const products = Array.isArray(values.products) ? values.products.join(',') : String(values.products ?? '') const payload: Record = { ...values, products, status: values.status === '판매대기' ? '대기' : '완료', phone: `${values.phone1}-${values.phone2}-${values.phone3}`, installDate: values.installDate ? dayjs(values.installDate as dayjs.Dayjs).format('YYYY-MM-DD') : dayjs().format('YYYY-MM-DD'), receiptDate: values.receiptDate ? dayjs(values.receiptDate as dayjs.Dayjs).format('YYYY-MM-DD') : dayjs().format('YYYY-MM-DD'), settleAmount: values.settleAmount ?? 0, margin: values.margin ?? 0, extraPolicy: values.extraPolicy ?? 0 } delete payload.phone1 delete payload.phone2 delete payload.phone3 if (editId) { const { data } = await client.put(`${apiPrefix()}/homesales/${editId}`, payload) return unwrap(data as ApiResponse) } const { data } = await client.post(`${apiPrefix()}/homesales`, payload) return unwrap(data as ApiResponse) }, onSuccess: () => { message.success(editId ? '수정했습니다.' : '홈상품판매를 등록했습니다.') navigate('/care/open/home') }, onError: (e: Error) => message.error(e.message) }) return (

홈상품판매 등록

판매하신 정보를 아래의 양식에 맞게 차례대로 입력해주세요. ('필수' 표시는 필수항목입니다.)

save.mutate(values)} > ({ value: v, label: v }))} />

판매하신 상품을 선택해주세요.