diff --git a/src/app.config.ts b/src/app.config.ts
index ba6d663..e12e2bd 100644
--- a/src/app.config.ts
+++ b/src/app.config.ts
@@ -8,6 +8,9 @@ export default defineAppConfig({
'pages/publishBall/index',
// 'pages/mapDisplay/index',
'pages/detail/index',
+ 'pages/message/index',
+ 'pages/personal/index',
+ 'pages/orderCheck/index',
],
window: {
backgroundTextStyle: 'light',
diff --git a/src/components/GuideBar/index.scss b/src/components/GuideBar/index.scss
new file mode 100644
index 0000000..41787e9
--- /dev/null
+++ b/src/components/GuideBar/index.scss
@@ -0,0 +1,88 @@
+@use '~@/scss/images.scss' as img;
+
+.guide-bar-container {
+ padding-top: calc(60px + 20px + env(safe-area-inset-bottom));
+}
+
+.guide-bar {
+ position: fixed;
+ bottom: 0;
+ width: 100%;
+ height: calc(60px + 20px + env(safe-area-inset-bottom));
+ box-sizing: border-box;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 20px 12px env(safe-area-inset-bottom);
+
+ &-pages {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ display: inline-flex;
+ height: 60px;
+ padding: 8px 6px;
+ box-sizing: border-box;
+ flex-shrink: 0;
+ border-radius: 999px;
+ border: 1px solid rgba(255, 255, 255, 0.20);
+ background: rgba(255, 255, 255, 0.40);
+ box-shadow: 0 4px 64px 0 rgba(0, 0, 0, 0.16);
+ backdrop-filter: blur(16px);
+
+ &-item {
+ display: flex;
+ width: 76px;
+ height: 48px;
+ padding: 14px 22px;
+ box-sizing: border-box;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+ color: rgba(60, 60, 67, 0.60);
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 20px; /* 125% */
+ }
+
+ &-item-active {
+ display: flex;
+ width: 76px;
+ height: 48px;
+ padding: 14px 22px;
+ box-sizing: border-box;
+ justify-content: center;
+ align-items: center;
+ gap: 10px;
+ border-radius: 999px;
+ border: 0.5px solid rgba(0, 0, 0, 0.06);
+ background: #FFF;
+ box-shadow: 0 4px 48px 0 rgba(0, 0, 0, 0.08);
+ color: #000;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: 20px; /* 125% */
+ }
+ }
+
+ &-publish {
+ display: flex;
+ width: 60px;
+ height: 60px;
+ justify-content: center;
+ align-items: center;
+ flex-shrink: 0;
+ border-radius: 999px;
+ // border: 2px solid rgba(0, 0, 0, 0.06);
+ background: radial-gradient(75.92% 98.69% at 26.67% 8.33%, #BDFF4A 16.88%, #95F23E 54.19%, #32D838 100%);
+ box-shadow: 0 4px 48px 0 rgba(0, 0, 0, 0.08);
+ backdrop-filter: blur(16px);
+
+ &-icon {
+ width: 36px;
+ height: 36px;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/components/GuideBar/index.tsx b/src/components/GuideBar/index.tsx
new file mode 100644
index 0000000..d616759
--- /dev/null
+++ b/src/components/GuideBar/index.tsx
@@ -0,0 +1,70 @@
+import React, { useState } from 'react'
+import { View, Text, Image } from '@tarojs/components'
+import Taro from '@tarojs/taro'
+import img from '@/config/images'
+import './index.scss'
+
+export type currentPageType = 'games' | 'message' | 'personal'
+
+const GuideBar = (props) => {
+ const { currentPage } = props
+
+ const guideItems = [
+ {
+ code: 'list',
+ text: '球局',
+ },
+ {
+ code: 'message',
+ text: '消息',
+ },
+ {
+ code: 'personal',
+ text: '我的',
+ },
+ ]
+
+ const handlePublish = () => {
+ Taro.navigateTo({
+ url: '/pages/publishBall/index',
+ })
+ }
+
+ const handlePageChange = (code: string) => {
+ if (code === currentPage) {
+ return
+ }
+ Taro.navigateTo({
+ url: `/pages/${code}/index`,
+ }).then(() => {
+ Taro.pageScrollTo({
+ scrollTop: 0,
+ duration: 300,
+ })
+ })
+ }
+
+ return (
+
+
+ {/* guide area on the left */}
+
+ {guideItems.map((item) => (
+ handlePageChange(item.code)}
+ >
+ {item.text}
+
+ ))}
+
+ {/* publish button on the right */}
+
+
+
+
+
+ )
+}
+
+export default GuideBar
\ No newline at end of file
diff --git a/src/config/images.js b/src/config/images.js
index 13c69c9..61d87fe 100644
--- a/src/config/images.js
+++ b/src/config/images.js
@@ -41,4 +41,6 @@ export default {
ICON_DETAIL_COMMENT: require('@/static/detail/icon-comment.svg'),
ICON_DETAIL_COMMENT_DARK: require('@/static/detail/icon-comment-dark.svg'),
ICON_DETAIL_SHARE: require('@/static/detail/icon-share-dark.svg'),
+ ICON_GUIDE_BAR_PUBLISH: require('@/static/common/guide-bar-publish.svg'),
+ ICON_NAVIGATOR_BACK: require('@/static/common/navigator-back.svg'),
}
\ No newline at end of file
diff --git a/src/pages/detail/index.tsx b/src/pages/detail/index.tsx
index 957328b..f0e856a 100644
--- a/src/pages/detail/index.tsx
+++ b/src/pages/detail/index.tsx
@@ -142,6 +142,12 @@ function Index() {
})
}
+ const handleJoinGame = () => {
+ Taro.navigateTo({
+ url: `/pages/orderCheck/index?id=${id}`,
+ })
+ }
+
const tags = [{
name: '🕙 急招',
icon: '',
@@ -532,7 +538,7 @@ function Index() {
32
-
+
🎾
立即加入
diff --git a/src/pages/list/index.tsx b/src/pages/list/index.tsx
index 7c12b7f..220117b 100644
--- a/src/pages/list/index.tsx
+++ b/src/pages/list/index.tsx
@@ -12,11 +12,12 @@ import { useListStore } from "@/store/listStore";
import {useGlobalState} from '@/store/global'
import { View } from "@tarojs/components";
import CustomerNavBar from "@/components/CustomNavbar";
+import GuideBar from "@/components/GuideBar";
const ListPage = () => {
// 从 store 获取数据和方法
const store = useListStore() || {};
-
+
const {statusNavbarHeightInfo } = useGlobalState() || {}
// console.log("===store===", store);
// console.log('===statusNavbarHeightInfo', statusNavbarHeightInfo)
@@ -241,6 +242,8 @@ const ListPage = () => {
})}
+
+
>
);
};
diff --git a/src/pages/message/index.config.ts b/src/pages/message/index.config.ts
new file mode 100644
index 0000000..42d7ad1
--- /dev/null
+++ b/src/pages/message/index.config.ts
@@ -0,0 +1,5 @@
+export default definePageConfig({
+ navigationBarTitleText: '消息',
+ // navigationBarBackgroundColor: '#FAFAFA',
+ navigationStyle: 'custom',
+})
\ No newline at end of file
diff --git a/src/pages/message/index.scss b/src/pages/message/index.scss
new file mode 100644
index 0000000..092c41b
--- /dev/null
+++ b/src/pages/message/index.scss
@@ -0,0 +1,80 @@
+@use '~@/scss/images.scss' as img;
+
+$--Backgrounds-Primary: '#fff';
+
+.message-container {
+ width: 100%;
+ height: 100vh;
+ background: radial-gradient(227.15% 100% at 50% 0%, #EEFFDC 0%, #FFF 36.58%), var(--Backgrounds-Primary, #FFF);
+ // padding-top: 100px;
+ box-sizing: border-box;
+
+ .custom-navbar {
+ height: 56px; /* 通常与原生导航栏高度一致 */
+ display: flex;
+ align-items: center;
+ justify-content: flex-start;
+ // background-color: #fff;
+ color: #000;
+ padding-top: 44px; /* 适配状态栏 */
+ position: sticky;
+ top: 0;
+ z-index: 100;
+
+ .message-navigator {
+ position: relative;
+ left: 15px;
+ top: -2px;
+ width: 80px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+
+ .message-navigator-avatar {
+ width: 32px;
+ height: 32px;
+ }
+
+ .message-navigator-title {
+ font-size: 16px;
+ font-weight: 500;
+ color: #000;
+ }
+ }
+ }
+
+ .message-content {
+
+ .message-content-list {
+ display: flex;
+ flex-direction: column;
+ padding: 10px 15px;
+ box-sizing: border-box;
+ gap: 12px;
+
+ .message-item {
+ padding: 10px;
+ // border: 1px solid rgba(0, 0, 0, 0.1);
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
+ background-color: rgba(255, 255, 255, 0.5);
+ border-radius: 10px;
+ }
+
+ .message-item-title {
+ font-size: 16px;
+ font-weight: 500;
+ color: #000;
+ }
+
+ .message-item-content {
+ font-size: 14px;
+ color: #666;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/pages/message/index.tsx b/src/pages/message/index.tsx
new file mode 100644
index 0000000..18f4130
--- /dev/null
+++ b/src/pages/message/index.tsx
@@ -0,0 +1,43 @@
+import React from 'react'
+import { View, Text, ScrollView } from '@tarojs/components'
+import { Avatar } from '@nutui/nutui-react-taro'
+import Taro from '@tarojs/taro'
+import GuideBar from '@/components/GuideBar'
+// import img from '@/config/images'
+import './index.scss'
+
+const Personal = () => {
+ const messageList = Array(10).fill(0).map((_, index) => ({
+ id: index + 1,
+ title: `消息${index + 1}消息${index + 1}消息${index + 1}消息${index + 1}`,
+ content: Array(Math.round(Math.random() * 40)).fill(0).map((_, index) => `消息${index + 1}`).join(''),
+ }))
+
+ return (
+
+
+
+
+ 消息
+
+
+
+
+ {messageList.map((item) => (
+
+
+ {item.title}
+
+
+ {item.content}
+
+
+ ))}
+
+
+
+
+ )
+}
+
+export default Personal
\ No newline at end of file
diff --git a/src/pages/orderCheck/index.config.ts b/src/pages/orderCheck/index.config.ts
new file mode 100644
index 0000000..e8419ed
--- /dev/null
+++ b/src/pages/orderCheck/index.config.ts
@@ -0,0 +1,4 @@
+export default definePageConfig({
+ navigationBarTitleText: '订单确认',
+ navigationBarBackgroundColor: '#FAFAFA'
+})
\ No newline at end of file
diff --git a/src/pages/orderCheck/index.scss b/src/pages/orderCheck/index.scss
new file mode 100644
index 0000000..e9e7c6b
--- /dev/null
+++ b/src/pages/orderCheck/index.scss
@@ -0,0 +1 @@
+@use '~@/scss/images.scss' as img;
\ No newline at end of file
diff --git a/src/pages/orderCheck/index.tsx b/src/pages/orderCheck/index.tsx
new file mode 100644
index 0000000..8165946
--- /dev/null
+++ b/src/pages/orderCheck/index.tsx
@@ -0,0 +1,12 @@
+import React from 'react'
+import { View, Text } from '@tarojs/components'
+
+const OrderCheck = () => {
+ return (
+
+ OrderCheck
+
+ )
+}
+
+export default OrderCheck
\ No newline at end of file
diff --git a/src/pages/personal/index.config.ts b/src/pages/personal/index.config.ts
new file mode 100644
index 0000000..ca1f786
--- /dev/null
+++ b/src/pages/personal/index.config.ts
@@ -0,0 +1,5 @@
+export default definePageConfig({
+ navigationBarTitleText: '个人中心',
+ // navigationBarBackgroundColor: '#FAFAFA',
+ navigationStyle: 'custom',
+})
\ No newline at end of file
diff --git a/src/pages/personal/index.scss b/src/pages/personal/index.scss
new file mode 100644
index 0000000..c2475fe
--- /dev/null
+++ b/src/pages/personal/index.scss
@@ -0,0 +1,35 @@
+@use '~@/scss/images.scss' as img;
+
+$--Backgrounds-Primary: '#fff';
+
+.personal-container {
+ width: 100%;
+ height: 100vh;
+ background: radial-gradient(227.15% 100% at 50% 0%, #EEFFDC 0%, #FFF 36.58%), var(--Backgrounds-Primary, #FFF);
+ padding-top: 100px;
+ box-sizing: border-box;
+
+ .personal-navigator {
+ position: fixed;
+ left: 10px;
+ top: 54px;
+ width: 32px;
+ height: 32px;
+
+ .personal-navigator-back {
+ width: 100%;
+ height: 100%;
+ }
+ }
+
+ .personal-content {
+ width: 100%;
+ height: calc(100vh - 300px);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 32px;
+ font-weight: 500;
+ color: #000;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/personal/index.tsx b/src/pages/personal/index.tsx
new file mode 100644
index 0000000..042bc8e
--- /dev/null
+++ b/src/pages/personal/index.tsx
@@ -0,0 +1,31 @@
+import React from 'react'
+import { View, Text, Image } from '@tarojs/components'
+import Taro, { useRouter } from '@tarojs/taro'
+import GuideBar from '@/components/GuideBar'
+import img from '@/config/images'
+import './index.scss'
+
+const Personal = () => {
+ const { params } = useRouter()
+ const { id } = params
+
+ const handleBack = () => {
+ Taro.navigateBack()
+ }
+
+ return (
+
+ {id && (
+
+
+
+ )}
+
+ Personal
+
+
+
+ )
+}
+
+export default Personal
\ No newline at end of file
diff --git a/src/scss/images.scss b/src/scss/images.scss
index 3527d5a..28b8db1 100644
--- a/src/scss/images.scss
+++ b/src/scss/images.scss
@@ -38,6 +38,8 @@ $-images: (
'icon-detail-comment': '/detail/icon-comment.svg',
'icon-detail-comment-dark': '/detail/icon-comment-dark.svg',
'icon-detail-share': '/detail/icon-share-dark.svg',
+ 'icon-guide-bar-publish': '/common/guide-bar-publish.svg',
+ 'icon-navigator-back': '/common/navigator-back.svg',
) !default;
// 图片获取函数
diff --git a/src/static/common/guide-bar-publish.svg b/src/static/common/guide-bar-publish.svg
new file mode 100644
index 0000000..133858f
--- /dev/null
+++ b/src/static/common/guide-bar-publish.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/static/common/navigator-back.svg b/src/static/common/navigator-back.svg
new file mode 100644
index 0000000..2ac5245
--- /dev/null
+++ b/src/static/common/navigator-back.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file