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

群消息推送导航栏构建完成
This commit is contained in:
笔记本里的永平
2025-07-21 17:58:09 +08:00
parent c8dda56bc9
commit 60af57317d
5 changed files with 93 additions and 52 deletions

View File

@@ -1,5 +1,5 @@
import React from "react";
import { Steps } from "antd";
import { Steps } from "antd-mobile";
interface StepIndicatorProps {
currentStep: number;
@@ -11,10 +11,29 @@ const StepIndicator: React.FC<StepIndicatorProps> = ({
steps,
}) => {
return (
<div style={{ marginBottom: 24 }}>
<div style={{ marginBottom: 24, overflowX: "auto" }}>
<Steps current={currentStep - 1}>
{steps.map((step) => (
<Steps.Step key={step.id} title={step.subtitle} />
{steps.map((step, idx) => (
<Steps.Step
key={step.id}
title={step.subtitle}
icon={
<div
style={{
width: 24,
height: 24,
borderRadius: 12,
backgroundColor: idx < currentStep ? "#1677ff" : "#cccccc",
color: "#fff",
display: "flex",
alignItems: "center",
justifyContent: "center",
}}
>
{step.id}
</div>
}
/>
))}
</Steps>
</div>

View File

@@ -0,0 +1,32 @@
export interface WechatGroup {
id: string;
name: string;
avatar: string;
serviceAccount: {
id: string;
name: string;
avatar: string;
};
}
export interface ContentLibrary {
id: string;
name: string;
targets: Array<{
id: string;
avatar: string;
}>;
}
export interface FormData {
name: string;
pushTimeStart: string;
pushTimeEnd: string;
dailyPushCount: number;
pushOrder: "earliest" | "latest";
isLoopPush: boolean;
isImmediatePush: boolean;
isEnabled: boolean;
groups: WechatGroup[];
contentLibraries: ContentLibrary[];
}

View File

@@ -1,6 +1,8 @@
import React, { useState } from "react";
import { useNavigate } from "react-router-dom";
import { Button } from "antd";
import { Button } from "antd-mobile";
import { NavBar } from "antd-mobile";
import { LeftOutline } from "antd-mobile-icons";
import { createGroupPushTask } from "@/api/groupPush";
import Layout from "@/components/Layout/Layout";
import MeauMobile from "@/components/MeauMobile/MeauMoible";
@@ -8,39 +10,7 @@ import StepIndicator from "./components/StepIndicator";
import BasicSettings from "./components/BasicSettings";
import GroupSelector from "./components/GroupSelector";
import ContentSelector from "./components/ContentSelector";
interface WechatGroup {
id: string;
name: string;
avatar: string;
serviceAccount: {
id: string;
name: string;
avatar: string;
};
}
interface ContentLibrary {
id: string;
name: string;
targets: Array<{
id: string;
avatar: string;
}>;
}
interface FormData {
name: string;
pushTimeStart: string;
pushTimeEnd: string;
dailyPushCount: number;
pushOrder: "earliest" | "latest";
isLoopPush: boolean;
isImmediatePush: boolean;
isEnabled: boolean;
groups: WechatGroup[];
contentLibraries: ContentLibrary[];
}
import type { WechatGroup, ContentLibrary, FormData } from "./index.data";
const steps = [
{ id: 1, title: "步骤 1", subtitle: "基础设置" },
@@ -136,16 +106,13 @@ const NewGroupPush: React.FC = () => {
return (
<Layout
header={
<div
style={{
background: "#fff",
padding: "0 16px",
fontWeight: 600,
fontSize: 18,
}}
<NavBar
onBack={() => navigate(-1)}
style={{ background: "#fff" }}
right={null}
>
</div>
<span style={{ fontWeight: 600, fontSize: 18 }}></span>
</NavBar>
}
footer={<MeauMobile />}
>
@@ -206,7 +173,7 @@ const NewGroupPush: React.FC = () => {
<Button onClick={() => setCurrentStep(3)} disabled={loading}>
</Button>
<Button type="primary" onClick={handleSave} loading={loading}>
<Button color="primary" onClick={handleSave} loading={loading}>
</Button>
<Button onClick={handleCancel} disabled={loading}>

View File

@@ -1,5 +1,9 @@
.nav-title {
font-size: 18px;
font-weight: 600;
color: #333;
}
.searchBar {
display: flex;
gap: 8px;

View File

@@ -1,6 +1,7 @@
import React, { useState, useEffect } from "react";
import { useNavigate } from "react-router-dom";
import { NavBar } from "antd-mobile";
import { LeftOutline } from "antd-mobile-icons";
import {
PlusOutlined,
SearchOutlined,
@@ -147,9 +148,27 @@ const GroupPush: React.FC = () => {
return (
<Layout
header={
<NavBar back={null} style={{ background: "#fff" }}>
<span style={{ fontWeight: 600, fontSize: 18 }}></span>
</NavBar>
<NavBar
back={null}
left={
<div className={styles["nav-title"]}>
<span style={{ verticalAlign: "middle" }}>
<LeftOutline onClick={() => navigate(-1)} fontSize={24} />
</span>
</div>
}
style={{ background: "#fff" }}
right={
<Button
type="primary"
icon={<PlusOutlined />}
onClick={handleCreateNew}
>
</Button>
}
></NavBar>
}
footer={<MeauMobile />}
>