From 7ebece0491b3caea24eb27406ca8cbde9e239744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B6=85=E7=BA=A7=E8=80=81=E7=99=BD=E5=85=94?= Date: Wed, 6 Aug 2025 17:54:41 +0800 Subject: [PATCH] =?UTF-8?q?FEAT=20=3D>=20=E6=9C=AC=E6=AC=A1=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E9=A1=B9=E7=9B=AE=E4=B8=BA=EF=BC=9A=E5=84=AA=E5=8C=96?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E8=A8=AD=E7=BD=AE=E9=A0=81=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E4=B8=8A=E5=82=B3=E7=B5=84?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E8=AA=BF=E6=95=B4=E6=A8=A3=E5=BC=8F=E5=8F=8A?= =?UTF-8?q?=E9=A1=AF=E7=A4=BA=E9=82=8F=E8=BC=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plan/new/steps/BasicSettings.tsx | 115 +++++++----------- .../scenarios/plan/new/steps/base.module.scss | 2 +- 2 files changed, 47 insertions(+), 70 deletions(-) diff --git a/nkebao/src/pages/mobile/scenarios/plan/new/steps/BasicSettings.tsx b/nkebao/src/pages/mobile/scenarios/plan/new/steps/BasicSettings.tsx index 08c5e113..0b9fbd7a 100644 --- a/nkebao/src/pages/mobile/scenarios/plan/new/steps/BasicSettings.tsx +++ b/nkebao/src/pages/mobile/scenarios/plan/new/steps/BasicSettings.tsx @@ -5,12 +5,12 @@ import { EyeOutlined, CloseOutlined, DownloadOutlined, - UploadOutlined, - CheckOutlined, } from "@ant-design/icons"; import { uploadFile } from "@/api/common"; import styles from "./base.module.scss"; import { posterTemplates } from "./base.data"; +import GroupSelection from "@/components/GroupSelection"; +import FileUpload from "@/components/Upload/FileUpload"; interface BasicSettingsProps { isEdit: boolean; @@ -78,18 +78,12 @@ const BasicSettings: React.FC = ({ // 新增:用于文件选择的ref const uploadInputRef = useRef(null); - const uploadOrderInputRef = useRef(null); // 初始化时,如果没有选择场景,默认选择海报获客 useEffect(() => { if (!formData.scenario) { onChange({ ...formData, scenario: "haibao" }); } - - // 检查是否已经有上传的订单文件 - if (formData.orderFileUploaded) { - setOrderUploaded(true); - } }, [formData, onChange]); useEffect(() => { @@ -208,28 +202,6 @@ const BasicSettings: React.FC = ({ window.URL.revokeObjectURL(url); }; - // 修改订单表格上传逻辑,使用 uploadFile 公共方法 - const [orderUploaded, setOrderUploaded] = useState(false); - - const handleOrderFileUpload = async ( - event: React.ChangeEvent, - ) => { - const file = event.target.files?.[0]; - if (file) { - try { - await uploadFile(file); // 默认接口即可 - setOrderUploaded(true); - onChange({ ...formData, orderFileUploaded: true }); - // 可用 toast 或其它方式提示成功 - // alert('上传成功'); - } catch (err) { - // 可用 toast 或其它方式提示失败 - // alert('上传失败'); - } - event.target.value = ""; - } - }; - // 图片预览关闭 const handleImagePreviewClose = () => { setIsPreviewOpen(false); @@ -331,18 +303,23 @@ const BasicSettings: React.FC = ({ 添加 - {/* 输入获客成功提示 */} -
- { - setTips(e.target.value); - onChange({ ...formData, tips: e.target.value }); - }} - placeholder="请输入获客成功提示" - /> -
+ {/* 输入获客成功提示 - 只有海报场景才显示 */} + {formData.scenario === 1 && ( + <> +
请输入获客成功提示
+
+ { + setTips(e.target.value); + onChange({ ...formData, tips: e.target.value }); + }} + placeholder="请输入获客成功提示" + /> +
+ + )} {/* 选素材 */}
选择海报
@@ -467,7 +444,22 @@ const BasicSettings: React.FC = ({ )}
- {/* 订单导入区块优化 */} + {/* 群选择 - 只有微信群场景才显示 */} + {formData.scenario === 7 && ( +
+
选择群聊
+ + onChange({ ...formData, groupSelected: groups }) + } + placeholder="请选择微信群" + className={styles["basic-group-selector"]} + /> +
+ )} + + {/* 订单导入区块 - 使用FileUpload组件 */}
订单表格上传
@@ -477,34 +469,19 @@ const BasicSettings: React.FC = ({ > 下载模板 - +
+
+ onChange({ ...formData, orderFileUrl: url })} + acceptTypes={["excel"]} + maxCount={1} + maxSize={10} + showPreview={false} + />
- 支持 CSV、Excel 格式,上传后将文件保存到服务器 + 支持 Excel 格式,上传后将文件保存到服务器
{/* 电话获客设置区块,仅在选择电话获客场景时显示 */} diff --git a/nkebao/src/pages/mobile/scenarios/plan/new/steps/base.module.scss b/nkebao/src/pages/mobile/scenarios/plan/new/steps/base.module.scss index 8d85666a..aac76ca4 100644 --- a/nkebao/src/pages/mobile/scenarios/plan/new/steps/base.module.scss +++ b/nkebao/src/pages/mobile/scenarios/plan/new/steps/base.module.scss @@ -49,10 +49,10 @@ .basic-custom-tag-input { display: flex; gap: 8px; + margin-bottom: 16px; } .basic-success-tip { display: flex; - padding-top: 16px; } .basic-materials { margin: 16px 0;