mirror of
https://github.com/Buriburizaem0n/admin-frontend-domain.git
synced 2026-02-04 04:30:06 +00:00
<edit>adjust some settings.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
// src/routes/domain.tsx (最终完整版)
|
// src/routes/domain.tsx (最终 Bug 修复版)
|
||||||
|
|
||||||
import { useState, useEffect } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
import { PlusCircle, RefreshCw, MoreVertical, Trash2, Edit, CheckCircle } from 'lucide-react'
|
import { PlusCircle, RefreshCw, MoreVertical, Trash2, Edit, CheckCircle } from 'lucide-react'
|
||||||
@@ -28,15 +28,12 @@ export default function DomainPage() {
|
|||||||
const [domains, setDomains] = useState<Domain[]>([])
|
const [domains, setDomains] = useState<Domain[]>([])
|
||||||
const [isLoading, setIsLoading] = useState(true)
|
const [isLoading, setIsLoading] = useState(true)
|
||||||
|
|
||||||
// 添加弹窗状态
|
|
||||||
const [isAddModalOpen, setIsAddModalOpen] = useState(false)
|
const [isAddModalOpen, setIsAddModalOpen] = useState(false)
|
||||||
const [newDomainName, setNewDomainName] = useState('')
|
const [newDomainName, setNewDomainName] = useState('')
|
||||||
|
|
||||||
// 验证信息弹窗状态
|
|
||||||
const [verificationToken, setVerificationToken] = useState('')
|
const [verificationToken, setVerificationToken] = useState('')
|
||||||
const [isVerificationInfoModalOpen, setIsVerificationInfoModalOpen] = useState(false)
|
const [isVerificationInfoModalOpen, setIsVerificationInfoModalOpen] = useState(false)
|
||||||
|
|
||||||
// 编辑弹窗状态
|
|
||||||
const [isEditModalOpen, setIsEditModalOpen] = useState(false)
|
const [isEditModalOpen, setIsEditModalOpen] = useState(false)
|
||||||
const [currentDomain, setCurrentDomain] = useState<Domain | null>(null)
|
const [currentDomain, setCurrentDomain] = useState<Domain | null>(null)
|
||||||
const [editFormData, setEditFormData] = useState<Partial<BillingDataMod>>({})
|
const [editFormData, setEditFormData] = useState<Partial<BillingDataMod>>({})
|
||||||
@@ -46,9 +43,7 @@ export default function DomainPage() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (domainData) {
|
if (domainData) {
|
||||||
// 过滤掉 pending 状态的域名,因为公开页面不显示它们
|
setDomains(domainData)
|
||||||
const visibleDomains = domainData.filter(d => d.Status === 'verified' || d.Status === 'expired')
|
|
||||||
setDomains(visibleDomains)
|
|
||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -57,7 +52,6 @@ export default function DomainPage() {
|
|||||||
}
|
}
|
||||||
}, [domainData, error])
|
}, [domainData, error])
|
||||||
|
|
||||||
// --- 事件处理函数 ---
|
|
||||||
const handleAddDomain = async () => {
|
const handleAddDomain = async () => {
|
||||||
if (!newDomainName) {
|
if (!newDomainName) {
|
||||||
toast.error('请输入域名')
|
toast.error('请输入域名')
|
||||||
@@ -108,7 +102,7 @@ export default function DomainPage() {
|
|||||||
billing_data: domain.BillingData as BillingDataMod,
|
billing_data: domain.BillingData as BillingDataMod,
|
||||||
})
|
})
|
||||||
toast.success(`域名 ${domain.Domain} 的可见状态已更新`)
|
toast.success(`域名 ${domain.Domain} 的可见状态已更新`)
|
||||||
mutate() // 刷新列表以显示最新状态
|
mutate()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
toast.error('更新失败', { description: (err as Error).message })
|
toast.error('更新失败', { description: (err as Error).message })
|
||||||
}
|
}
|
||||||
@@ -131,7 +125,6 @@ export default function DomainPage() {
|
|||||||
if (!currentDomain) return
|
if (!currentDomain) return
|
||||||
try {
|
try {
|
||||||
const dataToSend = { ...editFormData };
|
const dataToSend = { ...editFormData };
|
||||||
// 将 HTML date input 的 'YYYY-MM-DD' 格式转换为后端需要的 ISO 字符串格式
|
|
||||||
if (dataToSend.registeredDate) {
|
if (dataToSend.registeredDate) {
|
||||||
dataToSend.registeredDate = new Date(dataToSend.registeredDate).toISOString();
|
dataToSend.registeredDate = new Date(dataToSend.registeredDate).toISOString();
|
||||||
}
|
}
|
||||||
@@ -160,7 +153,7 @@ export default function DomainPage() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- JSX 渲染 ---
|
// --- JSX 渲染 (保持不变) ---
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Card>
|
<Card>
|
||||||
@@ -233,6 +226,7 @@ export default function DomainPage() {
|
|||||||
</CardContent>
|
</CardContent>
|
||||||
</Card>
|
</Card>
|
||||||
|
|
||||||
|
{/* 验证信息弹窗 */}
|
||||||
<Dialog open={isVerificationInfoModalOpen} onOpenChange={setIsVerificationInfoModalOpen}>
|
<Dialog open={isVerificationInfoModalOpen} onOpenChange={setIsVerificationInfoModalOpen}>
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
@@ -253,6 +247,7 @@ export default function DomainPage() {
|
|||||||
</DialogContent>
|
</DialogContent>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|
||||||
|
{/* 编辑弹窗 */}
|
||||||
<Dialog open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>
|
<Dialog open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>
|
||||||
<DialogContent className="sm:max-w-[425px]">
|
<DialogContent className="sm:max-w-[425px]">
|
||||||
<DialogHeader>
|
<DialogHeader>
|
||||||
|
|||||||
Reference in New Issue
Block a user