功能:优化用户发布文章体验

This commit is contained in:
宇阳
2024-12-09 15:17:04 +08:00
parent 4e37d4f061
commit a6a33df355
6 changed files with 37 additions and 25 deletions

View File

@@ -11,7 +11,7 @@
"author": {
"name": "YuYang",
"email": "liuyuyang1024@yeah.net",
"url": "https://blog.liuyuyang.net"
"url": "https://liuyuyang.net"
},
"dependencies": {
"@bytemd/plugin-gemoji": "^1.21.0",

View File

@@ -39,14 +39,17 @@ const ArticlePage = () => {
const delArticleData = async (id: number) => {
setLoading(true);
// 普通删除:可从回收站恢复
await delArticleDataAPI(id, true);
await getArticleList();
form.resetFields()
setCurrent(1)
notification.success({ message: '🎉 删除文章成功' })
setLoading(false);
try {
// 普通删除:可从回收站恢复
await delArticleDataAPI(id, true);
await getArticleList();
form.resetFields()
setCurrent(1)
notification.success({ message: '🎉 删除文章成功' })
setLoading(false);
} catch (error) {
setLoading(false);
}
};
// 标签颜色

View File

@@ -55,9 +55,13 @@ const CatePage = () => {
const delCateData = async (id: number) => {
setLoading(true);
await delCateDataAPI(id);
message.success('🎉 删除分类成功');
getCateList();
try {
await delCateDataAPI(id);
message.success('🎉 删除分类成功');
getCateList();
} catch (error) {
setLoading(false);
}
};
const submit = async () => {

View File

@@ -149,7 +149,7 @@ const PublishForm = ({ data, closeModel }: { data: Article, closeModel: () => vo
...values,
content: data.content,
tagIds: tagIds.join(','),
isDraft: 0,
isDraft: isDraft ? 1 : 0,
config: {
status: values.status,
password: values.password
@@ -249,9 +249,9 @@ const PublishForm = ({ data, closeModel }: { data: Article, closeModel: () => vo
</Form.Item>
{/* 草稿和编辑状态下不再显示保存草稿按钮 */}
{(!isDraftParams && !id) && (
{((isDraftParams && id) || !id) && (
<Form.Item className="!mt-2 !mb-0">
<Button className="w-full" onClick={() => form.validateFields().then(values => onSubmit(values, true))}>稿</Button>
<Button className="w-full" onClick={() => form.validateFields().then(values => onSubmit(values, true))}>{isDraftParams ? '保存' : '保存为草稿'}</Button>
</Form.Item>
)}
</Form>

View File

@@ -60,7 +60,7 @@ const ListItem = ({ item, type, fetchData }: ListItemProps) => {
content: replyInfo,
commentId: item?.id!,
auditStatus: 1,
email: user.email,
email: user.email ? user.email : null,
name: user.name,
articleId: item?.articleId!,
createTime: new Date().getTime().toString(),
@@ -85,7 +85,7 @@ const ListItem = ({ item, type, fetchData }: ListItemProps) => {
}
// 有内容就发送驳回通知邮件,反之直接删除
if(dismissInfo.trim().length) await sendDismissEmail()
if (dismissInfo.trim().length) await sendDismissEmail()
message.success('🎉 驳回成功');
setIsModalOpen(false)
@@ -180,11 +180,16 @@ const ListItem = ({ item, type, fetchData }: ListItemProps) => {
<div className="flex items-end">
<Dropdown menu={{
items: [
{ key: 'ok', label: "通过", onClick: handleApproval },
{ key: 'reply', label: "回复", onClick: () => [setIsModalOpen(true), setBtnType("reply")] },
{ key: 'dismiss', label: "回", onClick: () => [setIsModalOpen(true), , setBtnType("dismiss")] }
]
items: type === "comment"
? [
{ key: 'ok', label: "通过", onClick: handleApproval },
{ key: 'reply', label: "回", onClick: () => [setIsModalOpen(true), setBtnType("reply")] },
{ key: 'dismiss', label: "驳回", onClick: () => [setIsModalOpen(true), , setBtnType("dismiss")] }
]
: [
{ key: 'ok', label: "通过", onClick: handleApproval },
{ key: 'dismiss', label: "驳回", onClick: () => [setIsModalOpen(true), , setBtnType("dismiss")] }
]
}}>
<div className="flex justify-evenly items-center bg-[#F9F9FD] w-11 h-5 rounded-md cursor-pointer">
<span className="inline-block w-2 h-2 bg-[#b5c2d3] rounded-full"></span>

View File

@@ -2,7 +2,7 @@ export interface Comment {
id?: number,
name: string,
avatar: string,
email: string,
email: string | null,
url: string,
content: string,
articleId: number,