diff --git a/qy-lty-admin/app/ai-model/page.tsx b/qy-lty-admin/app/ai-model/page.tsx index 4a34cbb..598fb08 100644 --- a/qy-lty-admin/app/ai-model/page.tsx +++ b/qy-lty-admin/app/ai-model/page.tsx @@ -1,18 +1,47 @@ +"use client" + +import { useState, useEffect } from "react" import { DashboardShell } from "@/components/dashboard-shell" import { DashboardHeader } from "@/components/dashboard-header" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" -import { Brain, Mic, Database, Plus, Sparkles, Edit, Play, Sliders, User } from "lucide-react" +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, +} from "@/components/ui/dialog" +import { Brain, Mic, Database, Plus, Sparkles, Edit, Play, Sliders, User, KeyRound } from "lucide-react" +import { hasPermission } from "@/lib/permissions" export default function AIModelPage() { + const [mounted, setMounted] = useState(false) + const [isCredentialDialogOpen, setIsCredentialDialogOpen] = useState(false) + + useEffect(() => { + setMounted(true) + }, []) + return ( - +
+ + {mounted && hasPermission("credential-slot") && ( + + )} +
@@ -440,6 +469,20 @@ export default function AIModelPage() { + + + + + 通用凭据槽位 + + 对话框真实内容由 Phase 3 落地 + + + +
) }