修改好友动态、发布动态、促销模块、创建帖子,Resolve review.

Change-Id: I84a2460dd1208bc703b0527d98225204d03e5efc
diff --git a/src/pages/FriendMoments/CreateMoment.jsx b/src/pages/FriendMoments/CreateMoment.jsx
new file mode 100644
index 0000000..4aca455
--- /dev/null
+++ b/src/pages/FriendMoments/CreateMoment.jsx
@@ -0,0 +1,206 @@
+// // import React, { useState } from 'react';
+// // import axios from 'axios';
+// // import { useNavigate } from 'react-router-dom';
+// // import './CreateMoment.css';
+// // import Header from '../../components/Header';
+
+// // const API_BASE = process.env.REACT_APP_API_BASE;
+// // const USER_ID = 456;
+
+// // const CreateMoment = () => {
+// //   const [title, setTitle] = useState('');
+// //   const [content, setContent] = useState('');
+// //   const [previewUrls, setPreviewUrls] = useState([]);
+// //   const [images, setImages] = useState([]);
+// //   const navigate = useNavigate();
+
+// //   const handleImageChange = async (e) => {
+// //     const files = Array.from(e.target.files);
+// //     if (!files.length) return;
+
+// //     setPreviewUrls(files.map(f => URL.createObjectURL(f)));
+
+// //     try {
+// //       const uploaded = await Promise.all(
+// //         files.map(file => uploadImageToServer(file))
+// //       );
+// //       setImages(uploaded);
+// //     } catch (err) {
+// //       console.error('图片上传失败:', err);
+// //       alert('有图片上传失败,请重试');
+// //     }
+// //   };
+
+// //   const uploadImageToServer = async (file) => {
+// //     const formData = new FormData();
+// //     formData.append('file', file);
+// //     const res = await axios.post(`${API_BASE}/upload`, formData, {
+// //       headers: {'Content-Type': 'multipart/form-data'}
+// //     });
+// //     return res.data.url;
+// //   };
+
+// //   const handleSubmit = async () => {
+// //     if (!content.trim()) {
+// //       alert('内容不能为空');
+// //       return;
+// //     }
+// //     try {
+// //       await axios.post(
+// //         `${API_BASE}/echo/users/${USER_ID}/CreateMoment`,
+// //         {
+// //           title: title.trim() || undefined,
+// //           friend_content: content.trim(),
+// //           images
+// //         }
+// //       );
+// //       navigate('/friend-moments');
+// //     } catch (err) {
+// //       console.error('发布失败:', err);
+// //       alert('发布失败,请稍后重试');
+// //     }
+// //   };
+
+// //   return (
+// //     <div className="create-feed-page">
+// //       <Header/>
+// //       <div className="cf-header">
+// //         <button onClick={() => navigate(-1)} style={{padding : '5px 10px', backgroundColor: '#BA929A', color: 'white'}}>返回</button>
+// //         <h3>发布新动态</h3>
+// //       </div>
+
+// //       <div className="cf-form">
+// //         <input
+// //           type="text"
+// //           placeholder="标题"
+// //           value={title}
+// //           onChange={e => setTitle(e.target.value)}
+// //         />
+// //         <textarea
+// //           placeholder="写下你的内容..."
+// //           value={content}
+// //           onChange={e => setContent(e.target.value)}
+// //         />
+// //         <input
+// //           type="file"
+// //           accept="image/*"
+// //           multiple
+// //           onChange={handleImageChange}
+// //         />
+// //         <div className="cf-preview">
+// //           {previewUrls.map((url, i) => (
+// //             <img key={i} src={url} alt={`预览 ${i}`} />
+// //           ))}
+// //         </div>
+// //         <button className="cf-submit-btn" onClick={handleSubmit}>
+// //           发布
+// //         </button>
+// //       </div>
+// //     </div>
+// //   );
+// // };
+
+// // export default CreateMoment;
+// import React, { useState } from 'react';
+// import axios from 'axios';
+// import { useNavigate } from 'react-router-dom';
+// import './CreateMoment.css';
+// import Header from '../../components/Header';
+
+// const API_BASE = process.env.REACT_APP_API_BASE;
+// const USER_ID = 456;
+
+// const CreateMoment = ({ onClose, fetchFeeds }) => {
+//     const [title, setTitle] = useState('');
+//     const [content, setContent] = useState('');
+//     const [previewUrls, setPreviewUrls] = useState([]);
+//     const [images, setImages] = useState([]);
+//     const navigate = useNavigate();
+
+//     const handleImageChange = async (e) => {
+//         const files = Array.from(e.target.files);
+//         if (!files.length) return;
+//         setPreviewUrls(files.map(f => URL.createObjectURL(f)));
+//         try {
+//             const uploaded = await Promise.all(
+//                 files.map(file => uploadImageToServer(file))
+//             );
+//             setImages(uploaded);
+//         } catch (err) {
+//             console.error('图片上传失败:', err);
+//             alert('有图片上传失败,请重试');
+//         }
+//     };
+
+//     const uploadImageToServer = async (file) => {
+//         const formData = new FormData();
+//         formData.append('file', file);
+//         const res = await axios.post(`${API_BASE}/upload`, formData, {
+//             headers: { 'Content-Type': 'multipart/form-data' }
+//         });
+//         return res.data.url;
+//     };
+
+//     const handleSubmit = async () => {
+//         if (!content.trim()) {
+//             alert('内容不能为空');
+//             return;
+//         }
+//         try {
+//             await axios.post(
+//                 `${API_BASE}/echo/users/${USER_ID}/CreateMoment`,
+//                 {
+//                     title: title.trim() || undefined,
+//                     friend_content: content.trim(),
+//                     images
+//                 }
+//             );
+//             onClose();
+//             fetchFeeds();
+//         } catch (err) {
+//             console.error('发布失败:', err);
+//             alert('发布失败,请稍后重试');
+//         }
+//     };
+
+//     return (
+//         <div className="create-feed-page">
+//             <div className="cf-header">
+//                 <button onClick={onClose} style={{ padding: '5px 10px', backgroundColor: '#BA929A', color: 'white' }}>
+//                     返回
+//                 </button>
+//                 <h3>发布新动态</h3>
+//             </div>
+//             <div className="cf-form">
+//                 <input
+//                     type="text"
+//                     placeholder="标题"
+//                     value={title}
+//                     onChange={e => setTitle(e.target.value)}
+//                 />
+//                 <textarea
+//                     placeholder="写下你的内容..."
+//                     value={content}
+//                     onChange={e => setContent(e.target.value)}
+//                 />
+//                 <input
+//                     type="file"
+//                     accept="image/*"
+//                     multiple
+//                     onChange={handleImageChange}
+//                 />
+//                 <div className="cf-preview">
+//                     {previewUrls.map((url, i) => (
+//                         <img key={i} src={url} alt={`预览 ${i}`} />
+//                     ))}
+//                 </div>
+//                 <button className="cf-submit-btn" onClick={handleSubmit}>
+//                     发布
+//                 </button>
+//             </div>
+//         </div>
+//     );
+// };
+
+// export default CreateMoment;
+