"use client" import { useState } from "react" import { ChevronLeft, X, Users } 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 { WechatGroupMemberSelector } from "@/components/WechatGroupMemberSelector" 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" import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar" import { WechatFriend, WechatGroup, WechatGroupMember } from "@/types/wechat" 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[], selectedGroupMembers: [] as WechatGroupMember[], useAI: false, aiPrompt: "", enabled: true, }) const [isWechatFriendSelectorOpen, setIsWechatFriendSelectorOpen] = useState(false) const [isWechatGroupSelectorOpen, setIsWechatGroupSelectorOpen] = useState(false) const [isWechatGroupMemberSelectorOpen, setIsWechatGroupMemberSelectorOpen] = useState(false) const [currentGroupId, setCurrentGroupId] = useState("") 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 handleSelectGroupMembers = (groupId: string) => { setCurrentGroupId(groupId) setIsWechatGroupMemberSelectorOpen(true) } 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 { // 将群成员数据转换为{"群ID":[成员ID1, 成员ID2...]}的格式 const groupMembersMap: Record = {} formData.selectedGroupMembers.forEach(member => { if (member.groupId) { if (!groupMembersMap[member.groupId]) { groupMembersMap[member.groupId] = [] } groupMembersMap[member.groupId].push(member.id) } }) 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), groupMembers: groupMembersMap, // 使用JSON字符串传递群成员数据 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}
))}
)}
关键字设置