feat(app): initialize uni-app with routing, stores, and infrastructure

- Vue 3 + TypeScript + Pinia + SCSS
- 3-tab navigation (home, booking, profile) + 11 sub-pages
- HTTP client with JWT auth, request interceptors
- Pinia stores: user (auth, profile, memberships), studio, booking
- Utility functions: price formatting, date helpers
- WeChat login helper
- All pages as stubs ready for implementation
This commit is contained in:
richarjiang
2026-04-02 12:51:28 +08:00
parent b9d55c9e9f
commit 554fc30954
36 changed files with 5438 additions and 53 deletions

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>卡种管理 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>管理中心 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>会员管理 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>订单管理 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>时段调整 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>工作室设置 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>排课设置 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,23 @@
<template>
<view class="booking-page">
<view class="placeholder">
<text>预约课程 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.booking-page {
min-height: 100vh;
}
.placeholder {
display: flex;
align-items: center;
justify-content: center;
height: 400rpx;
color: #999;
}
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>购买会员卡 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,23 @@
<template>
<view class="home-page">
<view class="placeholder">
<text>首页 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.home-page {
min-height: 100vh;
}
.placeholder {
display: flex;
align-items: center;
justify-content: center;
height: 400rpx;
color: #999;
}
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>我的预约 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,23 @@
<template>
<view class="profile-page">
<view class="placeholder">
<text>我的 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.profile-page {
min-height: 100vh;
}
.placeholder {
display: flex;
align-items: center;
justify-content: center;
height: 400rpx;
color: #999;
}
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>个人信息 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>

View File

@@ -0,0 +1,15 @@
<template>
<view class="page">
<view class="placeholder">
<text>我的会员卡 - 待实现</text>
</view>
</view>
</template>
<script setup lang="ts">
</script>
<style lang="scss" scoped>
.page { min-height: 100vh; background: #f5f5f5; }
.placeholder { display: flex; align-items: center; justify-content: center; height: 400rpx; color: #999; }
</style>