Merge branch 'feat/liujie'

This commit is contained in:
2025-09-12 15:44:03 +08:00
43 changed files with 76 additions and 60 deletions

View File

@@ -57,7 +57,7 @@ npm run build:alipay # 支付宝小程序
## 页面路由
- `/pages/list/index` - 首页
- `/game_pages/list/index` - 首页
- `/pages/publish/publish` - 原发布页面
- `/pages/publishBall/publishBall` - 新的约球发布页面 ⭐
- `/pages/dynamicFormDemo/dynamicFormDemo` - 动态表单演示页面 ⭐
@@ -148,4 +148,4 @@ src/
## License
MIT
MIT

View File

@@ -24,7 +24,7 @@ export default {
// .plugin('prerender')
// .use(new Prerender({
// staticDir,
// routes: [ '/pages/list/index' ],
// routes: [ '/game_pages/list/index' ],
// postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') })
// }))
// }

View File

@@ -1,14 +1,9 @@
export default defineAppConfig({
pages: [
"pages/home/index", //中转页
"pages/login/index/index",
"pages/login/verification/index",
"pages/login/terms/index",
"pages/list/index", // 列表页
"pages/search/index", // 搜索页
"pages/searchResult/index", // 搜索结果页面
"pages/publishBall/index",
],
subPackages: [
@@ -17,14 +12,32 @@ export default defineAppConfig({
pages: [
"pages/myself/index", // 个人中心
"pages/edit/index", // 个人中心
],
},
{
root: 'game_pages',
pages: [
"list/index", // 列表页
"search/index", // 搜索页
"searchResult/index", // 搜索结果页面
"detail/index", // 球局详情页
"message/index", // 消息页
],
},
{
root: 'order_pages',
pages: [
"orderList/index", // 订单列表页
"orderDetail/index", // 订单详情页
],
},
{
root: 'other_pages',
pages: [
"message/index", // 消息页
"favorites/index", // 收藏页
"ntrp-evaluate/index", // NTRP评估页
],
},
}
],
window: {

View File

@@ -40,7 +40,10 @@ const GuideBar = (props) => {
url = "/mod_user/pages/myself/index";
}
if (code === "message") {
url = "/mod_user/message/index";
url = "/other_pages/message/index";
}
if (code === "list") {
url = "/game_pages/list/index"
}
Taro.redirectTo({
url: url,

View File

@@ -34,7 +34,7 @@ const ListCard: React.FC<ListCardProps> = ({
const handleViewDetail = () => {
console.log("id", id);
Taro.navigateTo({
url: `/mod_user/detail/index?id=${id || 1}&from=list`,
url: `/game_pages/detail/index?id=${id || 1}&from=list`,
});
};

View File

@@ -61,7 +61,7 @@ const NTRPEvaluatePopup = (props: NTRPEvaluatePopupProps, ref) => {
setVisible(false);
// TODO: 实现NTRP评估逻辑
Taro.navigateTo({
url: `/mod_user/ntrp-evaluate/index?redirect=${encodeURIComponent(getCurrentFullPath())}`,
url: `/other_pages/ntrp-evaluate/index?redirect=${encodeURIComponent(getCurrentFullPath())}`,
});
}

View File

@@ -37,7 +37,7 @@ const ListHeader = (props: IProps) => {
const handleInputClick = () => {
Taro.navigateTo({
url: "/pages/search/index",
url: "/game_pages/search/index",
});
}

View File

@@ -44,11 +44,11 @@ const ListHeader = (props: IProps) => {
const pages = Taro.getCurrentPages();
const currentPage = pages[pages.length - 1];
const currentPagePath = currentPage.route;
if (currentPagePath === "pages/searchResult/index") {
if (currentPagePath === "game_pages/searchResult/index") {
Taro.navigateBack();
} else {
Taro.navigateTo({
url: "/pages/search/index",
url: "/game_pages/search/index",
});
}
};
@@ -56,7 +56,7 @@ const ListHeader = (props: IProps) => {
// 点击logo
const handleLogoClick = () => {
Taro.redirectTo({
url: "pages/list/index", // 列表页
url: "game_pages/list/index", // 列表页
});
};

View File

@@ -167,7 +167,7 @@ const SharePopup = forwardRef(
// useShareAppMessage(() => {
// return {
// title: '分享',
// path: `/mod_user/detail/index?id=${id}&from=share`,
// path: `/game_pages/detail/index?id=${id}&from=share`,
// }
// })
// }
@@ -176,7 +176,7 @@ const SharePopup = forwardRef(
// useShareTimeline(() => {
// return {
// title: '分享',
// path: `/mod_user/detail/index?id=${id}&from=share`,
// path: `/game_pages/detail/index?id=${id}&from=share`,
// }
// })
// }
@@ -259,18 +259,18 @@ function StickyButton(props) {
) {
return {
text: "球局已结束,查看其他球局",
action: navto.bind(null, "/pages/list/index"),
action: navto.bind(null, "/game_pages/list/index"),
};
}
if (waiting_start) {
return {
text: "等待开始, 查看更多球局",
action: navto.bind(null, "/pages/list/index"),
action: navto.bind(null, "/game_pages/list/index"),
};
} else if (is_substituting) {
return {
text: "候补中,查看其他球局",
action: navto.bind(null, "/pages/list/index"),
action: navto.bind(null, "/game_pages/list/index"),
};
} else if (can_pay) {
return {
@@ -279,7 +279,7 @@ function StickyButton(props) {
const res = await OrderService.getUnpaidOrder(id);
if (res.code === 0) {
Taro.navigateTo({
url: `/mod_user/orderDetail/index?id=${res.data.order_info.order_id}`,
url: `/order_pages/orderDetail/index?id=${res.data.order_info.order_id}`,
});
}
},
@@ -1028,7 +1028,7 @@ function Index() {
const handleJoinGame = () => {
Taro.navigateTo({
url: `/mod_user/orderDetail/index?gameId=${id}`,
url: `/order_pages/orderDetail/index?gameId=${id}`,
});
};
@@ -1036,7 +1036,7 @@ function Index() {
const pages = Taro.getCurrentPages();
if (pages.length <= 1) {
Taro.redirectTo({
url: "/pages/list/index",
url: "/game_pages/list/index",
});
} else {
Taro.navigateBack();

View File

@@ -1,4 +1,4 @@
import SearchBar from "../../components/SearchBar";
import SearchBar from "@/components/SearchBar";
import FilterPopup from "@/components/FilterPopup";
import styles from "./index.module.scss";
import { useEffect } from "react";
@@ -89,7 +89,7 @@ const ListPage = () => {
console.error('更新用户位置失败:', error);
}
}
// 页面加载时获取数据
getMatchesData();
return location;
@@ -159,7 +159,7 @@ const ListPage = () => {
const handleSearchClick = () => {
Taro.navigateTo({
url: "/pages/search/index",
url: "/game_pages/search/index",
});
};

View File

@@ -101,7 +101,7 @@ const ListSearch = () => {
return;
}
Taro.navigateTo({
url: `/pages/searchResult/index`,
url: `/game_pages/searchResult/index`,
});
};

View File

@@ -130,14 +130,14 @@ const MyselfPage: React.FC = () => {
// 处理球局订单
const handle_game_orders = () => {
Taro.navigateTo({
url: "/mod_user/orderList/index",
url: "/order_pages/orderList/index",
});
};
// 处理收藏
const handle_favorites = () => {
Taro.navigateTo({
url: "/mod_user/favorites/index",
url: "/other_pages/favorites/index",
});
};

View File

@@ -105,7 +105,7 @@ const OtherUserPage: React.FC = () => {
// 处理球局详情
const handle_game_detail = (game_id: string) => {
Taro.navigateTo({
url: `/mod_user/detail/index?id=${game_id}&from=personal`,
url: `/game_pages/detail/index?id=${game_id}&from=personal`,
});
};

View File

@@ -324,7 +324,7 @@ const OrderCheck = () => {
<Button
type="warn"
onClick={() => {
Taro.redirectTo({ url: "/pages/list/index" });
Taro.redirectTo({ url: "/game_pages/list/index" });
}}
>

View File

@@ -144,7 +144,7 @@ const OrderList = () => {
function handleViewOrderDetail(orderId) {
Taro.navigateTo({
url: `/mod_user/orderDetail/index?id=${orderId}`,
url: `/order_pages/orderDetail/index?id=${orderId}`,
});
}

View File

@@ -10,13 +10,13 @@ const HomePage: React.FC = () => {
useEffect(() => {
const handleLoginRedirect = async () => {
const login_status = check_login_status();
if (login_status) {
try {
// 先获取用户信息
await fetchUserInfo();
// 用户信息获取成功后跳转到列表页
Taro.redirectTo({ url: '/pages/list/index' });
Taro.redirectTo({ url: '/game_pages/list/index' });
} catch (error) {
console.error('获取用户信息失败:', error);
// 如果获取用户信息失败,跳转到登录页

View File

@@ -47,7 +47,7 @@ const LoginPage: React.FC = () => {
if (redirect) {
Taro.redirectTo({ url: decodeURIComponent(redirect) });
} else {
Taro.redirectTo({ url: '/pages/list/index' });
Taro.redirectTo({ url: '/game_pages/list/index' });
}
}, 10);
} else {

View File

@@ -154,7 +154,7 @@ const VerificationPage: React.FC = () => {
}
setTimeout(() => {
Taro.redirectTo({
url: "/pages/list/index",
url: "/game_pages/list/index",
});
}, 200);
} else {
@@ -182,7 +182,7 @@ const VerificationPage: React.FC = () => {
if (res.code === 0) {
setTimeout(() => {
Taro.redirectTo({
url: "/pages/list/index",
url: "/game_pages/list/index",
});
}, 200);
} else {
@@ -353,7 +353,7 @@ const VerificationPage: React.FC = () => {
className="cancel_button"
onClick={() => {
Taro.redirectTo({
url: "/pages/list/index",
url: "/game_pages/list/index",
});
}}
>

View File

@@ -308,7 +308,7 @@ const PublishBall: React.FC = () => {
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
Taro.navigateTo({
// @ts-expect-error: id
url: `/mod_user/detail/index?id=${res.data.id || 1}&from=publish`,
url: `/game_pages/detail/index?id=${res.data.id || 1}&from=publish`,
});
} else {
Taro.showToast({
@@ -361,7 +361,7 @@ const PublishBall: React.FC = () => {
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
Taro.navigateTo({
// @ts-expect-error: id
url: `/mod_user/detail/index?id=${res.data?.[0].id || 1}&from=publish`,
url: `/game_pages/detail/index?id=${res.data?.[0].id || 1}&from=publish`,
});
} else {
Taro.showToast({

View File

@@ -20,13 +20,13 @@ import { useUserInfo, useUserStats, useIsLoggedIn } from '../store/userStore'
function MyComponent() {
// 获取用户信息
const userInfo = useUserInfo()
// 获取用户统计数据
const userStats = useUserStats()
// 获取登录状态
const isLoggedIn = useIsLoggedIn()
return (
<div>
<h1> {userInfo?.username}!</h1>
@@ -43,24 +43,24 @@ function MyComponent() {
import { useUserActions } from '../store/userStore'
function MyComponent() {
const {
updateUserInfo,
incrementRequestCount,
incrementMatchesCreated
const {
updateUserInfo,
incrementRequestCount,
incrementMatchesCreated
} = useUserActions()
const handleUpdateUsername = () => {
updateUserInfo('username', '新用户名')
}
const handleApiRequest = () => {
incrementRequestCount() // API 请求计数 +1
}
const handleCreateMatch = () => {
incrementMatchesCreated() // 创建比赛计数 +1
}
return (
<div>
<button onClick={handleUpdateUsername}></button>
@@ -80,17 +80,17 @@ import { useUserActions } from '../store/userStore'
function MyComponent() {
const { incrementRequestCount } = useUserActions()
const [loading, setLoading] = useState(false)
const handleSendRequest = async () => {
setLoading(true)
try {
// 模拟网络延迟
await new Promise(resolve => setTimeout(resolve, 1000))
// 更新请求计数
incrementRequestCount()
console.log('请求成功!')
} catch (error) {
console.error('请求失败:', error)
@@ -98,7 +98,7 @@ function MyComponent() {
setLoading(false)
}
}
return (
<div>
<button onClick={handleSendRequest} disabled={loading}>
@@ -179,7 +179,7 @@ interface UserStats {
## 使用示例
查看 `src/pages/list/index.tsx` 获取完整的使用示例,包括:
查看 `src/game_pages/list/index.tsx` 获取完整的使用示例,包括:
- 用户信息展示
- 统计数据实时更新
@@ -196,4 +196,4 @@ interface UserStats {
3. 添加相应的 action 函数
4. 导出便捷的 hooks如果需要
这种设计让用户状态管理既简单又强大,非常适合团队协作开发。
这种设计让用户状态管理既简单又强大,非常适合团队协作开发。