v4.0.11HQ后端优化(快链、账单日等)
CI / verify (pull_request) Has been cancelled

This commit is contained in:
2026-09-02 15:45:12 +08:00
parent 1000b489a0
commit 6880b5daf4
31 changed files with 1014 additions and 402 deletions
+43 -2
View File
@@ -1,4 +1,5 @@
import { useEffect, useState } from 'react';
import { useNavigate } from 'react-router-dom';
import {
Button,
Card,
@@ -14,6 +15,7 @@ import {
Table,
Tabs,
Tag,
Tooltip,
Typography,
message,
} from 'antd';
@@ -22,6 +24,7 @@ import dayjs, { type Dayjs } from 'dayjs';
import { request, type Paginated } from '../lib/api';
import { ADMIN_OPTIONS_PAGE_SIZE, fmtTime } from '../lib/constants';
import { downloadExcelCsv } from '../lib/exportExcel';
import { appendExportColumns } from '../lib/export-columns';
import { useAdminList } from '../lib/useAdminList';
import { useAdminListColumns } from '../lib/useAdminListColumns';
import { AdminListHeader } from '../components/AdminListHeader';
@@ -48,6 +51,7 @@ type Row = {
redeemCommission: number;
totalAmount: number;
status: string;
billDate: string;
periodStart: string;
periodEnd: string;
rejectReason?: string | null;
@@ -109,6 +113,7 @@ function weekMonday(d: Dayjs) {
}
export default function PartnerBillsPage() {
const navigate = useNavigate();
const [form] = Form.useForm();
const [filters, setFilters] = useState<Record<string, string>>({});
const [partners, setPartners] = useState<PartnerOption[]>([]);
@@ -263,6 +268,7 @@ export default function PartnerBillsPage() {
if (filters.status) qs.set('status', filters.status);
if (filters.partnerId) qs.set('partnerId', filters.partnerId);
if (filters.weekStartYmd) qs.set('weekStartYmd', filters.weekStartYmd);
appendExportColumns(qs, exportColumnKeys);
const result = await request<{ csv: string; count: number }>(`/admin/partner-bills/export?${qs}`);
const suffix = filters.weekStartYmd || 'all';
downloadExcelCsv(result.csv, `合伙人账单_${suffix}.csv`);
@@ -285,6 +291,7 @@ export default function PartnerBillsPage() {
const baseColumns: ColumnsType<Row> = [
{
title: '账单号',
key: '账单号',
dataIndex: 'billNo',
width: 180,
render: (v, row) => (
@@ -293,29 +300,45 @@ export default function PartnerBillsPage() {
},
{
title: '合伙人',
key: '合伙人',
width: 200,
render: (_, r) => partnerName(r),
},
{
title: (
<Tooltip title="周账出账日为账期结束后的下周一;历史月账为次月 1 日">
</Tooltip>
),
key: '出账日',
dataIndex: 'billDate',
width: 110,
render: (v) => String(v || '').slice(0, 10),
},
{
title: '账期',
key: '账期',
width: 200,
render: (_, r) =>
`${String(r.periodStart || '').slice(0, 10)} ~ ${String(r.periodEnd || '').slice(0, 10)}`,
},
{
title: '酒单佣金',
key: '酒单佣金',
dataIndex: 'orderCommission',
width: 110,
render: (v) => `¥${Number(v).toFixed(2)}`,
},
{
title: '核销佣金',
key: '核销佣金',
dataIndex: 'redeemCommission',
width: 110,
render: (v) => `¥${Number(v).toFixed(2)}`,
},
{
title: '合计应付',
key: '合计应付',
dataIndex: 'totalAmount',
width: 130,
render: (v) =>
@@ -323,16 +346,19 @@ export default function PartnerBillsPage() {
},
{
title: '收款户名',
key: '收款户名',
width: 100,
render: (_, r) => partnerBank(r)?.bankAccountName || '—',
},
{
title: '收款账号',
key: '收款账号',
width: 140,
render: (_, r) => partnerBank(r)?.bankAccountNo || '—',
},
{
title: '状态',
key: '状态',
dataIndex: 'status',
width: 130,
render: (s, row) => (
@@ -380,7 +406,7 @@ export default function PartnerBillsPage() {
},
];
const { columns, settingsButton, settingsModal } = useAdminListColumns('finance-partner-bills', baseColumns, { page, pageSize });
const { columns, settingsButton, settingsModal, exportColumnKeys } = useAdminListColumns('finance-partner-bills', baseColumns, { page, pageSize });
return (
<div>
@@ -572,6 +598,7 @@ export default function PartnerBillsPage() {
<Descriptions column={1} size="small" bordered>
<Descriptions.Item label="账单号">{detail.billNo}</Descriptions.Item>
<Descriptions.Item label="合伙人">{partnerName(detail)}</Descriptions.Item>
<Descriptions.Item label="出账日">{String(detail.billDate || '').slice(0, 10)}</Descriptions.Item>
<Descriptions.Item label="账期">
{String(detail.periodStart).slice(0, 10)} ~ {String(detail.periodEnd).slice(0, 10)}
</Descriptions.Item>
@@ -610,7 +637,21 @@ export default function PartnerBillsPage() {
pagination={false}
dataSource={detail.orderItems ?? []}
columns={[
{ title: '订单号', dataIndex: 'refNo', width: 160 },
{
title: '订单号',
dataIndex: 'refNo',
width: 160,
render: (v: string) =>
v ? (
<AdminPrimaryLink
onClick={() => navigate(`/orders?orderNo=${encodeURIComponent(v)}`)}
>
{v}
</AdminPrimaryLink>
) : (
'—'
),
},
{ title: '商品', dataIndex: 'title' },
{ title: '数量', dataIndex: 'extra', width: 70 },
{