refactor: 更新API接口与数据结构,统一分页返回格式

This commit is contained in:
Ray.Hao
2026-01-09 00:07:25 +08:00
parent 4a8efc770e
commit a5885d0710
64 changed files with 1085 additions and 910 deletions

View File

@@ -4,8 +4,8 @@ import type {
AiCommandResponse,
AiExecuteRequest,
AiExecuteResponse,
AiCommandRecordPageQuery,
AiCommandRecordVo,
AiAssistantRecordQueryParams,
AiAssistantRecordItem,
} from "@/types/api";
const AI_BASE_URL = "/api/v1/ai/assistant";
@@ -48,8 +48,8 @@ const AiCommandApi = {
* @param queryParams 查询参数
* @returns AI 命令记录分页列表
*/
getPage(queryParams: AiCommandRecordPageQuery) {
return request<any, PageResult<AiCommandRecordVo[]>>({
getPage(queryParams: AiAssistantRecordQueryParams) {
return request<any, PageResult<AiAssistantRecordItem>>({
url: `${AI_BASE_URL}/records`,
method: "get",
params: queryParams,

View File

@@ -1,13 +1,13 @@
import request from "@/utils/request";
import type { GeneratorPreviewVo, TablePageQuery, TablePageVo, GenConfigForm } from "@/types/api";
import type { GeneratorPreviewItem, TableQueryParams, TableItem, GenConfigForm } from "@/types/api";
const GENERATOR_BASE_URL = "/api/v1/codegen";
const GeneratorAPI = {
/** 获取数据表分页列表 */
getTablePage(params: TablePageQuery) {
return request<any, PageResult<TablePageVo[]>>({
url: `${GENERATOR_BASE_URL}/table/page`,
getTablePage(params: TableQueryParams) {
return request<any, PageResult<TableItem>>({
url: `${GENERATOR_BASE_URL}/table`,
method: "get",
params,
});
@@ -32,7 +32,7 @@ const GeneratorAPI = {
/** 获取代码生成预览数据 */
getPreviewData(tableName: string, pageType?: "classic" | "curd") {
return request<any, GeneratorPreviewVo[]>({
return request<any, GeneratorPreviewItem[]>({
url: `${GENERATOR_BASE_URL}/${tableName}/preview`,
method: "get",
params: pageType ? { pageType } : undefined,

View File

@@ -1,13 +1,13 @@
import request from "@/utils/request";
import type { ConfigPageQuery, ConfigForm, ConfigPageVo } from "@/types/api";
import type { ConfigQueryParams, ConfigForm, ConfigItem } from "@/types/api";
const CONFIG_BASE_URL = "/api/v1/configs";
const ConfigAPI = {
/** 获取配置分页数据 */
getPage(queryParams?: ConfigPageQuery) {
return request<any, PageResult<ConfigPageVo[]>>({
url: `${CONFIG_BASE_URL}/page`,
getPage(queryParams?: ConfigQueryParams) {
return request<any, PageResult<ConfigItem>>({
url: `${CONFIG_BASE_URL}`,
method: "get",
params: queryParams,
});

View File

@@ -1,16 +1,20 @@
import request from "@/utils/request";
import type { DeptQuery, DeptVo, DeptForm } from "@/types/api";
import type { DeptQueryParams, DeptItem, DeptForm, OptionItem } from "@/types/api";
const DEPT_BASE_URL = "/api/v1/depts";
const DeptAPI = {
/** 获取部门树形列表 */
getList(queryParams?: DeptQuery) {
return request<any, DeptVo[]>({ url: `${DEPT_BASE_URL}`, method: "get", params: queryParams });
getList(queryParams?: DeptQueryParams) {
return request<any, DeptItem[]>({
url: `${DEPT_BASE_URL}`,
method: "get",
params: queryParams,
});
},
/** 获取部门下拉数据源 */
getOptions() {
return request<any, OptionType[]>({ url: `${DEPT_BASE_URL}/options`, method: "get" });
return request<any, OptionItem[]>({ url: `${DEPT_BASE_URL}/options`, method: "get" });
},
/** 获取部门表单数据 */
getFormData(id: string) {

View File

@@ -1,39 +1,86 @@
import request from "@/utils/request";
import type {
DictPageQuery,
DictPageVo,
DictForm,
DictItemPageQuery,
DictItemPageVo,
DictTypeQueryParams,
DictTypeItem,
DictTypeForm,
DictItemQueryParams,
DictItem,
DictItemForm,
DictItemOption,
OptionItem,
} from "@/types/api";
const DICT_BASE_URL = "/api/v1/dicts";
type DictTagTypeCode = "N" | "P" | "S" | "W" | "I" | "D";
const decodeDictTagType = (code?: unknown): DictItemForm["tagType"] => {
const val = String(code ?? "")
.trim()
.toUpperCase();
switch (val as DictTagTypeCode) {
case "P":
return "primary";
case "S":
return "success";
case "W":
return "warning";
case "I":
return "info";
case "D":
return "danger";
case "N":
default:
return "";
}
};
const encodeDictTagType = (tagType?: unknown): DictTagTypeCode => {
const val = String(tagType ?? "")
.trim()
.toLowerCase();
switch (val) {
case "primary":
return "P";
case "success":
return "S";
case "warning":
return "W";
case "info":
return "I";
case "danger":
case "error":
return "D";
case "default":
case "":
default:
return "N";
}
};
const DictAPI = {
/** 字典分页列表 */
getPage(queryParams: DictPageQuery) {
return request<any, PageResult<DictPageVo[]>>({
url: `${DICT_BASE_URL}/page`,
getPage(queryParams: DictTypeQueryParams) {
return request<any, PageResult<DictTypeItem>>({
url: `${DICT_BASE_URL}`,
method: "get",
params: queryParams,
});
},
/** 字典列表 */
getList() {
return request<any, OptionType[]>({ url: `${DICT_BASE_URL}`, method: "get" });
return request<any, OptionItem[]>({ url: `${DICT_BASE_URL}/options`, method: "get" });
},
/** 字典表单数据 */
getFormData(id: string) {
return request<any, DictForm>({ url: `${DICT_BASE_URL}/${id}/form`, method: "get" });
return request<any, DictTypeForm>({ url: `${DICT_BASE_URL}/${id}/form`, method: "get" });
},
/** 新增字典 */
create(data: DictForm) {
create(data: DictTypeForm) {
return request({ url: `${DICT_BASE_URL}`, method: "post", data });
},
/** 修改字典 */
update(id: string, data: DictForm) {
update(id: string, data: DictTypeForm) {
return request({ url: `${DICT_BASE_URL}/${id}`, method: "put", data });
},
/** 删除字典 */
@@ -42,34 +89,62 @@ const DictAPI = {
},
/** 获取字典项分页列表 */
getDictItemPage(dictCode: string, queryParams: DictItemPageQuery) {
return request<any, PageResult<DictItemPageVo[]>>({
url: `${DICT_BASE_URL}/${dictCode}/items/page`,
getDictItemPage(dictCode: string, queryParams: DictItemQueryParams) {
return request<any, PageResult<DictItem>>({
url: `${DICT_BASE_URL}/${dictCode}/items`,
method: "get",
params: queryParams,
});
}).then((res) => ({
...res,
data: (res.data ?? []).map((item) => ({
...item,
tagType: decodeDictTagType((item as any).tagType),
})),
}));
},
/** 获取字典项列表 */
getDictItems(dictCode: string) {
return request<any, DictItemOption[]>({
url: `${DICT_BASE_URL}/${dictCode}/items`,
url: `${DICT_BASE_URL}/${dictCode}/items/options`,
method: "get",
});
}).then((items) =>
(items ?? []).map((item) => ({
...item,
tagType: decodeDictTagType((item as any).tagType),
}))
);
},
/** 新增字典项 */
createDictItem(dictCode: string, data: DictItemForm) {
return request({ url: `${DICT_BASE_URL}/${dictCode}/items`, method: "post", data });
return request({
url: `${DICT_BASE_URL}/${dictCode}/items`,
method: "post",
data: {
...data,
tagType: encodeDictTagType((data as any).tagType),
},
});
},
/** 获取字典项表单数据 */
getDictItemFormData(dictCode: string, id: string) {
return request<any, DictItemForm>({
url: `${DICT_BASE_URL}/${dictCode}/items/${id}/form`,
method: "get",
});
}).then((form) => ({
...form,
tagType: decodeDictTagType((form as any).tagType),
}));
},
/** 修改字典项 */
updateDictItem(dictCode: string, id: string, data: DictItemForm) {
return request({ url: `${DICT_BASE_URL}/${dictCode}/items/${id}`, method: "put", data });
return request({
url: `${DICT_BASE_URL}/${dictCode}/items/${id}`,
method: "put",
data: {
...data,
tagType: encodeDictTagType((data as any).tagType),
},
});
},
/** 删除字典项 */
deleteDictItems(dictCode: string, ids: string) {

View File

@@ -1,13 +1,13 @@
import request from "@/utils/request";
import type { LogPageQuery, LogPageVo } from "@/types/api";
import type { LogQueryParams, LogItem } from "@/types/api";
const LOG_BASE_URL = "/api/v1/logs";
const LogAPI = {
/** 获取日志分页列表 */
getPage(queryParams: LogPageQuery) {
return request<any, PageResult<LogPageVo[]>>({
url: `${LOG_BASE_URL}/page`,
getPage(queryParams: LogQueryParams) {
return request<any, PageResult<LogItem>>({
url: `${LOG_BASE_URL}`,
method: "get",
params: queryParams,
});

View File

@@ -1,20 +1,24 @@
import request from "@/utils/request";
import type { MenuQuery, MenuVo, MenuForm, RouteVo, OptionType } from "@/types/api";
import type { MenuQueryParams, MenuItem, MenuForm, RouteItem, OptionItem } from "@/types/api";
const MENU_BASE_URL = "/api/v1/menus";
const MenuAPI = {
/** 获取当前用户的路由列表 */
getRoutes() {
return request<any, RouteVo[]>({ url: `${MENU_BASE_URL}/routes`, method: "get" });
return request<any, RouteItem[]>({ url: `${MENU_BASE_URL}/routes`, method: "get" });
},
/** 获取菜单树形列表 */
getList(queryParams: MenuQuery) {
return request<any, MenuVo[]>({ url: `${MENU_BASE_URL}`, method: "get", params: queryParams });
getList(queryParams: MenuQueryParams) {
return request<any, MenuItem[]>({
url: `${MENU_BASE_URL}`,
method: "get",
params: queryParams,
});
},
/** 获取菜单下拉数据源 */
getOptions(onlyParent?: boolean) {
return request<any, OptionType[]>({
return request<any, OptionItem[]>({
url: `${MENU_BASE_URL}/options`,
method: "get",
params: { onlyParent },

View File

@@ -1,13 +1,13 @@
import request from "@/utils/request";
import type { NoticePageQuery, NoticeForm, NoticePageVo, NoticeDetailVo } from "@/types/api";
import type { NoticeQueryParams, NoticeForm, NoticeItem, NoticeDetail } from "@/types/api";
const NOTICE_BASE_URL = "/api/v1/notices";
const NoticeAPI = {
/** 获取通知公告分页数据 */
getPage(queryParams?: NoticePageQuery) {
return request<any, PageResult<NoticePageVo[]>>({
url: `${NOTICE_BASE_URL}/page`,
getPage(queryParams?: NoticeQueryParams) {
return request<any, PageResult<NoticeItem>>({
url: `${NOTICE_BASE_URL}`,
method: "get",
params: queryParams,
});
@@ -38,15 +38,15 @@ const NoticeAPI = {
},
/** 查看通知 */
getDetail(id: string) {
return request<any, NoticeDetailVo>({ url: `${NOTICE_BASE_URL}/${id}/detail`, method: "get" });
return request<any, NoticeDetail>({ url: `${NOTICE_BASE_URL}/${id}/detail`, method: "get" });
},
/** 全部已读 */
readAll() {
return request({ url: `${NOTICE_BASE_URL}/read-all`, method: "put" });
},
/** 获取我的通知分页列表 */
getMyNoticePage(queryParams?: NoticePageQuery) {
return request<any, PageResult<NoticePageVo[]>>({
getMyNoticePage(queryParams?: NoticeQueryParams) {
return request<any, PageResult<NoticeItem>>({
url: `${NOTICE_BASE_URL}/my`,
method: "get",
params: queryParams,

View File

@@ -1,20 +1,20 @@
import request from "@/utils/request";
import type { RolePageQuery, RolePageVo, RoleForm } from "@/types/api";
import type { RoleQueryParams, RoleItem, RoleForm, OptionItem } from "@/types/api";
const ROLE_BASE_URL = "/api/v1/roles";
const RoleAPI = {
/** 获取角色分页数据 */
getPage(queryParams?: RolePageQuery) {
return request<any, PageResult<RolePageVo[]>>({
url: `${ROLE_BASE_URL}/page`,
getPage(queryParams?: RoleQueryParams) {
return request<any, PageResult<RoleItem>>({
url: `${ROLE_BASE_URL}`,
method: "get",
params: queryParams,
});
},
/** 获取角色下拉数据源 */
getOptions() {
return request<any, OptionType[]>({ url: `${ROLE_BASE_URL}/options`, method: "get" });
return request<any, OptionItem[]>({ url: `${ROLE_BASE_URL}/options`, method: "get" });
},
/** 获取角色的菜单ID集合 */
getRoleMenuIds(roleId: string) {

View File

@@ -1,12 +1,12 @@
import request from "@/utils/request";
import type { VisitTrendQuery, VisitTrendVo, VisitStatsVo } from "@/types/api";
import type { VisitTrendQueryParams, VisitTrendDetail, VisitStatsDetail } from "@/types/api";
const STATISTICS_BASE_URL = "/api/v1/statistics";
const StatisticsAPI = {
/** 获取访问趋势统计 */
getVisitTrend(queryParams: VisitTrendQuery) {
return request<any, VisitTrendVo>({
getVisitTrend(queryParams: VisitTrendQueryParams) {
return request<any, VisitTrendDetail>({
url: `${STATISTICS_BASE_URL}/visits/trend`,
method: "get",
params: queryParams,
@@ -14,7 +14,7 @@ const StatisticsAPI = {
},
/** 获取访问概览统计 */
getVisitOverview() {
return request<any, VisitStatsVo>({
return request<any, VisitStatsDetail>({
url: `${STATISTICS_BASE_URL}/visits/overview`,
method: "get",
});

View File

@@ -1,11 +1,11 @@
import request from "@/utils/request";
import type {
TenantCreateForm,
TenantCreateResultVo,
TenantForm,
TenantInfo,
TenantPageQuery,
TenantPageVo,
TenantCreateResult,
TenantQueryParams,
TenantItem,
} from "@/types/api";
const TENANT_BASE_URL = "/api/v1/tenants";
@@ -20,7 +20,7 @@ const TenantAPI = {
*/
getTenantList() {
return request<any, TenantInfo[]>({
url: `${TENANT_BASE_URL}`,
url: `${TENANT_BASE_URL}/options`,
method: "get",
});
},
@@ -48,9 +48,9 @@ const TenantAPI = {
},
/** 获取租户分页数据(平台租户管理) */
getPage(queryParams?: TenantPageQuery) {
return request<any, PageResult<TenantPageVo[]>>({
url: `${TENANT_BASE_URL}/page`,
getPage(queryParams?: TenantQueryParams) {
return request<any, PageResult<TenantItem>>({
url: `${TENANT_BASE_URL}`,
method: "get",
params: queryParams,
});
@@ -66,7 +66,7 @@ const TenantAPI = {
/** 新增租户并初始化默认数据 */
create(data: TenantCreateForm) {
return request<any, TenantCreateResultVo>({
return request<any, TenantCreateResult>({
url: `${TENANT_BASE_URL}`,
method: "post",
data,

View File

@@ -1,14 +1,15 @@
import request from "@/utils/request";
import type {
UserInfo,
UserPageQuery,
UserPageVo,
UserForm,
UserProfileVo,
UserQueryParams,
UserItem,
UserProfileDetail,
UserProfileForm,
PasswordChangeForm,
MobileUpdateForm,
EmailUpdateForm,
OptionItem,
} from "@/types/api";
const USER_BASE_URL = "/api/v1/users";
@@ -31,9 +32,9 @@ const UserAPI = {
*
* @param queryParams 查询参数
*/
getPage(queryParams: UserPageQuery) {
return request<any, PageResult<UserPageVo[]>>({
url: `${USER_BASE_URL}/page`,
getPage(queryParams: UserQueryParams) {
return request<any, PageResult<UserItem>>({
url: `${USER_BASE_URL}`,
method: "get",
params: queryParams,
});
@@ -119,7 +120,7 @@ const UserAPI = {
*
* @param queryParams 查询参数
*/
export(queryParams: UserPageQuery) {
export(queryParams: UserQueryParams) {
return request({
url: `${USER_BASE_URL}/export`,
method: "get",
@@ -150,7 +151,7 @@ const UserAPI = {
/** 获取个人中心用户信息 */
getProfile() {
return request<any, UserProfileVo>({
return request<any, UserProfileDetail>({
url: `${USER_BASE_URL}/profile`,
method: "get",
});
@@ -214,7 +215,7 @@ const UserAPI = {
* 获取用户下拉列表
*/
getOptions() {
return request<any, OptionType[]>({
return request<any, OptionItem[]>({
url: `${USER_BASE_URL}/options`,
method: "get",
});