From 7858530fc83170e6e09cb5a8828705bc940846a9 Mon Sep 17 00:00:00 2001 From: local Date: Sat, 27 Jun 2026 22:46:48 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=93=E5=8F=B7=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contracts/admin-openapi.json | 38 +++++++++++++++++++++++ src/features/rooms/hooks/useRoomsPage.js | 12 ++++++- src/features/rooms/pages/RoomListPage.jsx | 11 ++++++- src/shared/api/generated/schema.d.ts | 11 ++++++- src/shared/api/types.ts | 2 ++ 5 files changed, 71 insertions(+), 3 deletions(-) diff --git a/contracts/admin-openapi.json b/contracts/admin-openapi.json index 74d98b9..e6909f2 100644 --- a/contracts/admin-openapi.json +++ b/contracts/admin-openapi.json @@ -3415,6 +3415,44 @@ "/admin/rooms": { "get": { "operationId": "listRooms", + "parameters": [ + { + "$ref": "#/components/parameters/Page" + }, + { + "$ref": "#/components/parameters/PageSize" + }, + { + "$ref": "#/components/parameters/Keyword" + }, + { + "name": "owner_user_keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/Status" + }, + { + "$ref": "#/components/parameters/RegionId" + }, + { + "name": "sort_by", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sort_direction", + "in": "query", + "schema": { + "type": "string" + } + } + ], "responses": { "200": { "$ref": "#/components/responses/EmptyResponse" diff --git a/src/features/rooms/hooks/useRoomsPage.js b/src/features/rooms/hooks/useRoomsPage.js index 8986f59..ff2dd99 100644 --- a/src/features/rooms/hooks/useRoomsPage.js +++ b/src/features/rooms/hooks/useRoomsPage.js @@ -24,6 +24,7 @@ export function useRoomsPage() { const { showToast } = useToast(); const { loadingRegions, regionOptions } = useRegionOptions(); const [query, setQuery] = useState(""); + const [ownerUserKeyword, setOwnerUserKeyword] = useState(""); const [status, setStatus] = useState(""); const [regionId, setRegionId] = useState(""); const [contributionSortDirection, setContributionSortDirection] = useState(""); @@ -36,12 +37,13 @@ export function useRoomsPage() { const filters = useMemo( () => ({ keyword: query, + owner_user_keyword: ownerUserKeyword, region_id: regionId, sort_by: contributionSortDirection ? "room_contribution" : "", sort_direction: contributionSortDirection, status, }), - [contributionSortDirection, query, regionId, status], + [contributionSortDirection, ownerUserKeyword, query, regionId, status], ); const { data = emptyData, @@ -62,6 +64,11 @@ export function useRoomsPage() { setPage(1); }; + const changeOwnerUserKeyword = (value) => { + setOwnerUserKeyword(value); + setPage(1); + }; + const changeStatus = (value) => { setStatus(value); setPage(1); @@ -79,6 +86,7 @@ export function useRoomsPage() { const resetFilters = () => { setQuery(""); + setOwnerUserKeyword(""); setStatus(""); setRegionId(""); setPage(1); @@ -184,6 +192,7 @@ export function useRoomsPage() { activeAction, activeRoom, changeQuery, + changeOwnerUserKeyword, changeRegionId, changeStatus, closeAction, @@ -197,6 +206,7 @@ export function useRoomsPage() { openDetail, openEdit, openStatus, + ownerUserKeyword, page, query, regionId, diff --git a/src/features/rooms/pages/RoomListPage.jsx b/src/features/rooms/pages/RoomListPage.jsx index 29e39c8..26ff4a0 100644 --- a/src/features/rooms/pages/RoomListPage.jsx +++ b/src/features/rooms/pages/RoomListPage.jsx @@ -84,12 +84,21 @@ export function RoomListPage() { ? { ...column, filter: createTextColumnFilter({ - placeholder: "搜索房间、房主", + placeholder: "搜索房间 ID、短号、名称、房主靓号", value: page.query, onChange: page.changeQuery, }), render: (room) => page.openDetail(room)} />, } + : column.key === "owner" + ? { + ...column, + filter: createTextColumnFilter({ + placeholder: "搜索房主 ID、短号、靓号、昵称", + value: page.ownerUserKeyword, + onChange: page.changeOwnerUserKeyword, + }), + } : column.key === "status" ? { ...column, diff --git a/src/shared/api/generated/schema.d.ts b/src/shared/api/generated/schema.d.ts index 30c7950..adac00f 100644 --- a/src/shared/api/generated/schema.d.ts +++ b/src/shared/api/generated/schema.d.ts @@ -6600,7 +6600,16 @@ export interface operations { }; listRooms: { parameters: { - query?: never; + query?: { + page?: components["parameters"]["Page"]; + page_size?: components["parameters"]["PageSize"]; + keyword?: components["parameters"]["Keyword"]; + owner_user_keyword?: string; + status?: components["parameters"]["Status"]; + region_id?: components["parameters"]["RegionId"]; + sort_by?: string; + sort_direction?: string; + }; header?: never; path?: never; cookie?: never; diff --git a/src/shared/api/types.ts b/src/shared/api/types.ts index a6b0c1b..cea383c 100644 --- a/src/shared/api/types.ts +++ b/src/shared/api/types.ts @@ -21,6 +21,8 @@ export interface PageQuery { enabled?: boolean; displayScope?: string; keyword?: string; + owner_user_keyword?: string; + ownerUserKeyword?: string; page?: number; parent_bd_user_id?: EntityId; parent_leader_user_id?: EntityId;