diff --git a/backend/dvadmin/utils/pagination.py b/backend/dvadmin/utils/pagination.py index 1884c06..34aa583 100644 --- a/backend/dvadmin/utils/pagination.py +++ b/backend/dvadmin/utils/pagination.py @@ -10,7 +10,7 @@ from collections import OrderedDict from django.core import paginator -from django.core.paginator import Paginator as DjangoPaginator +from django.core.paginator import Paginator as DjangoPaginator, InvalidPage from rest_framework.pagination import PageNumberPagination from rest_framework.response import Response @@ -21,23 +21,61 @@ class CustomPagination(PageNumberPagination): max_page_size = 999 django_paginator_class = DjangoPaginator + def paginate_queryset(self, queryset, request, view=None): + """ + Paginate a queryset if required, either returning a + page object, or `None` if pagination is not configured for this view. + """ + empty = True + + page_size = self.get_page_size(request) + if not page_size: + return None + + paginator = self.django_paginator_class(queryset, page_size) + page_number = request.query_params.get(self.page_query_param, 1) + if page_number in self.last_page_strings: + page_number = paginator.num_pages + + try: + self.page = paginator.page(page_number) + except InvalidPage as exc: + + # msg = self.invalid_page_message.format( + # page_number=page_number, message=str(exc) + # ) + # raise NotFound(msg) + empty = False + pass + + if paginator.num_pages > 1 and self.template is not None: + # The browsable API should display pagination controls. + self.display_page_controls = True + + self.request = request + + if not empty: + self.page = [] + + return list(self.page) def get_paginated_response(self, data): code = 2000 msg = 'success' - res = { - "page": int(self.get_page_number(self.request, paginator)) or 1, - "total": self.page.paginator.count, - "limit": int(self.get_page_size(self.request)) or 10, - "data": data - } + page =int(self.get_page_number(self.request, paginator)) or 1 + total=self.page.paginator.count if self.page else 0 + limit= int(self.get_page_size(self.request)) or 10 + data=data + if not data: code = 2000 msg = "暂无数据" - res['data'] = [] + data = [] return Response(OrderedDict([ ('code', code), ('msg', msg), - # ('total',self.page.paginator.count), - ('data', res), + ('page', page), + ('limit', limit), + ('total',total), + ('data', data) ])) diff --git a/backend/dvadmin/utils/viewset.py b/backend/dvadmin/utils/viewset.py index 3831635..a40dae0 100644 --- a/backend/dvadmin/utils/viewset.py +++ b/backend/dvadmin/utils/viewset.py @@ -80,7 +80,7 @@ class CustomModelViewSet(ModelViewSet, ImportSerializerMixin, ExportSerializerMi page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True, request=request) - return SuccessResponse(serializer.data, msg="获取成功") + return self.get_paginated_response(serializer.data) serializer = self.get_serializer(queryset, many=True, request=request) return SuccessResponse(data=serializer.data, msg="获取成功") diff --git a/web/src/utils/service.ts b/web/src/utils/service.ts index cba2009..b9685b5 100644 --- a/web/src/utils/service.ts +++ b/web/src/utils/service.ts @@ -5,12 +5,20 @@ import { errorLog, errorCreate } from "./tools.ts"; // import { env } from "/src/utils/util.env"; // import { useUserStore } from "../store/modules/user"; import { Local, Session } from '/@/utils/storage'; +import qs from "qs"; /** * @description 创建请求实例 */ function createService() { // 创建一个 axios 实例 - const service = axios.create(); + const service = axios.create({ + timeout: 20000, + paramsSerializer: { + serialize(params) { + return qs.stringify(params, { allowDots: true }); + }, + }, + }); // 请求拦截 service.interceptors.request.use( (config) => config, diff --git a/web/src/views/system/log/operationLog/api.ts b/web/src/views/system/log/operationLog/api.ts index 652dd9c..e61c7c8 100644 --- a/web/src/views/system/log/operationLog/api.ts +++ b/web/src/views/system/log/operationLog/api.ts @@ -6,7 +6,7 @@ export function GetList(query: PageQuery) { return request({ url: apiPrefix, method: 'get', - data: query, + params: query, }); } export function GetObj(id: InfoReq) { diff --git a/web/src/views/system/role/api.ts b/web/src/views/system/role/api.ts index b5a96cf..0cef8f1 100644 --- a/web/src/views/system/role/api.ts +++ b/web/src/views/system/role/api.ts @@ -6,7 +6,7 @@ export function GetList(query: PageQuery) { return request({ url: apiPrefix, method: 'get', - data: query, + params: query, }); } export function GetObj(id: InfoReq) {