From 3156fd957b85f1f5ab1e283d11f6d954937db042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=87=E9=98=B3?= <3311118881@qq.com> Date: Sun, 25 Aug 2024 18:38:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E6=96=87=E7=AB=A0=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/Article.ts | 37 ++++++++++--------- src/pages/Article/index.tsx | 9 +++-- src/pages/Article/type.d.ts | 2 +- src/types/app/article.d.ts | 2 +- src/types/response.d.ts | 4 +-- src/utils/index.ts | 71 ++++++++++++++++++++++++++++--------- src/utils/request.ts | 5 ++- 7 files changed, 85 insertions(+), 45 deletions(-) diff --git a/src/api/Article.ts b/src/api/Article.ts index 123f9da..8695214 100644 --- a/src/api/Article.ts +++ b/src/api/Article.ts @@ -18,22 +18,21 @@ export const editArticleDataAPI = (data: Article) => export const getArticleDataAPI = (id?: number) => Request
("GET", `/article/${id}`) // 获取文章列表 -export const getArticleListAPI = getListAPI
("/article") - -// export const getArticleListAPI = (data?: QueryData) => { -// if (data?.pagination) { -// let sort = data?.sort ? `?sort=${data?.sort}` : '?' -// const query = ObjectToUrlParam(data?.query as FilterData) ? "&" + ObjectToUrlParam(data?.query as FilterData) : '' -// const { page, size } = data.pagination -// const pagination = page && size ? `&page=${page}&size=${size}` : page && !size ? `&page=${page}` : size && !page ? `&size=${size}` : '' -// if (!query && !pagination) sort = '' - -// return Request>("GET", `/article${sort}${pagination}${query}`); -// } else { -// let sort = data?.sort ? `?sort=${data?.sort}` : '?' -// const query = ObjectToUrlParam(data?.query as FilterData) ? "&" + ObjectToUrlParam(data?.query as FilterData) : '' -// if (!query) sort = '' - -// return Request("GET", `/article/all${sort}${query}`); -// } -// }; +export const getArticleListAPI = (data?: QueryData) => { + if (data?.pagination) { + return Request>("POST", `/article/paging`, { + data: { ...data?.query }, + params: { + sort: data.sort, + ...data.pagination + } + }); + } else { + return Request("POST", `/article/list`, { + data: { ...data?.query }, + params: { + sort: data?.sort + } + }); + } +}; diff --git a/src/pages/Article/index.tsx b/src/pages/Article/index.tsx index 9099b91..6b15043 100644 --- a/src/pages/Article/index.tsx +++ b/src/pages/Article/index.tsx @@ -126,12 +126,15 @@ const ArticlePage = () => { const onSubmit = async (values: FilterForm) => { const query: FilterArticle = { key: values.title ? values.title : null, - startDate: values.createTime ? +values.createTime[0].valueOf() : null, - endDate: values.createTime ? +values.createTime[1].valueOf() : null, - cateIds: values.cateIds ? values?.cateIds?.join(",") : null, + startDate: values.createTime ? values.createTime[0].valueOf() + '' : null, + endDate: values.createTime ? values.createTime[1].valueOf() + '' : null, + cateIds: values.cateIds ? values.cateIds : null, tagId: values.tagId ? values.tagId + "" : null, } + console.log(query); + + const { data } = await getArticleListAPI({ query }); setArticleList(data as Article[]); } diff --git a/src/pages/Article/type.d.ts b/src/pages/Article/type.d.ts index b44fc89..745d36a 100644 --- a/src/pages/Article/type.d.ts +++ b/src/pages/Article/type.d.ts @@ -6,6 +6,6 @@ export interface FilterForm { } export interface FilterArticle extends FilterData { - cateIds?: string | null, + cateIds?: number[] | null, tagId?: string | null, } \ No newline at end of file diff --git a/src/types/app/article.d.ts b/src/types/app/article.d.ts index d00db5c..227f36a 100644 --- a/src/types/app/article.d.ts +++ b/src/types/app/article.d.ts @@ -7,7 +7,7 @@ export interface Article { description: string, content: string, cover: string, - cateIds: string, + cateIds: number[], cateList: Cate[] tagIds: string, tagList: Tag[] diff --git a/src/types/response.d.ts b/src/types/response.d.ts index e4b7e3f..7c3cbd4 100644 --- a/src/types/response.d.ts +++ b/src/types/response.d.ts @@ -21,8 +21,8 @@ interface Page { interface FilterData { key?: string | null, - startDate?: number | null, - endDate?: number | null + startDate?: string | null, + endDate?: string | null } interface QueryData { diff --git a/src/utils/index.ts b/src/utils/index.ts index 8e3177e..66b8d40 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,4 @@ import Request from "@/utils/request"; -import { Article } from "@/types/app/article"; // 对象转url参数 export const ObjectToUrlParam = (obj: Object): string => { @@ -12,22 +11,62 @@ export const ObjectToUrlParam = (obj: Object): string => { } // 查询数据相关逻辑 +// export const getListAPI = (api: string) => { +// return (data?: QueryData) => { +// if (data?.pagination) { +// let sort = data?.sort ? `?sort=${data?.sort}` : '?' +// const query = ObjectToUrlParam(data?.query as FilterData) ? "&" + ObjectToUrlParam(data?.query as FilterData) : '' +// const { page, size } = data.pagination +// const pagination = page && size ? `&page=${page}&size=${size}` : page && !size ? `&page=${page}` : size && !page ? `&size=${size}` : '' +// if (!query && !pagination) sort = '' + +// return Request>("GET", `${api}${sort}${pagination}${query}`); +// } else { +// return Request("GET", `${api}/all`, { +// sort: data?.sort, +// pattern: data?.pattern, +// ...data?.query +// }); +// } +// } +// }; + +const buildQueryParams = (params: Record): string => { + return Object.entries(params) + .filter(([_, value]) => value !== undefined && value !== null) + .map(([key, value]) => { + if (Array.isArray(value)) { + return `${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(value))}`; + } + return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`; + }) + .join('&'); +}; + export const getListAPI = (api: string) => { return (data?: QueryData) => { - if (data?.pagination) { - let sort = data?.sort ? `?sort=${data?.sort}` : '?' - const query = ObjectToUrlParam(data?.query as FilterData) ? "&" + ObjectToUrlParam(data?.query as FilterData) : '' - const { page, size } = data.pagination - const pagination = page && size ? `&page=${page}&size=${size}` : page && !size ? `&page=${page}` : size && !page ? `&size=${size}` : '' - if (!query && !pagination) sort = '' + let queryParams: Record = {}; - return Request>("GET", `${api}${sort}${pagination}${query}`); - } else { - return Request("GET", `${api}/all`, { - sort: data?.sort, - pattern: data?.pattern, - ...data?.query - }); + if (data?.sort) { + queryParams.sort = data.sort; } - } -}; \ No newline at end of file + + if (data?.query) { + queryParams = { ...queryParams, ...data.query }; + } + + if (data?.pagination) { + const { page, size } = data.pagination; + if (page) queryParams.page = page; + if (size) queryParams.size = size; + } + + const queryString = buildQueryParams(queryParams); + + if (data?.pagination) { + return Request>("GET", `${api}?${queryString}`); + } else { + return Request("GET", `${api}/all?${queryString}`); + } + }; +}; diff --git a/src/utils/request.ts b/src/utils/request.ts index df1c369..a2b6b05 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -77,12 +77,11 @@ instance.interceptors.response.use( // 如果是GET传参就自动识别为query,POST为data const Request = (method: string, url: string, reqParams?: object) => { - if (!method) method = "GET"; - return instance.request>({ method, url, - [method.toLocaleUpperCase() === "GET" ? "params" : "data"]: reqParams + ...reqParams + // [method.toLocaleUpperCase() === "GET" ? "params" : "data"]: reqParams }); };