v4.0.18版本更新
This commit is contained in:
@@ -3,7 +3,7 @@ import { Link } from 'react-router-dom';
|
||||
import { Button, Popconfirm, Space, Table, Typography, message } from 'antd';
|
||||
import type { ColumnsType } from 'antd/es/table';
|
||||
import type { PartnerAssocSummary, PartnerAssocUserItem } from '@dukang/shared-types';
|
||||
import { request, type HqProfile, type Paginated } from '../lib/api';
|
||||
import { request, requestDownload, type HqProfile, type Paginated } from '../lib/api';
|
||||
import { fmtTime } from '../lib/constants';
|
||||
import ActivityPosterDownloadModal from './ActivityPosterDownloadModal';
|
||||
|
||||
@@ -27,6 +27,7 @@ export default function PartnerAssocPanel({ partnerId }: PartnerAssocPanelProps)
|
||||
const [canEditAssoc, setCanEditAssoc] = useState(false);
|
||||
const [canDownloadPosters, setCanDownloadPosters] = useState(false);
|
||||
const [posterDownloadOpen, setPosterDownloadOpen] = useState(false);
|
||||
const [downloadingQr, setDownloadingQr] = useState(false);
|
||||
|
||||
const loadSummary = useCallback(async () => {
|
||||
const data = await request<PartnerAssocSummary>(`/admin/partners/${partnerId}/assoc`);
|
||||
@@ -78,6 +79,26 @@ export default function PartnerAssocPanel({ partnerId }: PartnerAssocPanelProps)
|
||||
}
|
||||
}
|
||||
|
||||
async function downloadBareQrcode() {
|
||||
if (!summary?.qrcodeUrl) {
|
||||
message.warning('尚未生成关联码');
|
||||
return;
|
||||
}
|
||||
setDownloadingQr(true);
|
||||
try {
|
||||
await requestDownload(
|
||||
`/admin/partners/${partnerId}/assoc/qrcode`,
|
||||
{},
|
||||
`partner-assoc-${partnerId}.png`,
|
||||
);
|
||||
message.success('已开始下载二维码');
|
||||
} catch (e) {
|
||||
message.error(e instanceof Error ? e.message : '下载二维码失败');
|
||||
} finally {
|
||||
setDownloadingQr(false);
|
||||
}
|
||||
}
|
||||
|
||||
async function unbind(userId: string) {
|
||||
try {
|
||||
await request(`/admin/partners/${partnerId}/assoc/users/${userId}/unbind`, { method: 'POST' });
|
||||
@@ -137,12 +158,19 @@ export default function PartnerAssocPanel({ partnerId }: PartnerAssocPanelProps)
|
||||
关联用户 {summary?.userCount ?? 0} 人
|
||||
</Link>
|
||||
</Typography.Paragraph>
|
||||
<Button loading={issuing} onClick={() => void reissue()}>
|
||||
{summary?.qrcodeUrl ? '补发关联码' : '生成关联码'}
|
||||
</Button>
|
||||
{canDownloadPosters ? (
|
||||
<Button onClick={() => setPosterDownloadOpen(true)}>下载活动图</Button>
|
||||
) : null}
|
||||
<Space wrap>
|
||||
<Button loading={issuing} onClick={() => void reissue()}>
|
||||
{summary?.qrcodeUrl ? '补发关联码' : '生成关联码'}
|
||||
</Button>
|
||||
{summary?.qrcodeUrl ? (
|
||||
<Button loading={downloadingQr} onClick={() => void downloadBareQrcode()}>
|
||||
下载二维码
|
||||
</Button>
|
||||
) : null}
|
||||
{canDownloadPosters ? (
|
||||
<Button onClick={() => setPosterDownloadOpen(true)}>下载活动图</Button>
|
||||
) : null}
|
||||
</Space>
|
||||
</div>
|
||||
</Space>
|
||||
<Table
|
||||
|
||||
Reference in New Issue
Block a user