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

View File

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

View File

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