feat: 本次提交更新内容如下

先存一版作为模板,然后开发其他的
This commit is contained in:
笔记本里的永平
2025-07-23 12:21:47 +08:00
parent d8197be665
commit 55ba56fcf1
6 changed files with 245 additions and 254 deletions

View File

@@ -1,7 +1,7 @@
import request from "@/api/request";
// 获取场景类型列表
export function getScenarioTypes() {
return request("/v1/scenarios/types", undefined, "GET");
return request("/v1/plan/scenes", undefined, "GET");
}
// 创建计划

View File

@@ -1,17 +1,18 @@
import { useState, useEffect } from "react";
import { useNavigate, useParams } from "react-router-dom";
import { LeftOutlined } from "@ant-design/icons";
import { Button, Steps, message } from "antd";
import { message } from "antd";
import { NavBar } from "antd-mobile";
import { ArrowLeftOutlined } from "@ant-design/icons";
import BasicSettings from "./steps/BasicSettings";
import FriendRequestSettings from "./steps/FriendRequestSettings";
import MessageSettings from "./steps/MessageSettings";
import Layout from "@/components/Layout/Layout";
import StepIndicator from "@/components/StepIndicator";
import {
getPlanScenes,
createScenarioPlan,
fetchPlanDetail,
PlanDetail,
updateScenarioPlan,
getScenarioTypes,
createPlan,
getPlanDetail,
updatePlan,
} from "./index.api";
// 步骤定义 - 只保留三个步骤
@@ -70,7 +71,7 @@ export default function NewPlan() {
const loadData = async () => {
setSceneLoading(true);
//获取场景类型
getPlanScenes()
getScenarioTypes()
.then((data) => {
setSceneList(data || []);
})
@@ -81,8 +82,8 @@ export default function NewPlan() {
if (planId) {
setIsEdit(true);
//获取计划详情
try {
const detail = await fetchPlanDetail(planId);
const detail = await getPlanDetail(planId);
setFormData((prev) => ({
...prev,
name: detail.name ?? "",
@@ -100,9 +101,6 @@ export default function NewPlan() {
addFriendInterval: detail.addFriendInterval ?? 1,
tips: detail.tips ?? "",
}));
} catch (err) {
message.error(err.message || "获取计划详情失败");
}
} else {
if (scenarioId) {
setFormData((prev) => ({
@@ -131,10 +129,10 @@ export default function NewPlan() {
// 兼容后端需要的字段
// 你可以根据实际需要补充其它字段
};
result = await updateScenarioPlan(planId, editData);
result = await updatePlan(planId, editData);
} else {
// 新建
result = await createScenarioPlan(formData);
result = await createPlan(formData);
}
message.success(isEdit ? "计划已更新" : "获客计划已创建");
const sceneItem = sceneList.find((v) => formData.scenario === v.id);
@@ -207,33 +205,29 @@ export default function NewPlan() {
<Layout
header={
<>
<header className="sticky top-0 z-10 bg-white border-b">
<div className="flex items-center justify-between h-14 px-4">
<div className="flex items-center">
<Button
type="text"
shape="circle"
icon={<LeftOutlined />}
<NavBar
back={null}
style={{ background: "#fff" }}
left={
<div className="nav-title">
<ArrowLeftOutlined
twoToneColor="#1677ff"
onClick={() => router(-1)}
/>
</div>
</div>
</header>
}
>
<span className="nav-title">
{isEdit ? "编辑朋友圈同步" : "新建朋友圈同步"}
</span>
</NavBar>
<div className="px-4 py-6">
<Steps current={currentStep - 1}>
{steps.map((step, idx) => (
<Steps.Step
key={step.id}
title={step.title}
description={step.subtitle}
/>
))}
</Steps>
<StepIndicator currentStep={currentStep} steps={steps} />
</div>
</>
}
>
<div className="p-4">{renderStepContent()}</div>
{renderStepContent()}
</Layout>
);
}

View File

@@ -5,7 +5,7 @@ import { NavBar } from "antd-mobile";
import { ArrowLeftOutlined } from "@ant-design/icons";
import { createGroupPushTask } from "@/pages/workspace/group-push/detail/groupPush";
import Layout from "@/components/Layout/Layout";
import StepIndicator from "./components/StepIndicator";
import StepIndicator from "@/components/StepIndicator";
import BasicSettings from "./components/BasicSettings";
import GroupSelector from "./components/GroupSelector";
import ContentSelector from "./components/ContentSelector";

View File

@@ -31,7 +31,6 @@ import {
Menu,
} from "antd";
import Layout from "@/components/Layout/Layout";
import MeauMobile from "@/components/MeauMobile/MeauMoible";
import {
fetchGroupPushTasks,
deleteGroupPushTask,
@@ -41,8 +40,6 @@ import {
} from "@/pages/workspace/group-push/detail/groupPush";
import styles from "./index.module.scss";
const { Search } = Input;
const GroupPush: React.FC = () => {
const navigate = useNavigate();
const [expandedTaskId, setExpandedTaskId] = useState<string | null>(null);