"use client" import { useState, useEffect } from "react" import { Card } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { HelpCircle, MessageSquare, AlertCircle } from "lucide-react" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Dialog, DialogContent, DialogHeader, DialogTitle } from "@/components/ui/dialog" import { Alert, AlertDescription } from "@/components/ui/alert" import { ChevronsUpDown } from "lucide-react" import { Checkbox } from "@/components/ui/checkbox" interface FriendRequestSettingsProps { formData: any onChange: (data: any) => void onNext: () => void onPrev: () => void } // 招呼语模板 const greetingTemplates = [ "你好,请通过", "你好,了解XX,请通过", "你好,我是XX产品的客服请通过", "你好,感谢关注我们的产品", "你好,很高兴为您服务", ] // 备注类型选项 const remarkTypes = [ { value: "phone", label: "手机号" }, { value: "nickname", label: "昵称" }, { value: "source", label: "来源" }, ] // 模拟设备数据 const mockDevices = [ { id: "1", name: "iPhone 13 Pro", status: "online" }, { id: "2", name: "Xiaomi 12", status: "online" }, { id: "3", name: "Huawei P40", status: "offline" }, { id: "4", name: "OPPO Find X3", status: "online" }, { id: "5", name: "Samsung S21", status: "online" }, ] export function FriendRequestSettings({ formData, onChange, onNext, onPrev }: FriendRequestSettingsProps) { const [isTemplateDialogOpen, setIsTemplateDialogOpen] = useState(false) const [hasWarnings, setHasWarnings] = useState(false) const [isDeviceSelectorOpen, setIsDeviceSelectorOpen] = useState(false) const [selectedDevices, setSelectedDevices] = useState(formData.selectedDevices || []) // 获取场景标题 const getScenarioTitle = () => { switch (formData.scenario) { case "douyin": return "抖音直播" case "xiaohongshu": return "小红书" case "weixinqun": return "微信群" case "gongzhonghao": return "公众号" default: return formData.planName || "获客计划" } } // 使用useEffect设置默认值 useEffect(() => { if (!formData.greeting) { onChange({ ...formData, greeting: "你好,请通过", remarkType: "phone", // 默认选择手机号 remarkFormat: `手机号+${getScenarioTitle()}`, // 默认备注格式 addFriendInterval: 1, }) } }, [formData, formData.greeting, onChange]) // 检查是否有未完成的必填项 useEffect(() => { const hasIncompleteFields = !formData.greeting?.trim() setHasWarnings(hasIncompleteFields) }, [formData]) const handleTemplateSelect = (template: string) => { onChange({ ...formData, greeting: template }) setIsTemplateDialogOpen(false) } const handleNext = () => { // 即使有警告也允许进入下一步,但会显示提示 onNext() } const toggleDeviceSelection = (device: any) => { const isSelected = selectedDevices.some((d) => d.id === device.id) let newSelectedDevices if (isSelected) { newSelectedDevices = selectedDevices.filter((d) => d.id !== device.id) } else { newSelectedDevices = [...selectedDevices, device] } setSelectedDevices(newSelectedDevices) onChange({ ...formData, selectedDevices: newSelectedDevices }) } return (
{isDeviceSelectorOpen && (
{mockDevices.map((device) => (
toggleDeviceSelection(device)} >
d.id === device.id)} onCheckedChange={() => toggleDeviceSelection(device)} /> {device.name}
{device.status === "online" ? "在线" : "离线"}
))}
)}

设置添加好友时的备注格式

备注格式预览:

{formData.remarkType === "phone" && `138****1234+${getScenarioTitle()}`}

{formData.remarkType === "nickname" && `小红书用户2851+${getScenarioTitle()}`}

{formData.remarkType === "source" && `抖音直播+${getScenarioTitle()}`}

onChange({ ...formData, greeting: e.target.value })} placeholder="请输入招呼语" className="mt-2" />
onChange({ ...formData, addFriendInterval: Number(e.target.value) })} className="w-32" /> 分钟
onChange({ ...formData, addFriendTimeStart: e.target.value })} className="w-32" /> onChange({ ...formData, addFriendTimeEnd: e.target.value })} className="w-32" />
{hasWarnings && ( 您有未完成的设置项,建议完善后再进入下一步。 )}
招呼语模板
{greetingTemplates.map((template, index) => ( ))}
) }