From 9706970690e274e1f670a66034dbf99ac285f3b7 Mon Sep 17 00:00:00 2001 From: susie-laptop Date: Thu, 22 May 2025 17:00:59 -0400 Subject: [PATCH] [dev]upload --- src/pages/CampaignScript.jsx | 242 +++++++++++++++++++++--------- src/store/slices/creatorsSlice.js | 2 +- 2 files changed, 171 insertions(+), 73 deletions(-) diff --git a/src/pages/CampaignScript.jsx b/src/pages/CampaignScript.jsx index 487bb12..2c929dc 100644 --- a/src/pages/CampaignScript.jsx +++ b/src/pages/CampaignScript.jsx @@ -1,8 +1,9 @@ import { useDispatch, useSelector } from 'react-redux'; import { useCallback, useEffect, useState } from 'react'; -import { Button, Card, Col, Form, Row } from 'react-bootstrap'; +import { Accordion, Button, Card, Col, Form, Row, Table } from 'react-bootstrap'; import { CloudUpload, Paperclip } from 'lucide-react'; import { useDropzone } from 'react-dropzone'; +import { mockCreators } from '../store/slices/creatorsSlice'; export default function CampaignScript() { const dispatch = useDispatch(); @@ -77,81 +78,178 @@ export default function CampaignScript() { Campaigns & Collaborated Creators - -
-
Video Posting Requirement
- - Product Selling Point - - - - Example Videos - - - - Video Posting Suggestion - - - - Video Acceptance Standard - - - - - -
-
-
-
Script
- -
-
- - Version 1 - - - - Version 2 - - -
-
-
+ {activeTab === 'collaborationInfo' && } + {activeTab === 'campaigns' && } ) ); } +const CollabInfo = () => { + const [formData, setFormData] = useState({ + productSellingPoint: '吸力强、有效除菌、香薰片功能、价格更优惠、两种颜色', + exampleVideos: 'https://mcnmza4kafoj.feishu.cn/drive/folder/HzhWfGvWtlCBqIduwfLczQ9Cnyb', + videoPostingSuggestion: '开头引人+产品亮点+CTA呼吁/时长30~50s左右', + videoAcceptanceStandard: `1.场景:包括不限于厨房、卫生间、衣柜;在橱柜下方和洗手台下方安装橱柜灯、衣柜等安全及方便需求。场景展示要有黑暗环境对比HOOK。 + 2.红人必须要表达卖点(以下卖点按优先级排列,达人任意选择提到至少三个卖点即可) + 电池大续航能力强可以(必须提到)(可用字幕展示) + 容易安装(有磁铁)(必须提到)(要拍出安装过程) + 开启人体感应模式 (必须提到)(可视觉展示) + 可充电 + 亮度高,且可调节 + 加分卖点: + 视频需说明购买理由以及使用感受(例如:老人家晚上更安全,宝妈晚上起床更便捷安全等等购买理由) + 3.正确的hashtags 以及正确@官方账号`, + documentsUpload: [], + }); + + const handleChange = (e) => { + setFormData({ ...formData, [e.target.name]: e.target.value }); + }; + + return ( + +
+
Video Posting Requirement
+ + Product Selling Point + + + + Example Videos + + + + Video Posting Suggestion + + + + Video Acceptance Standard + + + + + +
+
+
+
Script
+ +
+
+ + Version 1 + + + + Version 2 + + +
+
+
+ ); +}; + +const CampaignsCollabCreators = () => { + const mockData = [ + { + id: 1, + name: 'SUNLINK 拍拍灯', + creatorList: mockCreators, + }, + { + id: 2, + name: 'SUNLINK 拍拍灯2', + creatorList: mockCreators, + }, + ]; + + if (mockData.length === 0) { + return
No campaigns found
; + } + + return ( + + {mockData.map((item) => ( + + {item.name} + + + + + + + + + + + + + + + {item?.creatorList.length > 0 && + item?.creatorList.map((creator) => ( + + + + + + + + + + ))} + +
CreatorCategoryFollowersGMV GeneratedViews GeneratedPricingStatus
+
+ {creator.name} + {creator.name} +
+
{creator.category}{creator.followers || '--'}{creator.gmv || '--'}{creator.views || '--'}{creator.pricing || '--'}{creator.status || '--'}
+
+
+ ))} +
+ ); +}; const FileUpload = () => { const [files, setFiles] = useState([]); diff --git a/src/store/slices/creatorsSlice.js b/src/store/slices/creatorsSlice.js index 26bb99f..302be93 100644 --- a/src/store/slices/creatorsSlice.js +++ b/src/store/slices/creatorsSlice.js @@ -26,7 +26,7 @@ const mockVideos = [ }, ]; // 模拟创作者数据,实际项目中会从API获取 -const mockCreators = [ +export const mockCreators = [ { id: 1, name: 'name',