mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-09-29 07:56:37 +08:00
统一ui显示效果
This commit is contained in:
@@ -1 +1 @@
|
||||
VITE_API_BASE=http://192.168.31.126:6365
|
||||
VITE_API_BASE=http://192.168.100.11:6365
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
/>
|
||||
<meta
|
||||
key="viewport"
|
||||
content="viewport-fit=cover, width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
|
||||
content="viewport-fit=cover, width=device-width, initial-scale=1.0, user-scalable=no"
|
||||
name="viewport"
|
||||
/>
|
||||
<link href="/favicon.ico" rel="icon" />
|
||||
|
||||
@@ -4,8 +4,8 @@ export type SiteConfig = typeof siteConfig;
|
||||
|
||||
// 缓存相关常量
|
||||
const CACHE_PREFIX = 'vite_config_';
|
||||
const VERSION = "1.3.3";
|
||||
const APP_VERSION = "1.0.2";
|
||||
const VERSION = "1.3.4";
|
||||
const APP_VERSION = "1.0.3";
|
||||
|
||||
const getInitialConfig = () => {
|
||||
if (typeof window === 'undefined') {
|
||||
|
||||
@@ -138,13 +138,13 @@ export default function ForwardPage() {
|
||||
return () => window.removeEventListener('resize', checkMobile);
|
||||
}, []);
|
||||
|
||||
// 显示模式状态 - 从localStorage读取,默认为分类显示
|
||||
// 显示模式状态 - 从localStorage读取,默认为平铺显示
|
||||
const [viewMode, setViewMode] = useState<'grouped' | 'direct'>(() => {
|
||||
try {
|
||||
const savedMode = localStorage.getItem('forward-view-mode');
|
||||
return (savedMode as 'grouped' | 'direct') || 'grouped';
|
||||
return (savedMode as 'grouped' | 'direct') || 'direct';
|
||||
} catch {
|
||||
return 'grouped';
|
||||
return 'direct';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -58,6 +58,9 @@ export default function NodePage() {
|
||||
const [dialogTitle, setDialogTitle] = useState('');
|
||||
const [isEdit, setIsEdit] = useState(false);
|
||||
const [submitLoading, setSubmitLoading] = useState(false);
|
||||
const [deleteModalOpen, setDeleteModalOpen] = useState(false);
|
||||
const [deleteLoading, setDeleteLoading] = useState(false);
|
||||
const [nodeToDelete, setNodeToDelete] = useState<Node | null>(null);
|
||||
const [form, setForm] = useState<NodeForm>({
|
||||
id: null,
|
||||
name: '',
|
||||
@@ -419,19 +422,29 @@ export default function NodePage() {
|
||||
};
|
||||
|
||||
// 删除节点
|
||||
const handleDelete = async (node: Node) => {
|
||||
if (window.confirm(`确定要删除节点 "${node.name}" 吗?`)) {
|
||||
try {
|
||||
const res = await deleteNode(node.id);
|
||||
if (res.code === 0) {
|
||||
toast.success('删除成功');
|
||||
setNodeList(prev => prev.filter(n => n.id !== node.id));
|
||||
} else {
|
||||
toast.error(res.msg || '删除失败');
|
||||
}
|
||||
} catch (error) {
|
||||
toast.error('网络错误,请重试');
|
||||
const handleDelete = (node: Node) => {
|
||||
setNodeToDelete(node);
|
||||
setDeleteModalOpen(true);
|
||||
};
|
||||
|
||||
const confirmDelete = async () => {
|
||||
if (!nodeToDelete) return;
|
||||
|
||||
setDeleteLoading(true);
|
||||
try {
|
||||
const res = await deleteNode(nodeToDelete.id);
|
||||
if (res.code === 0) {
|
||||
toast.success('删除成功');
|
||||
setNodeList(prev => prev.filter(n => n.id !== nodeToDelete.id));
|
||||
setDeleteModalOpen(false);
|
||||
setNodeToDelete(null);
|
||||
} else {
|
||||
toast.error(res.msg || '删除失败');
|
||||
}
|
||||
} catch (error) {
|
||||
toast.error('网络错误,请重试');
|
||||
} finally {
|
||||
setDeleteLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -883,6 +896,40 @@ export default function NodePage() {
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
|
||||
{/* 删除确认模态框 */}
|
||||
<Modal
|
||||
isOpen={deleteModalOpen}
|
||||
onOpenChange={setDeleteModalOpen}
|
||||
size="sm"
|
||||
scrollBehavior="outside"
|
||||
>
|
||||
<ModalContent>
|
||||
{(onClose) => (
|
||||
<>
|
||||
<ModalHeader className="flex flex-col gap-1">
|
||||
<h2 className="text-xl font-bold">确认删除</h2>
|
||||
</ModalHeader>
|
||||
<ModalBody>
|
||||
<p>确定要删除节点 <strong>"{nodeToDelete?.name}"</strong> 吗?</p>
|
||||
<p className="text-small text-default-500">此操作不可恢复,请谨慎操作。</p>
|
||||
</ModalBody>
|
||||
<ModalFooter>
|
||||
<Button variant="light" onPress={onClose}>
|
||||
取消
|
||||
</Button>
|
||||
<Button
|
||||
color="danger"
|
||||
onPress={confirmDelete}
|
||||
isLoading={deleteLoading}
|
||||
>
|
||||
{deleteLoading ? '删除中...' : '确认删除'}
|
||||
</Button>
|
||||
</ModalFooter>
|
||||
</>
|
||||
)}
|
||||
</ModalContent>
|
||||
</Modal>
|
||||
|
||||
{/* 安装命令模态框 */}
|
||||
<Modal
|
||||
isOpen={installCommandModal}
|
||||
|
||||
@@ -878,7 +878,8 @@ export default function TunnelPage() {
|
||||
<Modal
|
||||
isOpen={deleteModalOpen}
|
||||
onOpenChange={setDeleteModalOpen}
|
||||
size="md"
|
||||
size="sm"
|
||||
scrollBehavior="outside"
|
||||
>
|
||||
<ModalContent>
|
||||
{(onClose) => (
|
||||
|
||||
Reference in New Issue
Block a user