import { useState } from 'react'
import { Table, Form, Modal, Button, Radio, Input, InputNumber, Checkbox, DatePicker, Space } from 'antd'
import { useTranslation } from 'react-i18next'
import dayjs from 'dayjs'
import BatchImportPrice from './BatchImportPrice'
import { useDatePresets } from '@/hooks/useDatePresets'
import useProductsStore from '@/stores/Products/Index'
const { RangePicker } = DatePicker
const ProductInfoQuotation = ({ editable, ...props }) => {
const { t } = useTranslation()
const [isQuotationModalOpen, setQuotationModalOpen] = useState(false)
const [quotationForm] = Form.useForm()
const datePresets = useDatePresets()
const [editingProduct] = useProductsStore((state) => [state.editingProduct])
const [batchImportPriceVisible, setBatchImportPriceVisible] = useState(false)
const [quotationTableVisible, setQuotationTableVisible] = useState(false)
const [quotation, setQuotation] = useState([])
const [batchImportData, setBatchImportData] = useState([])
const handleBatchImportData = (data) => {
setBatchImportData(data)
}
const handleBatchImportOK = () => {
const tempBatchImportData = batchImportData.map((item) => {
const { tag, validPeriod, ...rest } = item
return rest
})
const newData = [...quotation, ...tempBatchImportData]
const sortedData = [...newData].sort((a, b) => {
if (a.group_size_min !== b.group_size_min) {
return a.group_size_min - b.group_size_min
}
return a.group_size_max - b.group_size_max
})
setQuotation(sortedData)
setBatchImportPriceVisible(false)
}
const quotationTableVisibleOK = () => {
const tempQuotation = [...quotation]
const sortedData = [...tempQuotation].sort((a, b) => {
const aValidPeriod = dayjs(a.use_dates_end).diff(dayjs(a.use_dates_start))
const bValidPeriod = dayjs(b.use_dates_end).diff(dayjs(b.use_dates_start))
if (aValidPeriod !== bValidPeriod) {
return aValidPeriod - bValidPeriod
}
const aGroupSize = a.group_size_max - a.group_size_min
const bGroupSize = b.group_size_max - b.group_size_min
return aGroupSize - bGroupSize
})
setQuotation(sortedData)
setQuotationTableVisible(false)
}
const quotationTableVisibleCancel = () => {
setQuotationTableVisible(false)
}
const handleDelete = (index) => {
const newData = [...quotation]
newData.splice(index, 1)
const sortedData = [...newData].sort((a, b) => {
const aValidPeriod = dayjs(a.use_dates_end).diff(dayjs(a.use_dates_start))
const bValidPeriod = dayjs(b.use_dates_end).diff(dayjs(b.use_dates_start))
if (aValidPeriod !== bValidPeriod) {
return aValidPeriod - bValidPeriod
}
const aGroupSize = a.group_size_max - a.group_size_min
const bGroupSize = b.group_size_max - b.group_size_min
return aGroupSize - bGroupSize
})
setQuotation(sortedData)
}
const onQuotationSeleted = async (quotation) => {
// 转换为 RangePicker 赋值格式
quotation.use_dates = [dayjs(quotation.use_dates_start), dayjs(quotation.use_dates_end)]
quotationForm.setFieldsValue(quotation)
setQuotationModalOpen(true)
}
const onNewQuotation = () => {
// const emptyQuotation = newEmptyQuotation()
// quotationForm.setFieldsValue(emptyQuotation)
// setQuotationModalOpen(true)
}
const onQuotationFinish = (values) => {
console.info(values)
// saveOrUpdateQuotation(values)
// .then(() => {
// setQuotationModalOpen(false)
// })
// .catch(ex => {
// notification.error({
// message: 'Notification',
// description: ex.message,
// placement: 'top',
// duration: 4,
// })
// })
}
const onQuotationFailed = (error) => {
console.log('Failed:', error)
// form.resetFields()
}
const quotationColumns = [
{ title: t('products:adultPrice'), dataIndex: 'adult_cost', width: '4rem' },
{ title: t('products:childrenPrice'), dataIndex: 'child_cost', width: '4rem' },
{ title: t('products:currency'), dataIndex: 'currency', width: '4rem' },
{
title: t('products:Types'),
dataIndex: 'unit_name',
width: '4rem',
render: (text) => (text === '0' ? '每人' : text === '1' ? '每团' : text),
},
{
title: t('products:number'),
dataIndex: 'group_size',
width: '4rem',
render: (_, record) => `${record.group_size_min}-${record.group_size_max}`,
},
{
title: t('products:validityPeriod'),
dataIndex: 'use_dates',
width: '6rem',
render: (_, record) => `${record.use_dates_start}-${record.use_dates_end}`,
},
{ title: t('products:Weekdays'), dataIndex: 'weekdays', width: '4rem' },
{
title: t('products:operation'),
dataIndex: 'operation',
width: '3%',
render: (_, quotation) => {
return (