import React, { useEffect, useState } from 'react'; import { API, copy, showError, showSuccess, timestamp2string, renderQuota } from '../../helpers'; import { ITEMS_PER_PAGE } from '../../constants'; import { Button, Card, Divider, Dropdown, Form, Modal, Popover, Space, Table, Tag, Typography, } from '@douyinfe/semi-ui'; import { IconPlus, IconCopy, IconSearch, IconEyeOpened, IconEdit, IconDelete, IconStop, IconPlay, IconMore, } from '@douyinfe/semi-icons'; import EditRedemption from '../../pages/Redemption/EditRedemption'; import { useTranslation } from 'react-i18next'; const { Text } = Typography; function renderTimestamp(timestamp) { return <>{timestamp2string(timestamp)}; } const RedemptionsTable = () => { const { t } = useTranslation(); const renderStatus = (status) => { switch (status) { case 1: return ( {t('未使用')} ); case 2: return ( {t('已禁用')} ); case 3: return ( {t('已使用')} ); default: return ( {t('未知状态')} ); } }; const columns = [ { title: t('ID'), dataIndex: 'id', }, { title: t('名称'), dataIndex: 'name', }, { title: t('状态'), dataIndex: 'status', key: 'status', render: (text, record, index) => { return
{renderStatus(text)}
; }, }, { title: t('额度'), dataIndex: 'quota', render: (text, record, index) => { return
{renderQuota(parseInt(text))}
; }, }, { title: t('创建时间'), dataIndex: 'created_time', render: (text, record, index) => { return
{renderTimestamp(text)}
; }, }, { title: t('兑换人ID'), dataIndex: 'used_user_id', render: (text, record, index) => { return
{text === 0 ? t('无') : text}
; }, }, { title: '', dataIndex: 'operate', fixed: 'right', render: (text, record, index) => { // 创建更多操作的下拉菜单项 const moreMenuItems = [ { node: 'item', name: t('删除'), icon: , type: 'danger', onClick: () => { Modal.confirm({ title: t('确定是否要删除此兑换码?'), content: t('此修改将不可逆'), onOk: () => { manageRedemption(record.id, 'delete', record).then(() => { removeRecord(record.key); }); }, }); }, } ]; // 动态添加启用/禁用按钮 if (record.status === 1) { moreMenuItems.push({ node: 'item', name: t('禁用'), icon: , type: 'warning', onClick: () => { manageRedemption(record.id, 'disable', record); }, }); } else { moreMenuItems.push({ node: 'item', name: t('启用'), icon: , type: 'secondary', onClick: () => { manageRedemption(record.id, 'enable', record); }, disabled: record.status === 3, }); } return (
setFormApi(api)} onSubmit={() => { setActivePage(1); searchRedemptions(null, 1, pageSize); }} allowEmpty={true} autoComplete="off" layout="horizontal" trigger="change" stopValidateWithError={false} className="w-full md:w-auto order-1 md:order-2" >
} placeholder={t('关键字(id或者名称)')} className="!rounded-full" showClear pure />
); return ( <> t('第 {{start}} - {{end}} 条,共 {{total}} 条', { start: page.currentStart, end: page.currentEnd, total: tokenCount, }), onPageSizeChange: (size) => { setPageSize(size); setActivePage(1); const { searchKeyword } = getFormValues(); if (searchKeyword === '') { loadRedemptions(1, size).then(); } else { searchRedemptions(searchKeyword, 1, size).then(); } }, onPageChange: handlePageChange, }} loading={loading} rowSelection={rowSelection} onRow={handleRow} className="rounded-xl overflow-hidden" size="middle" >
); }; export default RedemptionsTable;