Files
cunkebao_v3/nkebao/src/pages/workspace/ai-analyzer/index.tsx
笔记本里的永平 aadc6d9a9e feat: 本次提交更新内容如下
Ai分析数据列表构建完成
2025-07-24 17:35:10 +08:00

142 lines
4.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { useState } from "react";
import NavCommon from "@/components/NavCommon";
import Layout from "@/components/Layout/Layout";
import { Tabs } from "antd-mobile";
import { Button } from "antd";
import styles from "./index.module.scss";
import { PlusOutlined } from "@ant-design/icons";
const mockPlans = [
{
id: "1",
title: "美妆用户分析",
status: "done",
device: "设备1",
wechat: "wxid_abc123",
type: "综合分析",
keywords: ["美妆", "护肤", "彩妆"],
createTime: "2023/12/15 18:30:00",
finishTime: "2023/12/15 19:45:00",
},
{
id: "2",
title: "健身爱好者分析",
status: "doing",
device: "设备2",
wechat: "wxid_fit456",
type: "好友信息分析",
keywords: ["健身", "运动", "健康"],
createTime: "2023/12/16 17:15:00",
finishTime: "",
},
];
const statusMap = {
all: "全部计划",
doing: "进行中",
done: "已完成",
};
const statusTag = {
done: <span className={styles.statusDone}></span>,
doing: <span className={styles.statusDoing}></span>,
};
const AiAnalyzer: React.FC = () => {
const [tab, setTab] = useState<"all" | "doing" | "done">("all");
const filteredPlans =
tab === "all" ? mockPlans : mockPlans.filter((p) => p.status === tab);
return (
<Layout
header={
<NavCommon
title="AI数据分析"
right={
<Button type="primary" size="small" style={{ borderRadius: 6 }}>
<PlusOutlined />
</Button>
}
/>
}
>
<div className={styles.analyzerPage}>
<Tabs
activeKey={tab}
onChange={(key) => setTab(key as any)}
className={styles.tabs}
>
<Tabs.Tab title="全部计划" key="all" />
<Tabs.Tab title="进行中" key="doing" />
<Tabs.Tab title="已完成" key="done" />
</Tabs>
<div className={styles.planList}>
{filteredPlans.map((plan) => (
<div className={styles.planCard} key={plan.id}>
<div className={styles.cardHeader}>
<span className={styles.cardTitle}>{plan.title}</span>
{statusTag[plan.status as "done" | "doing"]}
</div>
<div className={styles.cardInfo}>
<div>
<span className={styles.label}></span>
{plan.device} | : {plan.wechat}
</div>
<div>
<span className={styles.label}></span>
{plan.type}
</div>
<div>
<span className={styles.label}></span>
{plan.keywords.map((k) => (
<span className={styles.keyword} key={k}>
{k}
</span>
))}
</div>
<div>
<span className={styles.label}></span>
{plan.createTime}
</div>
{plan.status === "done" && (
<div>
<span className={styles.label}></span>
{plan.finishTime}
</div>
)}
</div>
<div className={styles.cardActions}>
{plan.status === "done" ? (
<>
<Button size="small" className={styles.actionBtn}>
</Button>
<Button
size="small"
type="primary"
className={styles.actionBtn}
>
</Button>
</>
) : (
<Button
size="small"
type="primary"
className={styles.actionBtn}
>
</Button>
)}
</div>
</div>
))}
</div>
</div>
</Layout>
);
};
export default AiAnalyzer;