blob: 4a6033093e0ec3eab093c50378ea44fd7e655eab [file] [log] [blame]
import instance from '@/utils/axios';
import React, { useState } from 'react';
import styles from './upload.module.css';
import { Upload } from '@/api/upload';
import { useNavigate } from 'react-router-dom'; // 用于跳转
const PostDetails = () => {
const [postTitle, setPostTitle] = useState('');
const [postType, setPostType] = useState('');
const [postContent, setPostContent] = useState('');
const [isChecked, setIsChecked] = useState(false);
const navigate = useNavigate();
const handleSubmit = async () => {
if (!postTitle.trim() || !postType || !postContent.trim()) {
alert('请填写完整内容(资源名、类型、内容介绍)');
return;
}
if (!isChecked) {
alert('请先确认您已知晓以上内容');
return;
}
const payload = {
post: {
postId: 0,
userId: 0,
postTitle,
postContent,
createdAt: Date.now(),
postType,
viewCount: 0,
hotScore: 5,
lastCalculated: Date.now()
},
tagIds: [0]
};
try {
const res = await instance.post(Upload, payload);
console.log('mock返回内容:', res.code);
// 判断返回内容是否成功(根据你 mock 接口返回的 code 字段)
if (res.code !== 0) throw new Error('发布失败');
alert('发布成功!');
navigate(-1); // 返回上一页(homepage)
} catch (error) {
alert('发布失败,请稍后重试');
console.error(error);
}
};
return (
<div className={styles.container}>
<div className={styles.formGroup}>
<label>资源名:</label>
<input
type="text"
value={postTitle}
placeholder="请输入文本"
onChange={(e) => setPostTitle(e.target.value)}
className={styles.input}
/>
</div>
<div className={styles.formGroup}>
<label>类型选择:</label>
<select
value={postType}
onChange={(e) => setPostType(e.target.value)}
className={styles.select}
>
<option value="">下拉选择</option>
<option value="type1">类型一</option>
<option value="type2">类型二</option>
</select>
</div>
{/* 暂时移除上传文件表单 */}
{/* <div className={styles.formGroup}>
<label>上传资源:</label>
<input
type="file"
onChange={(e) => setFile(e.target.files?.[0] || null)}
className={styles.upload}
/>
</div> */}
<div className={styles.formGroup}>
<label>内容介绍:</label>
<textarea
placeholder="请输入内容介绍"
value={postContent}
onChange={(e) => setPostContent(e.target.value)}
maxLength={200}
className={styles.textarea}
/>
<div className={styles.charCount}>{postContent.length}/200</div>
</div>
<div className={styles.requirement}>【发布内容要求】</div>
<div className={styles.checkbox}>
<input
type="checkbox"
checked={isChecked}
onChange={() => setIsChecked(!isChecked)}
/>
<span>我已知晓以上内容</span>
</div>
<button onClick={handleSubmit} className={styles.submitBtn}>
我已知晓
</button>
</div>
);
};
export default PostDetails;