diff --git a/src/pages/CreatePost/index.jsx b/src/pages/CreatePost/index.jsx
new file mode 100644
index 0000000..4c3ddfe
--- /dev/null
+++ b/src/pages/CreatePost/index.jsx
@@ -0,0 +1,367 @@
+import React, { useState, useEffect } from "react";
+import { Form, Input, Table, Image, Space, Button, Modal, message } from "antd";
+import baseRequest from "../../utils/baseRequest";
+import ImageUploader from "../../components/ImageUploader";
+import VideoUploader from "../../components/VideoUploader";
+
+const CreatePostContent = (props) => {
+ const { TextArea } = Input;
+ //表头
+ const columns = [
+ {
+ title: "动态信息",
+ dataIndex: "info",
+ key: "info",
+ render: (data) => (
+
+
+ 动态id:{data.id}
+
+
+ 创建时间:{data.ct}
+
+
+ ),
+ },
+ {
+ title: "动态文案",
+ dataIndex: "content",
+ key: "content",
+ },
+ {
+ title: "媒体",
+ dataIndex: "media",
+ key: "media",
+ render: (data) => (
+
+ {data?.images?.map((item, index) => (
+
+ ))}
+ {data?.videos?.map((item, index) => (
+
+ ))}
+
+ ),
+ },
+ ];
+ //获取数据
+ const [data, setData] = useState([]);
+ // const [offset, setOffset] = useState(0);
+ // const [more, setMore] = useState(1);
+ // const getData = async () => {
+ // if (!more) return;
+ // try {
+ // const base = baseRequest();
+ // const response = await fetch("/op/image_audit_task/list", {
+ // method: "POST",
+ // headers: {
+ // "Content-Type": "application/json",
+ // },
+ // body: JSON.stringify({
+ // offset: offset,
+ // limit: 20,
+ // ...base,
+ // }),
+ // });
+ // const temData = await response.json();
+ // if (temData.ret === -1) {
+ // alert(temData.msg);
+ // return;
+ // }
+ // //匹配表格格式
+ // const structedData = temData.data.list.map((item, index) => {
+ // return {
+ // key: index,
+ // id: item.id,
+ // newMedia: item?.audited_media?.images,
+ // oldMedia: item?.old_media?.images,
+ // info: item.image_audits,
+ // submitTime: new Date(item.ct * 1000).toLocaleString(),
+ // remarks: item.remarks,
+ // others: {
+ // id: item.id,
+ // audited_media: item.audited_media,
+ // associative_database: item.associative_database,
+ // associative_table_name: item.associative_table_name,
+ // associative_table_id: item.associative_table_id,
+ // associative_table_column: item.associative_table_column,
+ // },
+ // };
+ // });
+ // setData([...data, ...structedData]);
+ // setOffset(temData.data.offset);
+ // setMore(temData.data.more);
+ // } catch (error) {
+ // console.error(error);
+ // }
+ // };
+ // useEffect(() => {
+ // getData();
+ // }, []);
+
+ //展示的数据
+ const [showData, setShowData] = useState([]);
+
+ //搜索
+ const search = async (value) => {
+ return;
+ // try {
+ // const base = baseRequest();
+ // const response = await fetch("/op/moment/list_by_mid", {
+ // method: "POST",
+ // headers: {
+ // "Content-Type": "application/json",
+ // },
+ // body: JSON.stringify({
+ // mid: 1,
+ // ...base,
+ // }),
+ // });
+ // const temData = await response.json();
+ // if (temData.ret === -1) {
+ // alert(temData.msg);
+ // return;
+ // }
+ // //匹配表格格式
+ // const structedData = temData.data.list.map((item, index) => {
+ // return {
+ // key: index,
+ // id: item.id,
+ // newMedia: item?.audited_media?.images,
+ // oldMedia: item?.old_media?.images,
+ // info: item.image_audits,
+ // submitTime: new Date(item.ct * 1000).toLocaleString(),
+ // remarks: item.remarks,
+ // others: {
+ // id: item.id,
+ // audited_media: item.audited_media,
+ // associative_database: item.associative_database,
+ // associative_table_name: item.associative_table_name,
+ // associative_table_id: item.associative_table_id,
+ // associative_table_column: item.associative_table_column,
+ // },
+ // };
+ // });
+ // setShowData([...showData, ...structedData]);
+ // } catch (error) {
+ // console.error(error);
+ // }
+ };
+ //表单提交失败
+ const onFinishFailed = (errorInfo) => {
+ console.log("Failed:", errorInfo);
+ };
+
+ //控制充值modal是否出现
+ const [isModalOpen, setIsModalOpen] = useState(false);
+
+ //保存上传的媒体的id
+ const [imageId, setImageId] = useState([]);
+ const [videoId, setVideoId] = useState([]);
+
+ //在modal中搜索用户
+ const [userInfo, setUserInfo] = useState();
+ const modalSearch = async (value) => {
+ try {
+ const base = baseRequest();
+ const response = await fetch(`/op/account/list_by_user_id`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ user_id: parseInt(value.userId, 10),
+ ...base,
+ }),
+ });
+ const data = await response.json();
+ if (data.ret === -1) {
+ alert(data.msg);
+ return;
+ }
+ setUserInfo(data.data.account);
+ } catch (error) {
+ console.error(error);
+ }
+ };
+ //选中用户
+ const [selectedUser, setSelectedUser] = useState();
+ const handleSelected = () => {
+ if (selectedUser) {
+ setSelectedUser();
+ return;
+ }
+ setSelectedUser(userInfo.mid);
+ };
+ //提交修改
+ const [form] = Form.useForm();
+ const handleSubmit = async (value) => {
+ if (!selectedUser) {
+ alert("还未选中用户");
+ return;
+ }
+ if (imageId.length === 0 && videoId.length === 0) {
+ alert("图片或视频不可为空");
+ return;
+ }
+ if (imageId.length !== 0 && videoId.length !== 0) {
+ alert("不可同时上传图片和视频");
+ return;
+ }
+ if (imageId.length > 9) {
+ alert("图片不可超过9张");
+ return;
+ }
+ if (videoId.length > 1) {
+ alert("视频不可超过1个");
+ return;
+ }
+
+ try {
+ const base = baseRequest();
+ const response = await fetch(`/op/moment/create`, {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify({
+ mid: selectedUser,
+ status: 2,
+ text: value.content,
+ media_component: { image_ids: imageId, video_ids: videoId },
+ ...base,
+ }),
+ });
+ const data = await response.json();
+ if (data.ret === -1) {
+ alert(data.msg);
+ return;
+ }
+ message.success("发布成功");
+ } catch (error) {
+ console.error(error);
+ }
+
+ form.resetFields();
+ setUserInfo();
+ setSelectedUser();
+ setIsModalOpen(false);
+ setImageId([]);
+ setVideoId([]);
+ };
+ //关闭弹窗
+ const handleCancelModal = () => {
+ form.resetFields();
+ setUserInfo();
+ setSelectedUser();
+ setIsModalOpen(false);
+ setImageId([]);
+ setVideoId([]);
+ };
+
+ return (
+
+
+
+
+ {/* 重复判断isModalOpen是为了重新渲染ImageUploader和VideoUploader组件 */}
+ {isModalOpen && (
+
+
+ *请选中主播后再发布,并确保文案不为空,图片数不超过9,视频数不超过1,图片视频不同时存在
+
+
+ {userInfo && (
+
+
+
+
ID:{userInfo.user_id}
+
昵称:{userInfo.name}
+
+
+
+ )}
+
+
+ )}
+
+ );
+};
+
+export default function CreatePost() {
+ return ;
+}
diff --git a/src/pages/Op/index.jsx b/src/pages/Op/index.jsx
index 824e548..74c99da 100644
--- a/src/pages/Op/index.jsx
+++ b/src/pages/Op/index.jsx
@@ -56,6 +56,9 @@ export default function Op() {
getItem("网红资料", "streamerInformation"),
// getItem("网红平台", "streamerPlatform"),
]),
+ getItem("动态管理", "postManagement", , [
+ getItem("发布", "createPost"),
+ ]),
// getItem("用户管理", "userManagement", ),
// getItem("订单管理", "orderManagement", , [
// getItem("订单查询", "ordersQuerry"),
diff --git a/src/routes/index.js b/src/routes/index.js
index 84e1610..26bdfde 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -15,6 +15,7 @@ import StreamerVerification from "../pages/StreamerVerification";
import ImageMachineReview from "../pages/ImageMachineReview";
import TextMachineReview from "../pages/TextMachineReview";
import ManualRechargeAndWithdrawal from "../pages/ManualRechargeAndWithdrawal";
+import CreatePost from "../pages/CreatePost";
const routes = [
{
@@ -85,6 +86,10 @@ const routes = [
path: "manualRechargeAndWithdrawal/*",
element: ,
},
+ {
+ path: "createPost/*",
+ element: ,
+ },
],
},
];