初步完成修改置顶动态功能

This commit is contained in:
yezian 2024-02-03 20:01:33 +08:00
parent 70d94f0d0c
commit f5c4da9852
3 changed files with 240 additions and 0 deletions

View File

@ -59,6 +59,7 @@ export default function Op() {
]),
getItem("动态管理", "postManagement", <FormOutlined />, [
getItem("发布与编辑", "createAndEditPost"),
getItem("置顶动态", "topPosts"),
]),
// getItem("", "userManagement", <UsergroupAddOutlined />),
// getItem("", "orderManagement", <FileSearchOutlined />, [

View File

@ -0,0 +1,234 @@
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 TopPostsContent = (props) => {
//
const columns = [
{
title: "动态信息",
dataIndex: "info",
key: "info",
render: (data) => (
<div>
<p>
动态id<span className="text-red-400">{data.id}</span>
</p>
<p>
点赞<span className="text-red-400">{data.like}</span>
</p>
<p>
创建时间<span className="text-red-400">{data.ct}</span>
</p>
</div>
),
},
{
title: "动态文案",
dataIndex: "content",
key: "content",
},
{
title: "媒体",
dataIndex: "media",
key: "media",
render: (data) => (
<div>
{data?.images?.map((item, index) => (
<Image
key={index}
src={item.urls[0]}
width={150}
style={{ marginBottom: 10 }}
/>
))}
{data?.videos?.map((item, index) => (
<video key={index} src={item.urls[0]} width={150} controls />
))}
</div>
),
},
];
//
const [showData, setShowData] = useState([]);
//
const getData = async () => {
try {
const base = baseRequest();
//id
const response = await fetch("/op/app_config/list_by_key", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
config_key: "free_moment_ids",
...base,
}),
});
const temData = await response.json();
console.log(temData);
if (temData.ret === -1) {
alert(temData.msg);
return;
}
//id
if (!temData.data.app_config.config_value) return;
const intIds = temData.data.app_config.config_value?.map((item) =>
parseInt(item, 10)
);
const response2 = await fetch("/op/moment/list_by_ids", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
ids: intIds,
...base,
}),
});
const temData2 = await response2.json();
console.log(temData2);
if (temData2.ret === -1) {
alert(temData2.msg);
return;
}
//
const structedData = temData2.data.list.map((item, index) => {
return {
key: index,
info: {
id: item.id,
like: item.thumbs_up_num,
ct: new Date(item.ct * 1000).toLocaleString(),
},
content: item.text,
media: item.media_component,
};
});
setShowData(structedData);
} catch (error) {
console.error(error);
}
};
useEffect(() => {
getData();
}, []);
//modal
const [isModalOpen, setIsModalOpen] = useState(false);
//
const [form] = Form.useForm();
const handleSubmit = async (value) => {
try {
const base = baseRequest();
//id
const response = await fetch("/op/app_config/update", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
config_key: "free_moment_ids",
config_value: [value.post_id_1, value.post_id_2, value.post_id_3],
...base,
}),
});
const temData = await response.json();
if (temData.ret === -1) {
alert(temData.msg);
return;
}
form.resetFields();
setIsModalOpen(false);
} catch (error) {
console.error(error);
}
};
//
const handleCancelModal = () => {
form.resetFields();
setIsModalOpen(false);
};
return (
<div className="mt-4" style={{ marginLeft: 20, marginRight: 20 }}>
<Button
className="mb-4"
type="primary"
onClick={() => setIsModalOpen(true)}
>
修改置顶动态
</Button>
<Table
columns={columns}
dataSource={showData}
pagination={{ pageSize: 20 }}
scroll={{ y: window.innerHeight - 300 }}
/>
<Modal footer={null} open={isModalOpen} onCancel={handleCancelModal}>
<p className="text-sm text-red-400 font-bold">
*请确保输入的动态id存在
</p>
<Form
className="mt-4 flex flex-col gap-4"
form={form}
onFinish={handleSubmit}
>
<Form.Item
label="动态id_1"
name="post_id_1"
rules={[
{
required: true,
message: "请填写id",
},
]}
style={{ margin: 0 }}
>
<Input />
</Form.Item>
<Form.Item
label="动态id_2"
name="post_id_2"
rules={[
{
required: true,
message: "请填写id",
},
]}
style={{ margin: 0 }}
>
<Input />
</Form.Item>
<Form.Item
label="动态id_3"
name="post_id_3"
rules={[
{
required: true,
message: "请填写id",
},
]}
style={{ margin: 0 }}
>
<Input />
</Form.Item>
<Button className="ml-8" type="primary" htmlType="submit">
确认
</Button>
</Form>
</Modal>
</div>
);
};
export default function TopPosts() {
return <TopPostsContent />;
}

View File

@ -16,6 +16,7 @@ import ImageMachineReview from "../pages/ImageMachineReview";
import TextMachineReview from "../pages/TextMachineReview";
import ManualRechargeAndWithdrawal from "../pages/ManualRechargeAndWithdrawal";
import CreateAndEditPost from "../pages/CreateAndEditPost";
import TopPosts from "../pages/TopPosts";
const routes = [
{
@ -90,6 +91,10 @@ const routes = [
path: "createAndEditPost/*",
element: <CreateAndEditPost />,
},
{
path: "topPosts/*",
element: <TopPosts />,
},
],
},
];