"use client" import { useState } from "react" import { ChevronLeft, X } from "lucide-react" import { Button } from "@/components/ui/button" import { Card } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Textarea } from "@/components/ui/textarea" import { useRouter } from "next/navigation" import { DateRangePicker } from "@/components/ui/date-range-picker" import { WechatFriendSelector } from "@/components/WechatFriendSelector" import { WechatGroupSelector } from "@/components/WechatGroupSelector" import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion" import { api } from "@/lib/api" import { showToast } from "@/lib/toast" import { format } from "date-fns" import { zhCN } from "date-fns/locale" interface WechatFriend { id: string nickname: string wechatId: string avatar: string gender: "male" | "female" customer: string } interface WechatGroup { id: string name: string memberCount: number avatar: string owner: string customer: string } interface ApiResponse { code: number msg: string data: T } export default function NewContentLibraryPage() { const router = useRouter() const [formData, setFormData] = useState({ name: "", sourceType: "friends" as "friends" | "groups", keywordsInclude: "", keywordsExclude: "", startDate: "", endDate: "", selectedFriends: [] as WechatFriend[], selectedGroups: [] as WechatGroup[], useAI: false, aiPrompt: "", enabled: true, }) const [isWechatFriendSelectorOpen, setIsWechatFriendSelectorOpen] = useState(false) const [isWechatGroupSelectorOpen, setIsWechatGroupSelectorOpen] = useState(false) const [loading, setLoading] = useState(false) const removeFriend = (friendId: string) => { setFormData((prev) => ({ ...prev, selectedFriends: prev.selectedFriends.filter((friend) => friend.id !== friendId), })) } const removeGroup = (groupId: string) => { setFormData((prev) => ({ ...prev, selectedGroups: prev.selectedGroups.filter((group) => group.id !== groupId), })) } const handleSubmit = async () => { if (!formData.name) { showToast("请输入内容库名称", "error") return } if (formData.sourceType === "friends" && formData.selectedFriends.length === 0) { showToast("请选择微信好友", "error") return } if (formData.sourceType === "groups" && formData.selectedGroups.length === 0) { showToast("请选择聊天群", "error") return } setLoading(true) try { const payload = { name: formData.name, sourceType: formData.sourceType === "friends" ? 1 : 2, friends: formData.selectedFriends.map(f => f.id), groups: formData.selectedGroups.map(g => g.id), keywordInclude: formData.keywordsInclude.split(",").map(k => k.trim()).filter(Boolean), keywordExclude: formData.keywordsExclude.split(",").map(k => k.trim()).filter(Boolean), aiPrompt: formData.useAI ? formData.aiPrompt : "", timeEnabled: formData.startDate && formData.endDate ? 1 : 0, startTime: formData.startDate ? format(new Date(formData.startDate), "yyyy-MM-dd") : "", endTime: formData.endDate ? format(new Date(formData.endDate), "yyyy-MM-dd") : "", status: formData.enabled ? 1 : 0 } const response = await api.post("/v1/content/library/create", payload) if (response.code === 200) { showToast("创建成功", "success") router.push("/content") } else { showToast(response.msg || "创建失败", "error") } } catch (error: any) { console.error("创建内容库失败:", error) showToast(error?.message || "请检查网络连接", "error") } finally { setLoading(false) } } return (

新建内容库

setFormData({ ...formData, name: e.target.value })} placeholder="请输入内容库名称" required className="mt-1.5" />
setFormData({ ...formData, sourceType: value as "friends" | "groups" })} className="mt-1.5" > 选择微信好友 选择聊天群 {formData.selectedFriends.length > 0 && (
{formData.selectedFriends.map((friend) => (
{friend.nickname} {friend.nickname}
))}
)}
{formData.selectedGroups.length > 0 && (
{formData.selectedGroups.map((group) => (
{group.name} {group.name}
))}
)}
关键字设置