diff --git a/nkebao/src/api/common.ts b/nkebao/src/api/common.ts index 9ab445cc..6e675d3b 100644 --- a/nkebao/src/api/common.ts +++ b/nkebao/src/api/common.ts @@ -21,12 +21,7 @@ export async function uploadFile( }, }); - // 检查响应结果 - if (res?.code === 200 && res?.data?.url) { - return res.data.url; - } else { - throw new Error(res?.msg || "文件上传失败"); - } + return res.url; } catch (e: any) { throw new Error(e?.message || "文件上传失败"); } diff --git a/nkebao/src/components/StepIndicator/index.tsx b/nkebao/src/components/StepIndicator/index.tsx index 5702c77f..38cb7509 100644 --- a/nkebao/src/components/StepIndicator/index.tsx +++ b/nkebao/src/components/StepIndicator/index.tsx @@ -11,7 +11,7 @@ const StepIndicator: React.FC = ({ steps, }) => { return ( -
+
{steps.map((step, idx) => ( - - router(-1)} - /> -
- } - > - - {isEdit ? "编辑朋友圈同步" : "新建朋友圈同步"} - - -
- -
+ + } > diff --git a/nkebao/src/pages/scenarios/plan/new/steps/BasicSettings.tsx b/nkebao/src/pages/scenarios/plan/new/steps/BasicSettings.tsx index 1f989532..abc55a50 100644 --- a/nkebao/src/pages/scenarios/plan/new/steps/BasicSettings.tsx +++ b/nkebao/src/pages/scenarios/plan/new/steps/BasicSettings.tsx @@ -1,17 +1,6 @@ import React, { useState, useEffect, useRef } from "react"; -import { - Form, - Input, - Button, - Tag, - Switch, - // Upload, - Modal, - Alert, - Row, - Col, - message, -} from "antd"; +import { Form, Input, Button, Tag, Switch, Modal, Spin } from "antd"; +import { Button as ButtonMobile } from "antd-mobile"; import { PlusOutlined, EyeOutlined, @@ -21,6 +10,7 @@ import { CheckOutlined, } from "@ant-design/icons"; import { uploadFile } from "@/api/common"; +import styles from "./base.module.scss"; interface BasicSettingsProps { isEdit: boolean; @@ -424,31 +414,44 @@ const BasicSettings: React.FC = ({ formData.scenario !== 1 ? { display: "none" } : { display: "block" }; return ( -
+
{/* 场景选择区块 */} - {sceneLoading ? ( -
加载中...
- ) : ( - - {sceneList.map((scene) => ( - - - - ))} - - )} - +
+ {sceneLoading ? ( +
+ +
+ ) : ( +
+ {sceneList.map((scene) => { + const selected = formData.scenario === scene.id; + return ( + + ); + })} +
+ )} +
{/* 计划名称输入区 */} -
计划名称
-
+
计划名称
+
onChange({ ...formData, name: String(e.target.value) }) @@ -456,17 +459,16 @@ const BasicSettings: React.FC = ({ placeholder="请输入计划名称" />
- -
获客标签(可多选)
+
获客标签(可多选)
{/* 标签选择区块 */} {formData.scenario && ( -
+
{(currentScene?.scenarioTags || []).map((tag: string) => ( handleScenarioTagToggle(tag)} - style={{ marginBottom: 4 }} + className={styles["basic-tag-item"]} > {tag} @@ -477,9 +479,9 @@ const BasicSettings: React.FC = ({ key={tag.id} color={selectedScenarioTags.includes(tag.id) ? "blue" : "default"} onClick={() => handleScenarioTagToggle(tag.id)} - style={{ marginBottom: 4 }} closable onClose={() => handleRemoveCustomTag(tag.id)} + className={styles["basic-tag-item"]} > {tag.name} @@ -487,49 +489,33 @@ const BasicSettings: React.FC = ({
)} {/* 自定义标签输入区 */} -
-
- setCustomTagInput(e.target.value)} - placeholder="添加自定义标签" - className="w-full" - /> -
-
- -
+
+ setCustomTagInput(e.target.value)} + placeholder="添加自定义标签" + /> +
- {/* 输入获客成功提示 */} -
-
- { - setTips(e.target.value); - onChange({ ...formData, tips: e.target.value }); - }} - placeholder="请输入获客成功提示" - className="w-full" - /> -
-
- - {/* 选素材 */} -
-
选择海报
-
+ { + setTips(e.target.value); + onChange({ ...formData, tips: e.target.value }); }} - > + placeholder="请输入获客成功提示" + /> +
+ {/* 选素材 */} +
+
选择海报
+
{[...materials, ...customPosters].map((material) => { const isSelected = selectedMaterials.some( (m) => m.id === material.id @@ -538,35 +524,15 @@ const BasicSettings: React.FC = ({ return (
handleMaterialSelect(material)} > {/* 预览按钮:自定义海报在左上,内置海报在右上 */} - + {/* 删除自定义海报按钮 */} {isCustom && (
-
+
支持 CSV、Excel 格式,上传后将文件保存到服务器
{/* 电话获客设置区块,仅在选择电话获客场景时显示 */} {formData.scenario === 5 && ( -
-
-
- 电话获客设置 +
+
+ 电话获客设置 +
+
+
+ 自动加好友 + + setPhoneSettings((s) => ({ ...s, autoAdd: v })) + } + />
-
-
- 自动加好友 - - setPhoneSettings((s) => ({ ...s, autoAdd: v })) - } - /> -
-
- 语音转文字 - - setPhoneSettings((s) => ({ ...s, speechToText: v })) - } - /> -
-
- 问题提取 - - setPhoneSettings((s) => ({ ...s, questionExtraction: v })) - } - /> -
+
+ 语音转文字 + + setPhoneSettings((s) => ({ ...s, speechToText: v })) + } + /> +
+
+ 问题提取 + + setPhoneSettings((s) => ({ ...s, questionExtraction: v })) + } + />
)} {/* 微信群设置区块,仅在选择微信群场景时显示 */} {formData.scenario === 7 && ( -
+
= ({
)} - -
+
是否启用 onChange({ ...formData, enabled: value })} />
- + +
+ + 下一步 + +
); }; diff --git a/nkebao/src/pages/scenarios/plan/new/steps/FriendRequestSettings.tsx b/nkebao/src/pages/scenarios/plan/new/steps/FriendRequestSettings.tsx index f76e0fb3..16e458d2 100644 --- a/nkebao/src/pages/scenarios/plan/new/steps/FriendRequestSettings.tsx +++ b/nkebao/src/pages/scenarios/plan/new/steps/FriendRequestSettings.tsx @@ -13,6 +13,7 @@ import { } from "antd"; import { QuestionCircleOutlined, MessageOutlined } from "@ant-design/icons"; import DeviceSelection from "@/components/DeviceSelection"; +import Layout from "@/components/Layout/Layout"; interface FriendRequestSettingsProps { formData: any; @@ -97,143 +98,151 @@ const FriendRequestSettings: React.FC = ({ return ( <> -
-
- 选择设备 -
- d.id)} - onSelect={(deviceIds) => { - const newSelectedDevices = deviceIds.map((id) => ({ - id, - name: `设备 ${id}`, - status: "online", - })); - setSelectedDevices(newSelectedDevices); - onChange({ ...formData, device: deviceIds }); - }} - placeholder="选择设备" - /> + +
+ + +
+
+ } + > +
+
+ 选择设备 +
+ d.id)} + onSelect={(deviceIds) => { + const newSelectedDevices = deviceIds.map((id) => ({ + id, + name: `设备 ${id}`, + status: "online", + })); + setSelectedDevices(newSelectedDevices); + onChange({ ...formData, device: deviceIds }); + }} + placeholder="选择设备" + /> +
-
-
-
- 好友备注 - setShowRemarkTip(true)} - onMouseLeave={() => setShowRemarkTip(false)} - onClick={() => setShowRemarkTip((v) => !v)} - > - ? - - {showRemarkTip && ( -
-
设置添加好友时的备注格式
-
备注格式预览:
-
- {formData.remarkType === "phone" && - `138****1234+${getScenarioTitle()}`} - {formData.remarkType === "nickname" && - `小红书用户2851+${getScenarioTitle()}`} - {formData.remarkType === "source" && - `抖音直播+${getScenarioTitle()}`} +
+
+ 好友备注 + setShowRemarkTip(true)} + onMouseLeave={() => setShowRemarkTip(false)} + onClick={() => setShowRemarkTip((v) => !v)} + > + ? + + {showRemarkTip && ( +
+
设置添加好友时的备注格式
+
+ 备注格式预览: +
+
+ {formData.remarkType === "phone" && + `138****1234+${getScenarioTitle()}`} + {formData.remarkType === "nickname" && + `小红书用户2851+${getScenarioTitle()}`} + {formData.remarkType === "source" && + `抖音直播+${getScenarioTitle()}`} +
-
- )} -
- -
- -
-
- 招呼语 -
+
- - onChange({ ...formData, greeting: e.target.value }) - } - placeholder="请输入招呼语" - className="mt-2" - /> -
-
- 添加间隔 -
+
+
+ 招呼语 + +
- onChange({ - ...formData, - addFriendInterval: Number(e.target.value), - }) + onChange({ ...formData, greeting: e.target.value }) } - /> -
分钟
-
-
- -
- 允许加人的时间段 -
- - onChange({ ...formData, addFriendTimeStart: e.target.value }) - } - className="w-32" - /> - - - onChange({ ...formData, addFriendTimeEnd: e.target.value }) - } - className="w-32" + placeholder="请输入招呼语" + className="mt-2" />
-
- {hasWarnings && ( - - )} +
+ 添加间隔 +
+ + onChange({ + ...formData, + addFriendInterval: Number(e.target.value), + }) + } + /> +
分钟
+
+
-
- - +
+ 允许加人的时间段 +
+ + onChange({ ...formData, addFriendTimeStart: e.target.value }) + } + className="w-32" + /> + + + onChange({ ...formData, addFriendTimeEnd: e.target.value }) + } + className="w-32" + /> +
+
+ + {hasWarnings && ( + + )}
-
+ = ({ return ( <> -
-
-

消息设置

- -
+ +
+ + +
+
+ } + > +
+
+

消息设置

+ +
- - -
- - +
-
+ {/* 添加天数计划弹窗 */}