1
This commit is contained in:
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
@@ -27,7 +27,7 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
|
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
|
||||||
<title>民众智创</title>
|
<title>民众智创</title>
|
||||||
<script type="module" crossorigin src="/assets/index-CfObFeCy.js"></script>
|
<script type="module" crossorigin src="/assets/index-qMch-3Hx.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-DtYH0-uL.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-DtYH0-uL.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -303,9 +303,9 @@ const InvoicePage: React.FC = () => {
|
|||||||
key: 'status',
|
key: 'status',
|
||||||
width: 120,
|
width: 120,
|
||||||
render: (_: any, record: any) => {
|
render: (_: any, record: any) => {
|
||||||
// 已开票标签
|
// 已开票/开票中标签
|
||||||
if (record._occupied) {
|
if (record._occupied) {
|
||||||
return <Tag color="orange" style={{ fontWeight: 500, padding: '4px 12px' }}>已开票</Tag>;
|
return <Tag color="orange" style={{ fontWeight: 500, padding: '4px 12px' }}>已申请开票</Tag>;
|
||||||
}
|
}
|
||||||
const status = record.status || 'pending';
|
const status = record.status || 'pending';
|
||||||
const statusConfig: Record<string, { color: string; label: string; bg: string }> = {
|
const statusConfig: Record<string, { color: string; label: string; bg: string }> = {
|
||||||
@@ -492,6 +492,9 @@ const InvoicePage: React.FC = () => {
|
|||||||
setIssueModalOpen(false);
|
setIssueModalOpen(false);
|
||||||
const defaultHeader = allHeadersForSelect.find(h => h.isDefault);
|
const defaultHeader = allHeadersForSelect.find(h => h.isDefault);
|
||||||
setSelectedHeaderId(defaultHeader?.id || allHeadersForSelect[0]?.id || null);
|
setSelectedHeaderId(defaultHeader?.id || allHeadersForSelect[0]?.id || null);
|
||||||
|
// 自动填充默认抬头的邮箱
|
||||||
|
const headerEmail = defaultHeader?.email || allHeadersForSelect[0]?.email || '';
|
||||||
|
setEmail(headerEmail);
|
||||||
setSelectHeaderModalOpen(true);
|
setSelectHeaderModalOpen(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -503,7 +506,7 @@ const InvoicePage: React.FC = () => {
|
|||||||
}
|
}
|
||||||
const selectedHeader = allHeadersForSelect.find(h => h.id === selectedHeaderId);
|
const selectedHeader = allHeadersForSelect.find(h => h.id === selectedHeaderId);
|
||||||
// 优先使用弹窗中填写的邮箱,否则使用抬头中保存的邮箱
|
// 优先使用弹窗中填写的邮箱,否则使用抬头中保存的邮箱
|
||||||
const finalEmail = email.trim() || selectedHeader?.email || '';
|
const finalEmail = (email || selectedHeader?.email || '').trim();
|
||||||
if (!finalEmail) {
|
if (!finalEmail) {
|
||||||
message.warning('请输入电子邮箱');
|
message.warning('请输入电子邮箱');
|
||||||
return;
|
return;
|
||||||
@@ -514,7 +517,12 @@ const InvoicePage: React.FC = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const selectedOrders = Array.from(selectedOrdersMap.values());
|
const selectedOrders = Array.from(selectedOrdersMap.values());
|
||||||
const orderIds = selectedOrders.map((o: any) => o.id || o.order_no || o.orderNo);
|
// 提取订单ID(兼容 camelCase 和 snake_case 字段名)
|
||||||
|
const orderIds = selectedOrders.map((o: any) => o.id || o.orderNo || o.order_no).filter(Boolean);
|
||||||
|
if (orderIds.length === 0) {
|
||||||
|
message.warning('请至少选择一个订单');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setSubmitting(true);
|
setSubmitting(true);
|
||||||
try {
|
try {
|
||||||
@@ -920,9 +928,10 @@ const InvoicePage: React.FC = () => {
|
|||||||
closeIcon={<CloseOutlined style={{ fontSize: 16, color: '#94a3b8' }} />}
|
closeIcon={<CloseOutlined style={{ fontSize: 16, color: '#94a3b8' }} />}
|
||||||
>
|
>
|
||||||
<div style={{ padding: '0 24px 24px' }}>
|
<div style={{ padding: '0 24px 24px' }}>
|
||||||
{/* 邮箱输入 */}
|
{/* 邮箱显示(自动使用抬头邮箱,可修改) */}
|
||||||
{(() => {
|
{(() => {
|
||||||
const currentHeader = allHeadersForSelect.find(h => h.id === selectedHeaderId);
|
const currentHeader = allHeadersForSelect.find(h => h.id === selectedHeaderId);
|
||||||
|
const displayEmail = email || currentHeader?.email || '';
|
||||||
return (
|
return (
|
||||||
<div style={{ padding: '16px 0 12px', borderBottom: '1px solid #f1f5f9', marginBottom: 12 }}>
|
<div style={{ padding: '16px 0 12px', borderBottom: '1px solid #f1f5f9', marginBottom: 12 }}>
|
||||||
<div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
|
<div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
|
||||||
@@ -931,20 +940,11 @@ const InvoicePage: React.FC = () => {
|
|||||||
</span>
|
</span>
|
||||||
<Input
|
<Input
|
||||||
placeholder="发票将发送至该邮箱"
|
placeholder="发票将发送至该邮箱"
|
||||||
value={email}
|
value={displayEmail}
|
||||||
onChange={(e) => setEmail(e.target.value)}
|
onChange={(e) => setEmail(e.target.value)}
|
||||||
style={{ maxWidth: 360 }}
|
style={{ maxWidth: 360 }}
|
||||||
allowClear
|
allowClear
|
||||||
/>
|
/>
|
||||||
{currentHeader?.email && !email && (
|
|
||||||
<Button
|
|
||||||
type="link"
|
|
||||||
size="small"
|
|
||||||
onClick={() => setEmail(currentHeader.email || '')}
|
|
||||||
>
|
|
||||||
使用抬头邮箱({currentHeader.email})
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@@ -959,7 +959,13 @@ const InvoicePage: React.FC = () => {
|
|||||||
render: (_: any, record: InvoiceHeader) => (
|
render: (_: any, record: InvoiceHeader) => (
|
||||||
<Radio
|
<Radio
|
||||||
checked={selectedHeaderId === record.id}
|
checked={selectedHeaderId === record.id}
|
||||||
onChange={() => setSelectedHeaderId(record.id)}
|
onChange={() => {
|
||||||
|
setSelectedHeaderId(record.id);
|
||||||
|
// 切换抬头时自动填充邮箱(如果当前邮箱为空)
|
||||||
|
if (record.email && !email) {
|
||||||
|
setEmail(record.email);
|
||||||
|
}
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user