添加行政区选择

This commit is contained in:
张成
2025-11-22 22:50:18 +08:00
parent 6eefcd27a9
commit 17015c0cca
11 changed files with 708 additions and 49 deletions

View File

@@ -7,7 +7,7 @@ import { useListStore } from "@/store/listStore";
import { useGlobalState } from "@/store/global";
import { View, Image, Text, ScrollView } from "@tarojs/components";
import ListContainer from "@/container/listContainer";
import DistanceQuickFilter from "@/components/DistanceQuickFilter";
import DistanceQuickFilter from "@/components/DistanceQuickFilterV2";
import { updateUserLocation } from "@/services/userService";
import { useDictionaryStore } from "@/store/dictionaryStore";
import { saveImage, navigateTo } from "@/utils";
@@ -56,8 +56,11 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
updateDistanceQuickFilter,
getCities,
getCityQrCode,
getDistricts,
area,
cityQrCode,
districts,
gamesNum, // 新增:获取球局数量
} = store;
const {
@@ -190,9 +193,10 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
useEffect(() => {
// 分批异步执行初始化操作,避免阻塞首屏渲染
// 1. 立即执行:获取城市二维码(轻量操作)
// 1. 立即执行:获取城市二维码和行政区列表(轻量操作)
getCities();
getCityQrCode();
getDistricts(); // 新增:获取行政区列表
// 2. 移除 fetchUserInfo 调用,因为父组件 main_pages/index.tsx 已经在授权成功后调用了
// 这里直接使用 store 中的用户信息即可
@@ -324,10 +328,12 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
initDictionaryData();
}, []);
const area_city = area?.at(-2) || "上海";
// 获取省份名称area 格式: ["中国", "省份"]
const province = area?.at(1) || "上海";
function renderCityQrcode() {
let item = cityQrCode.find((item) => item.city_name === area_city);
// 根据省份查找对应的二维码
let item = cityQrCode.find((item) => item.city_name === province);
if (!item) item = cityQrCode.find((item) => item.city_name === "其他");
return (
<View className={styles.cqContainer}>
@@ -362,9 +368,13 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
);
}
// 判定是否显示"暂无球局"页面
// 条件:省份不是上海 或 (已加载完成且球局数量为0)
const shouldShowNoGames = province !== "上海" ;
return (
<>
{area_city !== "上海" ? (
{shouldShowNoGames ? (
renderCityQrcode()
) : (
<View ref={scrollContextRef}>
@@ -404,10 +414,13 @@ const ListPageContent: React.FC<ListPageContentProps> = ({
cityOptions={distanceData}
quickOptions={quickFilterData}
onChange={handleDistanceOrQuickChange}
districtOptions={districts || []}
cityName="distanceFilter"
quickName="order"
districtName="district"
cityValue={distanceQuickFilter?.distanceFilter}
quickValue={distanceQuickFilter?.order}
districtValue={distanceQuickFilter?.district}
onMenuVisibleChange={handleDistanceFilterVisibleChange}
/>
</View>