198 lines
5.6 KiB
TypeScript
198 lines
5.6 KiB
TypeScript
export type Article = {
|
|
id: number;
|
|
title: string;
|
|
mainIdea: string;
|
|
content: string;
|
|
};
|
|
export type ArticleUser = {
|
|
id: number;
|
|
name: string;
|
|
amount: number;
|
|
};
|
|
type ArticleStore = {
|
|
articleList: ArticleUser[];
|
|
pagination: BasicPagination;
|
|
currentManageUser: UserInfo;
|
|
currentUserAvatar: string;
|
|
currentUserLastGetTime: Date;
|
|
currentUserArticleList: Article[];
|
|
currentUserPagination: BasicPagination;
|
|
currentArticle: Article;
|
|
};
|
|
export const useArticleStore = defineStore('Article', {
|
|
state: (): ArticleStore => ({
|
|
articleList: [],
|
|
pagination: {
|
|
current: 1,
|
|
pageSize: 5,
|
|
defaultPageSize: 5,
|
|
total: 0,
|
|
defaultCurrent: 1,
|
|
},
|
|
currentManageUser: {
|
|
userId: '',
|
|
userName: '',
|
|
userEmail: '',
|
|
userAvatarPath: '',
|
|
userAmount: '',
|
|
userBirthday: '',
|
|
},
|
|
currentUserAvatar: '',
|
|
currentUserLastGetTime: new Date(),
|
|
currentUserArticleList: [],
|
|
currentUserPagination: {
|
|
current: 1,
|
|
pageSize: 5,
|
|
defaultPageSize: 5,
|
|
total: 0,
|
|
defaultCurrent: 1,
|
|
},
|
|
currentArticle: {
|
|
id: 0,
|
|
title: '',
|
|
mainIdea: '',
|
|
content: '',
|
|
},
|
|
}),
|
|
actions: {
|
|
async modifyArticle() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
await $http.POST('/article/updateArticle', {
|
|
...this.currentArticle,
|
|
author: this.currentManageUser.userName,
|
|
});
|
|
this.getCurrentManageUserArticleList();
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error adding article:' + error);
|
|
}
|
|
},
|
|
async deleteArticle(id: number) {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
await $http.GET('/article/deleteArticle', {
|
|
id: '' + id,
|
|
});
|
|
this.getCurrentManageUserArticleList();
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error deleting article:' + error);
|
|
}
|
|
},
|
|
async addNewArticle() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
await $http.POST('/article/addArticle', {
|
|
...this.currentArticle,
|
|
author: this.currentManageUser.userName,
|
|
});
|
|
this.getCurrentManageUserArticleList();
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error adding article:' + error);
|
|
}
|
|
},
|
|
async getCurrentManageUserArticleList() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<{ records: Article[] }>(
|
|
`/article/page/${this.currentManageUser.userName}`,
|
|
{
|
|
page: '' + this.pagination!.current,
|
|
size: '' + this.pagination!.pageSize,
|
|
},
|
|
);
|
|
this.currentUserArticleList = res.data.records;
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error fetching people list:' + error);
|
|
}
|
|
},
|
|
async getCurrentManageUserArticleTotal() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<number>(
|
|
`/article/total/${this.currentManageUser.userName}`,
|
|
);
|
|
console.log(res.data);
|
|
this.currentUserPagination.total = res.data;
|
|
if (
|
|
(this.currentUserPagination!.current - 1) *
|
|
this.currentUserPagination!.pageSize >
|
|
this.currentUserPagination!.total
|
|
) {
|
|
this.currentUserPagination!.current = Math.ceil(
|
|
this.currentUserPagination!.total /
|
|
this.currentUserPagination!.pageSize,
|
|
);
|
|
}
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error fetching article total:' + error);
|
|
}
|
|
},
|
|
async getCurrentManageUserAvatar(forceUpdate: boolean = false) {
|
|
const now = new Date();
|
|
if (
|
|
!forceUpdate &&
|
|
this.currentUserAvatar !== '' &&
|
|
now.getTime() - this.currentUserLastGetTime.getTime() < 1000 * 60 * 9
|
|
) {
|
|
return this.currentUserAvatar;
|
|
}
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<string>('/article/userAvatar', {
|
|
userId: this.currentManageUser.userId,
|
|
});
|
|
this.currentUserAvatar = res.data;
|
|
return this.currentUserAvatar;
|
|
} catch (error) {
|
|
await MessagePlugin.error(
|
|
'Error fetching article user avatar:' + error,
|
|
);
|
|
}
|
|
},
|
|
async getCurrentManageUserInfo(userId: string) {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<UserInfo>('/article/userInfo', {
|
|
userId: userId,
|
|
});
|
|
this.currentManageUser = res.data;
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error fetching article user info:' + error);
|
|
}
|
|
},
|
|
async getArticleList() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<{ records: ArticleUser[] }>(
|
|
'/article/page',
|
|
{
|
|
page: '' + this.pagination!.current,
|
|
size: '' + this.pagination!.pageSize,
|
|
},
|
|
);
|
|
this.articleList = res.data.records;
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error fetching article list:' + error);
|
|
}
|
|
},
|
|
async getTotal() {
|
|
const { $http } = useNuxtApp();
|
|
try {
|
|
const res = await $http.GET<number>('/article/total');
|
|
this.pagination.total = res.data;
|
|
if (
|
|
(this.pagination!.current - 1) * this.pagination!.pageSize >
|
|
this.pagination!.total
|
|
) {
|
|
this.pagination!.current = Math.ceil(
|
|
this.pagination!.total / this.pagination!.pageSize,
|
|
);
|
|
this.getArticleList();
|
|
}
|
|
} catch (error) {
|
|
await MessagePlugin.error('Error fetching article total:' + error);
|
|
}
|
|
},
|
|
},
|
|
});
|