diff --git a/Cunkebao/app/layout.tsx b/Cunkebao/app/layout.tsx index 1a8a4b89..2eea113b 100644 --- a/Cunkebao/app/layout.tsx +++ b/Cunkebao/app/layout.tsx @@ -6,7 +6,7 @@ import ErrorBoundary from "./components/ErrorBoundary" import { AuthProvider } from "@/app/components/AuthProvider" import LayoutWrapper from "./components/LayoutWrapper" import { AuthCheck } from "@/app/components/auth-check" -import { Toaster } from "sonner" +import { Toaster } from "react-hot-toast" export const metadata: Metadata = { title: "存客宝", diff --git a/Cunkebao/app/plans/new/page.tsx b/Cunkebao/app/plans/new/page.tsx index 0d6cc4fb..b8c2e04c 100644 --- a/Cunkebao/app/plans/new/page.tsx +++ b/Cunkebao/app/plans/new/page.tsx @@ -294,7 +294,7 @@ export default function NewAcquisitionPlan() {
-

{formData.sourceWechatId ? "好友转移" : "新建获客计划"}

diff --git a/Cunkebao/app/plans/new/steps/BasicSettings.tsx b/Cunkebao/app/plans/new/steps/BasicSettings.tsx index 4e583774..085135e9 100644 --- a/Cunkebao/app/plans/new/steps/BasicSettings.tsx +++ b/Cunkebao/app/plans/new/steps/BasicSettings.tsx @@ -169,12 +169,11 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps const response = await fetchScenes({ limit: 30 }) if (response.code === 200 && Array.isArray(response.data)) { - const formattedScenes = response.data.map(scene => ({ - id: scene.id.toString(), + const formattedScenes = response.data.map((scene: SceneItem) => ({ + id: scene.id, name: scene.name, image: scene.image, status: scene.status, - sort: scene.sort, createTime: scene.createTime, updateTime: scene.updateTime, deleteTime: scene.deleteTime @@ -196,23 +195,6 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps loadScenes() }, []) - // 初始化时,如果没有选择场景,默认选择海报获客 - useEffect(() => { - if (!formData.scenario) { - onChange({ ...formData, scenario: "haibao" }) - } - - // 只在初始化时设置默认计划名称 - if (!formData.planName && !formData._initialized) { - if (formData.materials?.length > 0) { - const today = new Date().toLocaleDateString("zh-CN").replace(/\//g, "") - onChange({ ...formData, planName: `海报${today}`, _initialized: true }) - } else { - onChange({ ...formData, planName: "场景", _initialized: true }) - } - } - }, []) // 移除 formData 依赖,只在组件挂载时执行一次 - // 处理本地场景选择 const handleScenarioSelect = (scenarioId: string) => { onChange({ ...formData, scenario: scenarioId }) @@ -268,10 +250,6 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps setSelectedMaterials(updatedMaterials) onChange({ ...formData, materials: updatedMaterials }) setIsMaterialDialogOpen(false) - - // 更新计划名称 - const today = new Date().toLocaleDateString("zh-CN").replace(/\//g, "") - onChange({ ...formData, planName: `海报${today}`, materials: updatedMaterials }) } const handleRemoveAccount = (accountId: string) => { @@ -377,6 +355,23 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps } }; + // 下一步校验逻辑 + const handleNextStep = () => { + if (!formData.scenario) { + toast.error("请选择获客场景") + return + } + if (!formData.planName || !formData.planName.trim()) { + toast.error("请输入计划名称") + return + } + if (formData.scenario === "haibao" && (!formData.materials || formData.materials.length === 0)) { + toast.error("请选择海报") + return + } + onNext && onNext() + } + return (
{/* 错误提示,只在 sceneError 存在且不为 'success' 时显示 */} @@ -685,7 +680,7 @@ export function BasicSettings({ formData, onChange, onNext }: BasicSettingsProps />
-