diff --git a/packages/app/src/components/BookingConfirmPopup.vue b/packages/app/src/components/BookingConfirmPopup.vue
new file mode 100644
index 0000000..24cc2a6
--- /dev/null
+++ b/packages/app/src/components/BookingConfirmPopup.vue
@@ -0,0 +1,429 @@
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/BrandBanner.vue b/packages/app/src/components/BrandBanner.vue
new file mode 100644
index 0000000..2bee51e
--- /dev/null
+++ b/packages/app/src/components/BrandBanner.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+ {{ studioInfo?.name || '普拉提工作室' }}
+
+ 专业 · 精致 · 健康
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/CardShop.vue b/packages/app/src/components/CardShop.vue
new file mode 100644
index 0000000..773856f
--- /dev/null
+++ b/packages/app/src/components/CardShop.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ card.name }}
+
+
+
+ ¥{{ formatPrice(card.price) }}
+
+ ¥{{ formatPrice(card.originalPrice) }}
+
+
+
+
+
+ {{ truncate(card.description, 40) }}
+
+
+
+
+
+ {{ card.totalTimes }}
+ 次
+
+
+ {{ card.durationDays }}
+ 天有效
+
+
+
+
+
+ 立即购买
+
+
+
+
+
+
+
+ 暂无可购买的会员卡
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/DateSelector.vue b/packages/app/src/components/DateSelector.vue
new file mode 100644
index 0000000..c12b0ee
--- /dev/null
+++ b/packages/app/src/components/DateSelector.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+ {{ item.isToday ? '今天' : item.weekday }}
+ {{ getDayNumber(item.date) }}
+ {{ getMonthNumber(item.date) }}月
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/ProfileMenu.vue b/packages/app/src/components/ProfileMenu.vue
new file mode 100644
index 0000000..9e596b0
--- /dev/null
+++ b/packages/app/src/components/ProfileMenu.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/QuickEntry.vue b/packages/app/src/components/QuickEntry.vue
new file mode 100644
index 0000000..1e8c052
--- /dev/null
+++ b/packages/app/src/components/QuickEntry.vue
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+ 👋
+
+ 欢迎来到工作室
+ 登录后即可预约课程
+
+
+
+ 微信登录
+
+
+
+
+
+
+
+
+ ✨
+
+ 初次体验
+ 专属体验课,了解普拉提
+
+
+
+ 预约体验课
+
+
+ 新会员专享
+
+
+
+
+
+
+
+ 🧘
+
+ 一键约课
+ {{ activeMembershipLabel }}
+
+
+
+ 立即预约
+
+
+
+
+ 仅剩 {{ lowestRemainingTimes }} 次
+
+
+
+
+
+ ⚠️
+ 课次即将用完,点击续卡保持练习节奏
+ 续卡 ›
+
+
+
+
+
+
+
+ 💳
+
+ 续费会员卡
+ 您的卡已到期,续卡继续练习
+
+
+
+ 购买会员卡
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/SlotCard.vue b/packages/app/src/components/SlotCard.vue
new file mode 100644
index 0000000..34b80dd
--- /dev/null
+++ b/packages/app/src/components/SlotCard.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+ {{ slot.startTime.slice(0, 5) }} - {{ slot.endTime.slice(0, 5) }}
+
+ {{ capacityLabel }}
+
+
+
+
+
+
+
+
+ 可预约
+
+
+
+
+
+
+
+ 已预约
+
+
+ 取消
+
+
+
+
+
+
+
+ 已约满
+
+
+
+
+
+
+ 已关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/StudioInfo.vue b/packages/app/src/components/StudioInfo.vue
new file mode 100644
index 0000000..36417b2
--- /dev/null
+++ b/packages/app/src/components/StudioInfo.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+ 🏃
+ 专业普拉提工作室
+
+
+
+
+
+
+
+ 📍
+
+
+ {{ studioInfo?.address || '地址加载中…' }}
+
+
+ {{ studioInfo?.latitude ? '导航' : '复制' }}
+
+
+
+
+
+
+ 📞
+
+ {{ studioInfo?.phone || '—' }}
+ 拨打
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/TimePeriodFilter.vue b/packages/app/src/components/TimePeriodFilter.vue
new file mode 100644
index 0000000..0f7eb9c
--- /dev/null
+++ b/packages/app/src/components/TimePeriodFilter.vue
@@ -0,0 +1,92 @@
+
+
+
+ {{ tab.label }}
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/TrainingStats.vue b/packages/app/src/components/TrainingStats.vue
new file mode 100644
index 0000000..1a4c728
--- /dev/null
+++ b/packages/app/src/components/TrainingStats.vue
@@ -0,0 +1,84 @@
+
+
+
+ {{ stats?.monthBookings ?? 0 }}
+ 次
+ 本月训练
+
+
+
+
+
+ {{ stats?.monthDays ?? 0 }}
+ 天
+ 训练天数
+
+
+
+
+
+ {{ stats?.monthHours ?? 0 }}
+ 小时
+ 训练时长
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/UpcomingBooking.vue b/packages/app/src/components/UpcomingBooking.vue
new file mode 100644
index 0000000..20789ea
--- /dev/null
+++ b/packages/app/src/components/UpcomingBooking.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+ {{ getDayNumber(booking.timeSlot.date) }}
+ {{ getMonthLabel(booking.timeSlot.date) }}
+ {{ getWeekdayLabel(booking.timeSlot.date) }}
+
+
+
+
+
+
+
+ {{ booking.membership.cardType.name }}
+
+ 🕐
+
+ {{ formatTime(booking.timeSlot.startTime) }} – {{ formatTime(booking.timeSlot.endTime) }}
+
+
+
+
+
+ {{ statusLabel(booking.status) }}
+
+
+
+
+
+ ›
+
+
+
+
+
+
+
diff --git a/packages/app/src/components/UserCard.vue b/packages/app/src/components/UserCard.vue
new file mode 100644
index 0000000..01c88c6
--- /dev/null
+++ b/packages/app/src/components/UserCard.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+ Hi,欢迎来到普拉提
+ 登录后查看个人数据
+
+
+
+
+
+
+
+
+
+
+ {{ user!.nickname }}
+ {{ maskedPhone }}
+ 注册于 {{ joinedDate }}
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/pages/admin/card-types.vue b/packages/app/src/pages/admin/card-types.vue
index 670b80d..b0b3b6b 100644
--- a/packages/app/src/pages/admin/card-types.vue
+++ b/packages/app/src/pages/admin/card-types.vue
@@ -1,15 +1,635 @@
-
- 卡种管理 - 待实现
+
+
+ 共 {{ cardTypes.length }} 个卡种
+
+ + 新增卡种
+
+
+
+
+
+
+
+
+
+
+ 💳
+ 暂无卡种,点击右上角新增
+
+
+
+
+
+
+
+
+
+
+ {{ ct.name }}
+
+ ¥{{ formatPrice(ct.price) }}
+
+ ¥{{ formatPrice(ct.originalPrice) }}
+
+
+ {{ ct.description }}
+
+
+
+ {{ ct.totalTimes }}
+ 次
+
+
+ {{ ct.durationDays }}
+ 天有效
+
+
+ 排序
+ {{ ct.sortOrder }}
+
+
+
+
+
+
+
+ 编辑
+
+
+ {{ ct.isActive ? '下架' : '上架' }}
+
+
+ 删除
+
+
+
+
+
+
+
+
+ {{ editTarget ? '编辑卡种' : '新增卡种' }}
+
+
+ 卡种名称
+
+
+
+
+ 类型
+ form.typeIdx = Number(e.detail.value)">
+
+ {{ typeOptions[form.typeIdx].label }}
+ ›
+
+
+
+
+
+ 现价(元)
+
+
+
+
+ 原价(元)
+
+
+
+
+ 次数
+
+
+
+
+ 有效天数
+
+
+
+
+ 排序值
+
+
+
+
+ 描述
+
+
+
+
+
+ 取消
+
+
+ {{ submitting ? '保存中...' : '确认' }}
+
+
+
diff --git a/packages/app/src/pages/admin/index.vue b/packages/app/src/pages/admin/index.vue
index 89e04e8..eacbc4e 100644
--- a/packages/app/src/pages/admin/index.vue
+++ b/packages/app/src/pages/admin/index.vue
@@ -1,15 +1,237 @@
-
-
- 管理中心 - 待实现
+
+
+
+
+
+
+
+
+
+ {{ stat.value }}
+ {{ stat.label }}
+
+
+
+
+
+
+
+ {{ item.icon }}
+ {{ item.label }}
+ {{ item.desc }}
+
diff --git a/packages/app/src/pages/admin/members.vue b/packages/app/src/pages/admin/members.vue
index 938170b..102486c 100644
--- a/packages/app/src/pages/admin/members.vue
+++ b/packages/app/src/pages/admin/members.vue
@@ -1,15 +1,354 @@
-
- 会员管理 - 待实现
+
+
+
+
+
+
+
+
+ {{ totalMembers }}
+ 活跃会员
+
+
+ {{ totalBookings }}
+ 总预约次数
+
+
+ {{ confirmedBookings }}
+ 待上课
+
+
+
+
+
+
+
+
+
+
+ 👥
+ {{ searchQuery ? '未找到匹配会员' : '暂无预约记录' }}
+
+
+
+
+
+
+ {{ member.nickname.slice(0, 1).toUpperCase() }}
+
+
+ {{ member.nickname }}
+ {{ maskPhone(member.phone) }}
+
+
+
+ {{ member.totalBookings }}
+ 次预约
+
+
+ {{ member.confirmedBookings }}
+ 待上课
+
+
+
+
+
+
+
+ 加载更多
+
+
+ 加载中...
diff --git a/packages/app/src/pages/admin/orders.vue b/packages/app/src/pages/admin/orders.vue
index 58c4267..98213af 100644
--- a/packages/app/src/pages/admin/orders.vue
+++ b/packages/app/src/pages/admin/orders.vue
@@ -1,15 +1,349 @@
-
- 订单管理 - 待实现
+
+
+
+
+ {{ f.label }}
+
+
+
+
+
+
+
+
+
+
+
+ 📋
+ 暂无订单
+
+
+
+
+
+
+
+
+
+
+ 👤
+
+ {{ order.user.nickname }}
+ · {{ maskPhone(order.user.phone) }}
+
+
+
+
+
+
+
+ 订单号:{{ order.id.slice(0, 16) }}...
+
+
+
+
+
diff --git a/packages/app/src/pages/admin/slot-adjust.vue b/packages/app/src/pages/admin/slot-adjust.vue
index b8b31b4..9426c32 100644
--- a/packages/app/src/pages/admin/slot-adjust.vue
+++ b/packages/app/src/pages/admin/slot-adjust.vue
@@ -1,15 +1,512 @@
-
- 时段调整 - 待实现
+
+
+
+ {{ tab.label }}
+
+
+
+
+
+ 手动新增时段
+
+
+
+ 日期
+ addForm.date = e.detail.value">
+
+ {{ addForm.date }}
+ ›
+
+
+
+
+
+ 开始时间
+ addForm.startTime = e.detail.value">
+
+ {{ addForm.startTime }}
+ ›
+
+
+
+
+
+ 结束时间
+ addForm.endTime = e.detail.value">
+
+ {{ addForm.endTime }}
+ ›
+
+
+
+
+
+ 容量(人)
+
+
+
+
+
+ {{ addingSlot ? '添加中...' : '添加时段' }}
+
+
+
+
+
+
+ { closeDateFilter = e.detail.value; fetchSlotsForClose() }">
+
+ {{ closeDateFilter }}
+ ›
+
+
+
+
+
+
+
+
+
+ 🗓️
+ 该日暂无时段
+
+
+
+
+
+ {{ slot.startTime.slice(0, 5) }}–{{ slot.endTime.slice(0, 5) }}
+ 容量 {{ slot.capacity }} · 已预约 {{ slot.bookedCount }}
+
+
+ 关闭
+
+
+ 已关闭
+
+
+
+
+
+
+
+ 按模板生成时段
+ 将依据当前排课模板,生成未来指定天数的课程时段(已存在的时段不会重复生成)。
+
+
+
+ 生成天数
+
+
+
+
+
+ {{ generating ? '生成中...' : '生成时段' }}
+
diff --git a/packages/app/src/pages/admin/studio.vue b/packages/app/src/pages/admin/studio.vue
index 1e86aa5..7af2f4c 100644
--- a/packages/app/src/pages/admin/studio.vue
+++ b/packages/app/src/pages/admin/studio.vue
@@ -1,15 +1,417 @@
-
- 工作室设置 - 待实现
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ form.name.slice(0, 1) || '🏢' }}
+
+
+ {{ form.name || '工作室名称' }}
+
+
+
+
+
+ 基本信息
+
+
+ 工作室名称
+
+
+
+
+ 地址
+
+
+
+
+ 联系电话
+
+
+
+
+ Logo URL
+
+
+
+
+
+
+ 预约设置
+
+
+
+ 取消限制(小时)
+ 课前多少小时内不允许取消
+
+
+
+
+
+
+ 宣传图 URL
+ 首页横幅图片链接
+
+
+
+
+
+
+
+ 位置坐标(可选)
+
+
+ 纬度
+
+
+
+
+ 经度
+
+
+
+
+
+
+
+ {{ saving ? '保存中...' : '保存修改' }}
+
+
+
diff --git a/packages/app/src/pages/admin/week-template.vue b/packages/app/src/pages/admin/week-template.vue
index 8f8a0e7..3de0a35 100644
--- a/packages/app/src/pages/admin/week-template.vue
+++ b/packages/app/src/pages/admin/week-template.vue
@@ -1,15 +1,624 @@
-
- 排课设置 - 待实现
+
+
+ 共 {{ templates.length }} 条模板
+
+ + 新增
+
+
+
+
+
+
+
+
+
+
+ 📅
+ 暂无排课模板,点击右上角新增
+
+
+
+
+
+
+
+ 该天无课
+
+
+
+
+ {{ tpl.startTime.slice(0, 5) }}–{{ tpl.endTime.slice(0, 5) }}
+
+
+
+ 容量 {{ tpl.capacity }} 人
+ {{ tpl.isActive ? '启用中' : '已停用' }}
+
+
+
+
+ 编辑
+
+
+ {{ tpl.isActive ? '停用' : '启用' }}
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+ {{ saving ? '保存中...' : '保存全部更改' }}
+
+
+
+
+
+
+ {{ editTarget ? '编辑模板' : '新增模板' }}
+
+
+ 星期
+
+
+ {{ weekDays[form.dayOfWeek].label }}
+ ›
+
+
+
+
+
+ 开始时间
+ form.startTime = e.detail.value">
+
+ {{ form.startTime }}
+ ›
+
+
+
+
+
+ 结束时间
+ form.endTime = e.detail.value">
+
+ {{ form.endTime }}
+ ›
+
+
+
+
+
+ 容量(人)
+
+
+
+
+
+ 取消
+
+
+ {{ submitting ? '保存中...' : '确认' }}
+
+
+
diff --git a/packages/app/src/pages/booking/index.vue b/packages/app/src/pages/booking/index.vue
index bd0491e..9323a27 100644
--- a/packages/app/src/pages/booking/index.vue
+++ b/packages/app/src/pages/booking/index.vue
@@ -1,23 +1,310 @@
-
- 预约课程 - 待实现
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当日暂无可约时段
+ 请选择其他日期或时段
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/pages/card/detail.vue b/packages/app/src/pages/card/detail.vue
index 4945407..1a5fb67 100644
--- a/packages/app/src/pages/card/detail.vue
+++ b/packages/app/src/pages/card/detail.vue
@@ -1,15 +1,561 @@
-
-
- 购买会员卡 - 待实现
+
+
+
+
+
+
+
+
+
+
+
+
+ 😕
+ 会员卡信息加载失败
+
+ 点击重试
+
+
+
+
+
+
+
+
+ {{ typeLabel }}
+
+ {{ card.name }}
+
+ ¥{{ formatPrice(card.price) }}
+
+ ¥{{ formatPrice(card.originalPrice) }}
+
+
+
+
+
+
+
+
+
+
+ {{ card.totalTimes }}
+ 课时次数
+
+
+ {{ card.durationDays }}
+ 有效天数
+
+
+ {{ unitPrice }}
+ {{ card.totalTimes ? '每次单价' : '按天均价' }}
+
+
+
+
+
+
+ 课程说明
+ {{ card.description }}
+
+
+
+
+ 购买须知
+
+ •
+ 购买后立即生效,有效期 {{ card.durationDays }} 天
+
+
+ •
+ 共 {{ card.totalTimes }} 次课时,可灵活安排
+
+
+ •
+ 每次预约扣除 1 次课时
+
+
+ •
+ 到期或课时用完后自动失效
+
+
+ •
+ 支持微信支付,安全便捷
+
+
+
+
+
+
+
+ 实付金额
+ ¥{{ formatPrice(card.price) }}
+
+
+ {{ buying ? '支付中...' : '立即购买' }}
+
+
+
diff --git a/packages/app/src/pages/home/index.vue b/packages/app/src/pages/home/index.vue
index a4bfc6b..273bdfd 100644
--- a/packages/app/src/pages/home/index.vue
+++ b/packages/app/src/pages/home/index.vue
@@ -1,23 +1,108 @@
-
- 首页 - 待实现
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/pages/profile/bookings.vue b/packages/app/src/pages/profile/bookings.vue
index 25a6265..f5d3b63 100644
--- a/packages/app/src/pages/profile/bookings.vue
+++ b/packages/app/src/pages/profile/bookings.vue
@@ -1,15 +1,443 @@
-
-
- 我的预约 - 待实现
+
+
+
+
+ {{ tab.label }}
+
+
+
+
+
+
+
+
+
+
+
+ 📅
+ 暂无预约记录
+ 去预约一节课吧
+
+ 去预约
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatDateDisplay(booking.timeSlot.date) }}
+
+ {{ booking.timeSlot.startTime.slice(0, 5) }} - {{ booking.timeSlot.endTime.slice(0, 5) }}
+
+
+
+
+
+ {{ statusLabel(booking.status) }}
+
+
+
+
+
+ 💳 {{ booking.membership.cardType.name }}
+
+
+
+
+
+ 取消预约
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/pages/profile/index.vue b/packages/app/src/pages/profile/index.vue
index 52c6f07..bd04f11 100644
--- a/packages/app/src/pages/profile/index.vue
+++ b/packages/app/src/pages/profile/index.vue
@@ -1,23 +1,105 @@
-
- 我的 - 待实现
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/app/src/pages/profile/info.vue b/packages/app/src/pages/profile/info.vue
index e49d838..eba2570 100644
--- a/packages/app/src/pages/profile/info.vue
+++ b/packages/app/src/pages/profile/info.vue
@@ -1,15 +1,348 @@
-
-
- 个人信息 - 待实现
+
+
+
+
+
+
+ {{ nicknameInitial }}
+
+
+ 📷
+
+
+ 点击更换头像
+
+
+
+
+
+
+ 昵称
+
+
+
+
+
+ 手机号
+ {{ phoneDisplay }}
+
+
+
+
+ 注册时间
+ {{ joinDateDisplay }}
+
+
+
+
+
+
+ {{ saving ? '保存中...' : '保存修改' }}
+
diff --git a/packages/app/src/pages/profile/membership.vue b/packages/app/src/pages/profile/membership.vue
index 35f665d..38233c6 100644
--- a/packages/app/src/pages/profile/membership.vue
+++ b/packages/app/src/pages/profile/membership.vue
@@ -1,15 +1,437 @@
-
-
- 我的会员卡 - 待实现
+
+
+
+
+
+
+
+
+
+
+ 💳
+ 暂无会员卡
+ 购买会员卡后即可预约课程
+
+ 去购买
+
+
+
+
+
+
+
+ 有效会员卡
+
+
+
+ {{ m.cardType.name }}
+ {{ typeLabel(m.cardType.type) }}
+
+
+ 有效
+
+
+
+
+ 剩余课时
+ {{ m.remainingTimes }} 次
+
+
+ 有效期至
+ {{ m.expireDate.slice(0, 10) }}
+
+
+ 开始日期
+ {{ m.startDate.slice(0, 10) }}
+
+
+
+
+
+
+
+
+ 已使用 {{ m.cardType.totalTimes - m.remainingTimes }}/{{ m.cardType.totalTimes }} 次
+
+
+
+
+
+
+
+ 历史记录
+
+
+
+ {{ m.cardType.name }}
+ {{ typeLabel(m.cardType.type) }}
+
+
+ {{ statusLabel(m.status) }}
+
+
+
+
+ 剩余课时
+ {{ m.remainingTimes }} 次
+
+
+ 有效期至
+ {{ m.expireDate.slice(0, 10) }}
+
+
+
+
+
+
+
+
+
+
+
+ + 购买会员卡