import { Modal } from 'antd'
import { ExclamationCircleOutlined, DeleteOutlined } from '@ant-design/icons'

/**
 * 标准确认对话框组件
 * @param {Object} options - 对话框配置
 * @param {string} options.title - 标题
 * @param {string|ReactNode} options.content - 内容
 * @param {string} options.okText - 确认按钮文字
 * @param {string} options.cancelText - 取消按钮文字
 * @param {string} options.type - 类型: 'warning', 'danger', 'info'
 * @param {Function} options.onOk - 确认回调
 * @param {Function} options.onCancel - 取消回调
 */
const ConfirmDialog = {
  /**
   * 显示删除确认对话框（单个项目）
   */
  delete: ({ title = '确认删除', itemName, itemInfo, onOk, onCancel }) => {
    Modal.confirm({
      title,
      content: (
        <div>
          <p>您确定要删除以下项目吗？</p>
          <div style={{ marginTop: 12, padding: 12, background: '#f5f5f5', borderRadius: 6 }}>
            <p style={{ margin: 0, fontWeight: 500 }}>{itemName}</p>
            {itemInfo && (
              <p style={{ margin: '4px 0 0 0', fontSize: 13, color: '#666' }}>{itemInfo}</p>
            )}
          </div>
          <p style={{ marginTop: 12, color: '#ff4d4f', fontSize: 13 }}>
            此操作不可恢复，请谨慎操作！
          </p>
        </div>
      ),
      okText: '确认删除',
      cancelText: '取消',
      okType: 'danger',
      centered: true,
      icon: <DeleteOutlined style={{ color: '#ff4d4f' }} />,
      onOk,
      onCancel,
    })
  },

  /**
   * 显示批量删除确认对话框
   */
  batchDelete: ({ count, items, onOk, onCancel }) => {
    Modal.confirm({
      title: '批量删除确认',
      content: (
        <div>
          <p>您确定要删除选中的 {count} 个项目吗？</p>
          <div
            style={{
              marginTop: 12,
              padding: 12,
              background: '#f5f5f5',
              borderRadius: 6,
              maxHeight: 200,
              overflowY: 'auto',
            }}
          >
            {items.map((item, index) => (
              <div
                key={index}
                style={{
                  padding: '6px 0',
                  borderBottom: index < items.length - 1 ? '1px solid #e8e8e8' : 'none',
                }}
              >
                <span style={{ fontWeight: 500 }}>{item.name}</span>
                {item.info && (
                  <span style={{ marginLeft: 12, fontSize: 13, color: '#666' }}>
                    ({item.info})
                  </span>
                )}
              </div>
            ))}
          </div>
          <p style={{ marginTop: 12, color: '#ff4d4f', fontSize: 13 }}>
            此操作不可恢复，请谨慎操作！
          </p>
        </div>
      ),
      okText: '确认删除',
      cancelText: '取消',
      okType: 'danger',
      centered: true,
      icon: <DeleteOutlined style={{ color: '#ff4d4f' }} />,
      onOk,
      onCancel,
    })
  },

  /**
   * 显示警告确认对话框
   */
  warning: ({ title, content, okText = '确定', cancelText = '取消', onOk, onCancel }) => {
    Modal.confirm({
      title,
      content,
      okText,
      cancelText,
      centered: true,
      icon: <ExclamationCircleOutlined style={{ color: '#faad14' }} />,
      onOk,
      onCancel,
    })
  },

  /**
   * 显示通用确认对话框
   */
  confirm: ({
    title,
    content,
    okText = '确定',
    cancelText = '取消',
    okType = 'primary',
    onOk,
    onCancel,
  }) => {
    Modal.confirm({
      title,
      content,
      okText,
      cancelText,
      okType,
      centered: true,
      onOk,
      onCancel,
    })
  },
}

export default ConfirmDialog
