diff --git a/src/app.config.ts b/src/app.config.ts index c631e8d..5387716 100644 --- a/src/app.config.ts +++ b/src/app.config.ts @@ -1,7 +1,7 @@ export default defineAppConfig({ pages: [ "home_pages/index", //中转页 - "pages/main/index", // 主容器页面(合并三个tab) + "main_pages/index", // 主容器页面(合并三个tab) "login_pages/index/index", "login_pages/verification/index", "login_pages/terms/index", diff --git a/src/home_pages/index.tsx b/src/home_pages/index.tsx index e42b7f6..18df3cd 100644 --- a/src/home_pages/index.tsx +++ b/src/home_pages/index.tsx @@ -16,7 +16,7 @@ const HomePage: React.FC = () => { // 先获取用户信息 await fetchUserInfo(); // 用户信息获取成功后跳转到主容器页面 - Taro.redirectTo({ url: '/pages/main/index' }); + Taro.redirectTo({ url: '/main_pages/index' }); } catch (error) { console.error('获取用户信息失败:', error); // 如果获取用户信息失败,跳转到登录页 diff --git a/src/pages/main/components/ListPageContent.tsx b/src/main_pages/components/ListPageContent.tsx similarity index 94% rename from src/pages/main/components/ListPageContent.tsx rename to src/main_pages/components/ListPageContent.tsx index a2827bc..8c3b783 100644 --- a/src/pages/main/components/ListPageContent.tsx +++ b/src/main_pages/components/ListPageContent.tsx @@ -23,6 +23,7 @@ export interface ListPageContentProps { scrollToTopTrigger?: number; // 触发滚动的计数器 onDistanceFilterVisibleChange?: (visible: boolean) => void; onCityPickerVisibleChange?: (visible: boolean) => void; // 保留接口,但由主容器直接处理 + onFilterPopupVisibleChange?: (visible: boolean) => void; // 筛选弹窗显示/隐藏回调 } const ListPageContent: React.FC = ({ @@ -31,6 +32,7 @@ const ListPageContent: React.FC = ({ scrollToTopTrigger, onDistanceFilterVisibleChange, onCityPickerVisibleChange: _onCityPickerVisibleChange, + onFilterPopupVisibleChange, }) => { const store = useListStore() || {}; const { fetchUserInfo } = useUserActions(); @@ -228,9 +230,23 @@ const ListPageContent: React.FC = ({ }; const toggleShowPopup = () => { - updateListPageState({ - isShowFilterPopup: !isShowFilterPopup, - }); + const newVisible = !isShowFilterPopup; + // 先通知父组件筛选弹窗状态变化(设置 z-index) + onFilterPopupVisibleChange?.(newVisible); + // 然后更新本地状态显示/隐藏弹窗 + // 使用 setTimeout 确保 z-index 先设置,再显示弹窗 + if (newVisible) { + setTimeout(() => { + updateListPageState({ + isShowFilterPopup: newVisible, + }); + }, 50); + } else { + // 关闭时直接更新状态 + updateListPageState({ + isShowFilterPopup: newVisible, + }); + } }; const handleUpdateFilterOptions = (params: Record) => { diff --git a/src/pages/main/components/MessagePageContent.tsx b/src/main_pages/components/MessagePageContent.tsx similarity index 100% rename from src/pages/main/components/MessagePageContent.tsx rename to src/main_pages/components/MessagePageContent.tsx diff --git a/src/pages/main/components/MyselfPageContent.tsx b/src/main_pages/components/MyselfPageContent.tsx similarity index 100% rename from src/pages/main/components/MyselfPageContent.tsx rename to src/main_pages/components/MyselfPageContent.tsx diff --git a/src/pages/main/index.config.ts b/src/main_pages/index.config.ts similarity index 96% rename from src/pages/main/index.config.ts rename to src/main_pages/index.config.ts index 2f5ac1d..719c08f 100644 --- a/src/pages/main/index.config.ts +++ b/src/main_pages/index.config.ts @@ -2,4 +2,5 @@ export default definePageConfig({ navigationBarTitleText: '首页', navigationStyle: 'custom', navigationBarBackgroundColor: '#FAFAFA' - }) \ No newline at end of file + }) + diff --git a/src/pages/main/index.scss b/src/main_pages/index.scss similarity index 97% rename from src/pages/main/index.scss rename to src/main_pages/index.scss index eb0ad60..4c2c663 100644 --- a/src/pages/main/index.scss +++ b/src/main_pages/index.scss @@ -47,7 +47,7 @@ // GuideBar z-index 控制 .guide-bar-low-z-index { - z-index: 80 !important; + z-index: 0 !important; } .guide-bar-high-z-index { diff --git a/src/pages/main/index.tsx b/src/main_pages/index.tsx similarity index 93% rename from src/pages/main/index.tsx rename to src/main_pages/index.tsx index 73c0c2c..9337f12 100644 --- a/src/pages/main/index.tsx +++ b/src/main_pages/index.tsx @@ -19,6 +19,7 @@ const MainPage: React.FC = () => { const [guideBarZIndex, setGuideBarZIndex] = useState<'low' | 'high'>('high'); const [isDistanceFilterVisible, setIsDistanceFilterVisible] = useState(false); const [isCityPickerVisible, setIsCityPickerVisible] = useState(false); + const [isFilterPopupVisible, setIsFilterPopupVisible] = useState(false); const [isShowInputCustomerNavBar, setIsShowInputCustomerNavBar] = useState(false); const [listPageScrollToTopTrigger, setListPageScrollToTopTrigger] = useState(0); @@ -67,6 +68,11 @@ const MainPage: React.FC = () => { setIsCityPickerVisible(visible); }, []); + // 处理筛选弹窗显示/隐藏 + const handleFilterPopupVisibleChange = useCallback((visible: boolean) => { + setIsFilterPopupVisible(visible); + }, []); + // 处理列表页导航状态变化 const handleListNavStateChange = useCallback((state: { isShowInputCustomerNavBar?: boolean; @@ -103,12 +109,12 @@ const MainPage: React.FC = () => { useEffect(() => { if (isPublishMenuVisible) { setGuideBarZIndex('high'); - } else if (isDistanceFilterVisible || isCityPickerVisible) { + } else if (isDistanceFilterVisible || isCityPickerVisible || isFilterPopupVisible) { setGuideBarZIndex('low'); } else { setGuideBarZIndex('high'); } - }, [isPublishMenuVisible, isDistanceFilterVisible, isCityPickerVisible]); + }, [isPublishMenuVisible, isDistanceFilterVisible, isCityPickerVisible, isFilterPopupVisible]); // 渲染自定义导航栏(参考原始页面的实现) const renderCustomNavbar = () => { @@ -164,6 +170,7 @@ const MainPage: React.FC = () => { scrollToTopTrigger={listPageScrollToTopTrigger} onDistanceFilterVisibleChange={handleDistanceFilterVisibleChange} onCityPickerVisibleChange={handleCityPickerVisibleChange} + onFilterPopupVisibleChange={handleFilterPopupVisibleChange} />