From 3922409a251d6c6e7bdbc704cb940bbfffadbc18 Mon Sep 17 00:00:00 2001
From: huangzhenbao <17818024429@163.com>
Date: Tue, 3 Feb 2026 21:35:57 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/admin/ADMIN_MANAGEMENT_GUIDE.md | 594 ------
docs/admin/CRMEB_DASHBOARD_GUIDE.md | 475 -----
docs/admin/CRMEB_TO_UVUE_MIGRATION_GUIDE.md | 807 ---------
docs/admin/FRONTEND_ARCHITECTURE_ANALYSIS.md | 427 -----
docs/admin/PAGE_STRUCTURE_ANALYSIS.md | 292 ---
docs/admin/UNI_APP_X_PAGE_FIX_GUIDE.md | 1612 -----------------
layouts/admin/router/adminComponentMap.uts | 175 +-
layouts/admin/router/adminRoutes.uts | 820 +++++++--
pages/mall/admin/cms/article/list.uvue | 419 ++++-
pages/mall/admin/cms/category/list.uvue | 309 +++-
.../admin/customer-service/auto-reply.uvue | 98 -
pages/mall/admin/customer-service/config.uvue | 98 -
pages/mall/admin/customer-service/list.uvue | 97 -
.../mall/admin/customer-service/messages.uvue | 98 -
pages/mall/admin/customer-service/script.uvue | 98 -
pages/mall/admin/decoration/category.uvue | 385 ++++
pages/mall/admin/decoration/home.uvue | 725 ++++++++
pages/mall/admin/decoration/user.uvue | 566 ++++++
.../mall/admin/docs}/00_READ_ME_FIRST.md | 0
.../mall/admin/docs}/ADMIN_LAYOUT_GUIDE.md | 0
.../ADMIN_LAYOUT_IMPLEMENTATION_COMPLETE.md | 0
.../docs}/ADMIN_LAYOUT_PROGRESS_REPORT.md | 0
...DMIN_LAYOUT_TRANSFORMATION_100_COMPLETE.md | 0
.../ADMIN_LAYOUT_TRANSFORMATION_COMPLETE.md | 0
.../admin/docs}/ADMIN_MANAGEMENT_GUIDE.md | 0
.../docs}/ADMIN_PAGES_REFACTORING_PLAN.md | 0
.../mall/admin/docs}/ADMIN_PAGE_CHECKLIST.csv | 0
.../mall/admin/docs}/ADMIN_PAGE_COMPLETE.md | 0
.../docs}/ADMIN_PAGE_COMPLIANCE_CHECKLIST.md | 0
.../mall/admin/docs}/ADMIN_PAGE_INDEX.md | 0
.../docs}/ADMIN_PAGE_MODIFICATION_PLAN.md | 0
.../admin/docs}/ADMIN_PAGE_QUICK_REFERENCE.md | 0
.../mall/admin/docs}/ADMIN_PAGE_START_HERE.md | 0
.../mall/admin/docs}/ADMIN_PAGE_SUMMARY.md | 0
.../admin/docs}/ADMIN_PROJECT_FINAL_REPORT.md | 0
.../mall/admin/docs}/ADMIN_REFACTOR_INDEX.md | 0
.../admin/docs}/ADMIN_REFACTOR_PROGRESS.md | 0
.../admin/docs}/COMPONENT_SPECIFICATION.md | 0
.../mall/admin/docs}/CRMEB_DASHBOARD_GUIDE.md | 0
.../docs}/CRMEB_TO_UVUE_MIGRATION_GUIDE.md | 0
.../admin/docs}/CRMEB_UVUE_MIGRATION_GUIDE.md | 0
.../mall/admin/docs}/DELIVERY_SUMMARY.md | 0
.../admin/docs}/DESIGN_DECORATION_GUIDE.md | 0
.../docs}/DESIGN_IMPLEMENTATION_REPORT.md | 0
.../docs}/DESIGN_MODULE_UPGRADE_REPORT.md | 0
.../admin/docs}/DESIGN_MODULE_USER_GUIDE.md | 0
.../admin/docs}/DESIGN_QUICK_REFERENCE.md | 0
.../admin/docs}/ENGINEERING_BEST_PRACTICES.md | 0
.../docs}/FRONTEND_ARCHITECTURE_ANALYSIS.md | 0
.../admin/docs}/IMPLEMENTATION_ROADMAP.md | 0
.../ORDER_MENU_HIGHLIGHT_COMPLETION_REPORT.md | 0
.../admin/docs}/ORDER_MENU_HIGHLIGHT_FIX.md | 0
.../docs}/ORDER_MENU_HIGHLIGHT_QUICK_FIX.md | 0
.../mall/admin/docs}/PAGES_ROUTES.md | 0
.../admin/docs}/PAGE_STRUCTURE_ANALYSIS.md | 0
.../docs}/PAGE_STRUCTURE_SPECIFICATION.md | 0
.../admin/docs}/PROJECT_COMPLETION_REPORT.md | 0
.../mall/admin/docs}/QUICK_REFERENCE.md | 0
.../docs}/QUICK_START_NEW_DEVELOPMENT.md | 0
.../admin => pages/mall/admin/docs}/README.md | 0
.../mall/admin/docs}/REFACTOR_BEFORE_AFTER.md | 0
.../mall/admin/docs}/REFACTOR_SUMMARY.md | 0
.../admin/docs}/SERVICE_DELIVERY_CHECKLIST.md | 0
.../docs}/SERVICE_MODULE_IMPLEMENTATION.md | 0
.../admin/docs}/SERVICE_PROJECT_SUMMARY.md | 0
.../mall/admin/docs}/SERVICE_QUICK_START.md | 0
.../mall/admin/docs}/STYLE_SPECIFICATION.md | 0
.../mall/admin/docs}/SYSTEM_INFO_FIX_GUIDE.md | 0
.../admin/docs}/SYSTEM_INFO_ROOT_CAUSE.md | 0
.../admin/docs}/SYSTEM_INFO_SIDEBAR_FIX.md | 0
.../admin/docs}/UNI_APP_X_PAGE_FIX_GUIDE.md | 0
pages/mall/admin/finance/balance_record.uvue | 247 +++
pages/mall/admin/finance/balance_stats.uvue | 541 ++++++
pages/mall/admin/finance/bill.uvue | 422 +++++
pages/mall/admin/finance/capital_flow.uvue | 317 ++++
pages/mall/admin/finance/commission.uvue | 358 ++++
.../admin/finance/finance-placeholder.scss | 55 +
pages/mall/admin/finance/invoice.uvue | 394 ++++
pages/mall/admin/finance/recharge.uvue | 425 +++++
.../mall/admin/finance/transaction_stats.uvue | 836 +++++++++
pages/mall/admin/finance/withdrawal.uvue | 469 +++++
pages/mall/admin/homePage/index.uvue.bak | 483 -----
pages/mall/admin/kefu/config.uvue | 317 ++++
pages/mall/admin/kefu/feedback.uvue | 347 ++++
pages/mall/admin/kefu/list.uvue | 324 ++++
pages/mall/admin/kefu/words.uvue | 626 +++++++
pages/mall/admin/maintain/dev/config.uvue | 57 +
pages/mall/admin/marketing/coupon/list.uvue | 351 +++-
pages/mall/admin/marketing/coupon/user.uvue | 230 +++
.../admin/marketing/integral/statistic.uvue | 480 +++++
.../admin/order/aftersales-order/index.uvue | 405 ++++-
.../mall/admin/order/cashier-order/index.uvue | 391 +++-
.../order/order-configuration/index.uvue | 462 ++++-
.../admin/order/write-off-records/index.uvue | 366 +++-
pages/mall/admin/product-statistics.uvue | 65 -
.../product/product-management/edit.uvue | 347 ++++
.../product/product-management/index.uvue | 619 ++++++-
.../product-management/member-price.uvue | 68 +
.../product/product-statistics/index.uvue | 572 +++++-
pages/mall/admin/product/reply.uvue | 277 ++-
pages/mall/admin/user/group.uvue | 489 ++++-
pages/mall/admin/user/label.uvue | 483 ++++-
pages/mall/admin/user/level.uvue | 553 +++++-
pages/mall/admin/user/list.uvue | 123 +-
search_encoding.py | 25 +
105 files changed, 14758 insertions(+), 5861 deletions(-)
delete mode 100644 docs/admin/ADMIN_MANAGEMENT_GUIDE.md
delete mode 100644 docs/admin/CRMEB_DASHBOARD_GUIDE.md
delete mode 100644 docs/admin/CRMEB_TO_UVUE_MIGRATION_GUIDE.md
delete mode 100644 docs/admin/FRONTEND_ARCHITECTURE_ANALYSIS.md
delete mode 100644 docs/admin/PAGE_STRUCTURE_ANALYSIS.md
delete mode 100644 docs/admin/UNI_APP_X_PAGE_FIX_GUIDE.md
delete mode 100644 pages/mall/admin/customer-service/auto-reply.uvue
delete mode 100644 pages/mall/admin/customer-service/config.uvue
delete mode 100644 pages/mall/admin/customer-service/list.uvue
delete mode 100644 pages/mall/admin/customer-service/messages.uvue
delete mode 100644 pages/mall/admin/customer-service/script.uvue
create mode 100644 pages/mall/admin/decoration/category.uvue
create mode 100644 pages/mall/admin/decoration/home.uvue
create mode 100644 pages/mall/admin/decoration/user.uvue
rename {docs/admin => pages/mall/admin/docs}/00_READ_ME_FIRST.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_LAYOUT_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_LAYOUT_IMPLEMENTATION_COMPLETE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_LAYOUT_PROGRESS_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_LAYOUT_TRANSFORMATION_100_COMPLETE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_LAYOUT_TRANSFORMATION_COMPLETE.md (100%)
rename {docs => pages/mall/admin/docs}/ADMIN_MANAGEMENT_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGES_REFACTORING_PLAN.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_CHECKLIST.csv (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_COMPLETE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_COMPLIANCE_CHECKLIST.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_INDEX.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_MODIFICATION_PLAN.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_QUICK_REFERENCE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_START_HERE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PAGE_SUMMARY.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_PROJECT_FINAL_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_REFACTOR_INDEX.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ADMIN_REFACTOR_PROGRESS.md (100%)
rename {docs/admin => pages/mall/admin/docs}/COMPONENT_SPECIFICATION.md (100%)
rename {docs => pages/mall/admin/docs}/CRMEB_DASHBOARD_GUIDE.md (100%)
rename {docs => pages/mall/admin/docs}/CRMEB_TO_UVUE_MIGRATION_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/CRMEB_UVUE_MIGRATION_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DELIVERY_SUMMARY.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DESIGN_DECORATION_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DESIGN_IMPLEMENTATION_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DESIGN_MODULE_UPGRADE_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DESIGN_MODULE_USER_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/DESIGN_QUICK_REFERENCE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ENGINEERING_BEST_PRACTICES.md (100%)
rename {docs => pages/mall/admin/docs}/FRONTEND_ARCHITECTURE_ANALYSIS.md (100%)
rename {docs/admin => pages/mall/admin/docs}/IMPLEMENTATION_ROADMAP.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ORDER_MENU_HIGHLIGHT_COMPLETION_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ORDER_MENU_HIGHLIGHT_FIX.md (100%)
rename {docs/admin => pages/mall/admin/docs}/ORDER_MENU_HIGHLIGHT_QUICK_FIX.md (100%)
rename {docs/admin => pages/mall/admin/docs}/PAGES_ROUTES.md (100%)
rename {docs => pages/mall/admin/docs}/PAGE_STRUCTURE_ANALYSIS.md (100%)
rename {docs/admin => pages/mall/admin/docs}/PAGE_STRUCTURE_SPECIFICATION.md (100%)
rename {docs/admin => pages/mall/admin/docs}/PROJECT_COMPLETION_REPORT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/QUICK_REFERENCE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/QUICK_START_NEW_DEVELOPMENT.md (100%)
rename {docs/admin => pages/mall/admin/docs}/README.md (100%)
rename {docs/admin => pages/mall/admin/docs}/REFACTOR_BEFORE_AFTER.md (100%)
rename {docs/admin => pages/mall/admin/docs}/REFACTOR_SUMMARY.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SERVICE_DELIVERY_CHECKLIST.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SERVICE_MODULE_IMPLEMENTATION.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SERVICE_PROJECT_SUMMARY.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SERVICE_QUICK_START.md (100%)
rename {docs/admin => pages/mall/admin/docs}/STYLE_SPECIFICATION.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SYSTEM_INFO_FIX_GUIDE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SYSTEM_INFO_ROOT_CAUSE.md (100%)
rename {docs/admin => pages/mall/admin/docs}/SYSTEM_INFO_SIDEBAR_FIX.md (100%)
rename {docs => pages/mall/admin/docs}/UNI_APP_X_PAGE_FIX_GUIDE.md (100%)
create mode 100644 pages/mall/admin/finance/balance_record.uvue
create mode 100644 pages/mall/admin/finance/balance_stats.uvue
create mode 100644 pages/mall/admin/finance/bill.uvue
create mode 100644 pages/mall/admin/finance/capital_flow.uvue
create mode 100644 pages/mall/admin/finance/commission.uvue
create mode 100644 pages/mall/admin/finance/finance-placeholder.scss
create mode 100644 pages/mall/admin/finance/invoice.uvue
create mode 100644 pages/mall/admin/finance/recharge.uvue
create mode 100644 pages/mall/admin/finance/transaction_stats.uvue
create mode 100644 pages/mall/admin/finance/withdrawal.uvue
delete mode 100644 pages/mall/admin/homePage/index.uvue.bak
create mode 100644 pages/mall/admin/kefu/config.uvue
create mode 100644 pages/mall/admin/kefu/feedback.uvue
create mode 100644 pages/mall/admin/kefu/list.uvue
create mode 100644 pages/mall/admin/kefu/words.uvue
create mode 100644 pages/mall/admin/maintain/dev/config.uvue
create mode 100644 pages/mall/admin/marketing/coupon/user.uvue
create mode 100644 pages/mall/admin/marketing/integral/statistic.uvue
delete mode 100644 pages/mall/admin/product-statistics.uvue
create mode 100644 pages/mall/admin/product/product-management/edit.uvue
create mode 100644 pages/mall/admin/product/product-management/member-price.uvue
create mode 100644 search_encoding.py
diff --git a/docs/admin/ADMIN_MANAGEMENT_GUIDE.md b/docs/admin/ADMIN_MANAGEMENT_GUIDE.md
deleted file mode 100644
index ccf25259..00000000
--- a/docs/admin/ADMIN_MANAGEMENT_GUIDE.md
+++ /dev/null
@@ -1,594 +0,0 @@
-# CRMEB管理端uvue实现操作指南
-
-## 项目概述
-
-本文档详细介绍基于CRMEB商城系统管理端功能,使用uvue + Supabase技术栈重新实现的完整管理后台操作指南。
-
-## 技术架构
-
-### 前端技术栈
-- **框架**: uvue (uni-app x)
-- **状态管理**: Vue 3 Composition API
-- **UI组件**: 自定义组件 + uni-app内置组件
-- **样式**: CSS + Flex布局 + 响应式设计
-- **设计风格**: 参考CRMEB开源商城系统,采用统一的卡片布局和配色方案
-- **图标库**: iconfont字体图标库
-
-### 后端技术栈
-- **数据库**: Supabase (PostgreSQL)
-- **API**: @components/supadb 组件库
-- **认证**: Supabase Auth
-- **存储**: Supabase Storage
-- **实时功能**: Supabase Realtime
-
-## 功能模块
-
-### 1. 管理端首页 (`index.uvue`)
-
-#### 功能特性
-- **基础信息统计卡片**: 显示销售额、订单数、用户数等核心指标
-- **功能导航网格**: 快速访问各个管理模块
-- **数据可视化**: 实时统计数据展示
-
-#### 页面结构
-参考CRMEB设计风格,采用统一的卡片布局和Flex布局:
-
-```vue
-
-
-
-
-
-
-
-
- 数据统计
-
-
-
- {{ todayStats.sales }}
- 今日销售额
-
-
-
-
-
-
-
-
- 功能导航
-
-
-
-
-
-```
-
-#### 数据加载
-```typescript
-// 获取基础统计数据
-const loadBaseStats = async () => {
- const salesStats = await supa.rpc('get_sales_stats', {
- start_date: yesterday,
- end_date: today
- })
- // 更新统计数据
-}
-```
-
-### 2. 用户管理 (`user-management.uvue`)
-
-#### 核心功能
-- **用户搜索筛选**: 支持多条件组合查询
-- **用户列表展示**: 分页显示用户信息
-- **批量操作**: 导出用户、群发消息、调整余额
-- **用户状态管理**: 启用/禁用用户账户
-- **用户详情**: 查看和编辑用户信息
-
-#### 搜索功能
-```typescript
-const searchTypes = ref([
- { value: 'all', label: '全部' },
- { value: 'uid', label: 'UID' },
- { value: 'phone', label: '手机号' },
- { value: 'nickname', label: '用户昵称' }
-])
-
-const userLevels = ref([]) // 用户等级选项
-const userGroups = ref([]) // 用户分组选项
-const agentLevels = ref([]) // 分销等级选项
-```
-
-#### 用户操作
-```typescript
-// 切换用户状态
-const toggleUserStatus = async (userId: number, currentStatus: number) => {
- const newStatus = currentStatus === 1 ? 0 : 1
- await supa.from('users').update({ status: newStatus }).eq('id', userId)
-}
-
-// 批量导出用户
-const exportUsers = () => {
- // 导出逻辑
-}
-```
-
-### 3. 商品管理 (`product-management.uvue`)
-
-#### 功能特性
-- **商品列表**: 分页展示商品信息
-- **高级筛选**: 商品类型、分类、价格、库存等条件
-- **批量操作**: 批量上架/下架/删除
-- **商品状态管理**: 上架、下架、编辑
-- **商品规格**: 支持多规格商品管理
-
-#### 商品筛选
-```typescript
-const productTypes = ref([
- { value: '0', label: '普通商品' },
- { value: '1', label: '卡密商品' },
- { value: '2', label: '优惠券商品' },
- { value: '3', label: '虚拟商品' }
-])
-
-const deliveryTypes = ref([
- { value: '1', label: '快递配送' },
- { value: '2', label: '到店自提' }
-])
-```
-
-#### 商品操作
-```typescript
-// 批量上架
-const batchOnShelf = async () => {
- await supa.from('products')
- .update({ is_show: true })
- .in('id', selectedProducts.value)
-}
-
-// 删除商品
-const deleteProduct = async (productId: number) => {
- await supa.from('products')
- .update({ is_del: true })
- .eq('id', productId)
-}
-```
-
-### 4. 订单管理 (`order-management.uvue`)
-
-#### 核心功能
-- **订单类型标签页**: 全部订单、普通订单、待支付、待发货等
-- **订单搜索**: 订单号、用户名、收货人等条件
-- **订单状态管理**: 确认订单、发货、查看物流
-- **订单详情**: 完整的订单信息展示
-- **批量操作**: 批量发货、导出订单
-
-#### 订单状态
-```typescript
-const orderStatuses = ref([
- { value: '0', label: '待确认' },
- { value: '1', label: '待支付' },
- { value: '2', label: '待发货' },
- { value: '3', label: '已发货' },
- { value: '4', label: '已完成' },
- { value: '5', label: '已取消' },
- { value: '6', label: '退款中' }
-])
-```
-
-#### 订单操作
-```typescript
-// 确认订单
-const confirmOrder = async (orderId: number) => {
- await supa.from('orders').update({ status: 1 }).eq('id', orderId)
-}
-
-// 订单发货
-const confirmShip = async () => {
- await supa.from('orders').update({
- status: 3,
- ship_info: {
- express_company: shipForm.express_company,
- express_number: shipForm.express_number,
- ship_time: new Date().toISOString()
- }
- }).eq('id', shipForm.order_id)
-}
-```
-
-### 5. 财务管理 (`finance-management.uvue`)
-
-#### 功能模块
-- **财务概览**: 收入统计、账户余额、待结算金额
-- **财务明细**: 交易记录查询和筛选
-- **交易类型**: 订单收入、退款支出、提现支出等
-- **数据导出**: 支持导出财务报表
-
-#### 财务统计
-```typescript
-const overview = ref({
- today_income: '0.00',
- month_income: '0.00',
- account_balance: '0.00',
- pending_settlement: '0.00'
-})
-```
-
-#### 交易记录查询
-```typescript
-const loadRecords = async () => {
- let query = supa.from('finance_records')
- .select('*')
- .order('created_at', { ascending: false })
-
- // 筛选条件
- if (selectedType.value) {
- query = query.eq('type', selectedType.value)
- }
-
- // 分页
- const { data, count } = await query.range(from, to)
-}
-```
-
-### 6. 系统设置 (`system-settings.uvue`)
-
-#### 设置分类
-- **基础设置**: 网站名称、域名、Logo、客服电话等
-- **支付设置**: 微信支付、支付宝、余额支付配置
-- **物流设置**: 默认物流公司、运费计算方式
-- **消息设置**: 短信、邮件通知配置
-
-#### 设置保存
-```typescript
-const saveSettings = async () => {
- await supa.from('system_settings').upsert(settings.value)
-}
-```
-
-## 组件架构
-
-### 公共组件
-- **搜索表单**: 统一的搜索和筛选组件
-- **数据表格**: 列表展示和操作组件
-- **分页组件**: 统一的翻页功能
-- **弹窗组件**: 确认对话框和表单弹窗
-
-### 样式规范
-参考CRMEB设计风格,采用统一的布局和配色:
-
-```css
-/* 布局类 */
-.acea-row {
- display: flex;
- flex-direction: row;
-}
-
-.row-between-wrapper {
- justify-content: space-between;
- align-items: center;
-}
-
-/* 颜色规范 */
-.primary-theme: #fba02a; /* 橙色主题色 */
-.secondary-theme: #2291f8; /* 蓝色辅助色 */
-.success-color: #1abb1d; /* 成功色 */
-.danger-color: #ff6969; /* 危险色 */
-
-/* 卡片样式 */
-.public-wrapper {
- width: 690rpx;
- background-color: #fff;
- border-radius: 10rpx;
- margin: 20rpx auto 0 auto;
- padding: 30rpx;
- box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1);
-}
-
-/* 字体图标 */
-.iconfont {
- font-family: 'iconfont';
- color: #2291f8;
- font-size: 36rpx;
- margin-right: 13rpx;
- vertical-align: middle;
-}
-```
-
-## 数据交互
-
-### Supabase集成
-```typescript
-import supa from '@/components/supadb/aksupainstance.uts'
-
-// 查询数据
-const { data, error } = await supa
- .from('table_name')
- .select('*')
- .eq('field', value)
-
-// 插入数据
-const { data, error } = await supa
- .from('table_name')
- .insert(newData)
-
-// 更新数据
-const { data, error } = await supa
- .from('table_name')
- .update(updateData)
- .eq('id', id)
-
-// 删除数据
-const { data, error } = await supa
- .from('table_name')
- .delete()
- .eq('id', id)
-```
-
-### RPC调用
-```typescript
-// 调用存储过程
-const { data, error } = await supa.rpc('function_name', {
- param1: value1,
- param2: value2
-})
-```
-
-## 权限管理
-
-### 基于角色的访问控制
-```typescript
-// 权限检查
-const hasPermission = (permission: string) => {
- // 检查用户权限逻辑
- return userPermissions.includes(permission)
-}
-
-// 页面级权限控制
-onMounted(() => {
- if (!hasPermission('admin.user.view')) {
- uni.showToast({
- title: '无权限访问',
- icon: 'error'
- })
- uni.navigateBack()
- }
-})
-```
-
-## 性能优化
-
-### 1. 数据分页
-```typescript
-const loadData = async (page: number = 1) => {
- const pageSize = 20
- const from = (page - 1) * pageSize
- const to = from + pageSize - 1
-
- const { data } = await supa
- .from('table')
- .select('*')
- .range(from, to)
-}
-```
-
-### 2. 条件查询优化
-```typescript
-// 使用索引字段进行查询
-const { data } = await supa
- .from('orders')
- .select('*')
- .eq('status', 1) // 状态字段通常有索引
- .gte('created_at', startDate)
- .order('created_at', { ascending: false })
-```
-
-### 3. 实时数据订阅
-```typescript
-// 监听数据变化
-const subscription = supa
- .channel('table-changes')
- .on('postgres_changes', {
- event: '*',
- schema: 'public',
- table: 'orders'
- }, (payload) => {
- // 处理数据变化
- updateLocalData(payload)
- })
- .subscribe()
-```
-
-## 错误处理
-
-### 统一错误处理
-```typescript
-const handleError = (error: any) => {
- console.error('操作失败:', error)
-
- let message = '操作失败,请重试'
- if (error.message) {
- message = error.message
- }
-
- uni.showToast({
- title: message,
- icon: 'error'
- })
-}
-```
-
-### 网络请求错误
-```typescript
-try {
- const { data, error } = await supa.from('table').select('*')
- if (error) throw error
- // 处理成功的数据
-} catch (error) {
- handleError(error)
-}
-```
-
-## 响应式设计
-
-### 移动端适配
-```scss
-// 响应式断点
-@media (max-width: 750rpx) {
- .container {
- padding: 20rpx;
- }
-
- .grid {
- grid-template-columns: 1fr;
- gap: 15rpx;
- }
-
- .table-row {
- flex-wrap: wrap;
-
- .table-cell {
- min-width: 200rpx;
- margin-bottom: 10rpx;
- }
- }
-}
-```
-
-## 部署和维护
-
-### 环境配置
-```javascript
-// config/admin.js
-export default {
- supabase: {
- url: process.env.SUPABASE_URL,
- anonKey: process.env.SUPABASE_ANON_KEY,
- serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY
- },
- pagination: {
- defaultPageSize: 20,
- maxPageSize: 100
- },
- upload: {
- maxFileSize: 10 * 1024 * 1024, // 10MB
- allowedTypes: ['image/jpeg', 'image/png', 'image/webp']
- }
-}
-```
-
-### 日志记录
-```typescript
-// 操作日志记录
-const logOperation = async (action: string, details: any) => {
- await supa.from('admin_logs').insert({
- admin_id: currentAdmin.id,
- action,
- details,
- ip: getClientIP(),
- user_agent: navigator.userAgent,
- created_at: new Date().toISOString()
- })
-}
-```
-
-## 开发规范
-
-### 代码组织
-```
-pages/mall/admin/
-├── index.uvue # 管理首页
-├── user-management.uvue # 用户管理
-├── product-management.uvue # 商品管理
-├── order-management.uvue # 订单管理
-├── finance-management.uvue # 财务管理
-├── system-settings.uvue # 系统设置
-└── components/ # 公共组件
- ├── SearchForm.uvue
- ├── DataTable.uvue
- ├── Pagination.uvue
- └── Modal.uvue
-```
-
-### 命名规范
-- **文件命名**: 使用 kebab-case (user-management.uvue)
-- **变量命名**: 使用 camelCase (userList, isLoading)
-- **组件命名**: 使用 PascalCase (UserManagement)
-- **函数命名**: 使用 camelCase (loadUserList, handleSubmit)
-
-### 注释规范
-```typescript
-/**
- * 用户管理页面
- * 功能:用户列表展示、搜索筛选、状态管理等
- */
-
-// 函数注释
-/**
- * 加载用户列表
- * @param page 页码
- * @param filters 筛选条件
- */
-const loadUserList = async (page: number = 1, filters: any = {}) => {
- // 具体实现
-}
-```
-
-## 常见问题
-
-### 1. 数据加载慢
-**问题**: 列表数据加载缓慢
-**解决方案**:
-- 添加合适的数据库索引
-- 实现数据分页
-- 使用缓存机制
-- 优化查询条件
-
-### 2. 权限控制
-**问题**: 用户权限判断不准确
-**解决方案**:
-- 在路由层面进行权限检查
-- 实现基于角色的访问控制
-- 前端页面级权限验证
-
-### 3. 实时数据同步
-**问题**: 多用户同时操作数据冲突
-**解决方案**:
-- 使用 Supabase 实时订阅
-- 实现乐观更新
-- 添加数据版本控制
-
-## 更新日志
-
-### v1.0.0 (2024-01-22)
-- ✅ 完成基础管理功能实现
-- ✅ 用户管理模块
-- ✅ 商品管理模块
-- ✅ 订单管理模块
-- ✅ 财务管理模块
-- ✅ 系统设置模块
-
-### 计划功能
-- 🔄 营销管理模块
-- 🔄 数据统计图表
-- 🔄 批量操作优化
-- 🔄 移动端适配完善
-- 🔄 性能优化
-
----
-
-本文档持续更新中,如有问题请及时反馈。
\ No newline at end of file
diff --git a/docs/admin/CRMEB_DASHBOARD_GUIDE.md b/docs/admin/CRMEB_DASHBOARD_GUIDE.md
deleted file mode 100644
index 3379830a..00000000
--- a/docs/admin/CRMEB_DASHBOARD_GUIDE.md
+++ /dev/null
@@ -1,475 +0,0 @@
-# CRMEB 标准版后台 - 数据看板与用户统计页
-
-## 📋 项目概述
-
-基于 uni-app-x 自主开发的 CRMEB 风格后台管理系统,包含完整的数据看板和用户统计功能。严格遵循 CRMEB 的设计规范和布局结构,所有代码完全自主编写。
-
-## 🗂️ 目录结构
-
-```
-mall/
-├── layouts/
-│ └── admin/
-│ ├── index.uvue # 主布局组件
-│ ├── components/
-│ │ └── card.uvue # 卡片组件
-│ └── utils/
-│ └── echarts-config.uts # 图表配置
-├── pages/
-│ ├── minimal.uvue # 测试页面
-│ └── mall/
-│ └── admin/
-│ ├── index.uvue # 管理后台首页(数据看板)
-│ ├── user-management.uvue # 用户管理
-│ ├── product-management.uvue # 商品管理
-│ ├── order-management.uvue # 订单管理
-│ ├── finance-management.uvue # 财务管理
-│ ├── user-statistics.uvue # 用户统计页
-│ └── system-settings.uvue # 系统设置
-└── pages.json # 页面配置
-```
-
-## 🎨 设计规范
-
-### 布局结构
-- **24栅格系统**: 所有元素对齐,统一间距
-- **白色背景**: 主背景色 #f0f2f5
-- **卡片设计**: 轻阴影 + 圆角 + 边框
-- **响应式**: >=1200px 四卡一行;<=1200px 两卡一行;<=768px 单列
-
-### 配色方案
-```scss
-// 主色调
-$primary-color: #1890ff;
-$success-color: #52c41a;
-$warning-color: #faad14;
-$danger-color: #f5222d;
-
-// 中性色
-$text-primary: #262626;
-$text-secondary: #666;
-$text-disabled: #999;
-$border-color: #e8e8e8;
-$background: #fff;
-$page-background: #f0f2f5;
-```
-
-## 🏗️ 组件架构
-
-### AdminLayout 主布局
-
-#### 功能特性
-- **左侧侧边栏**: 深色背景,一级菜单 + 折叠功能
-- **顶部导航**: 面包屑 + 工具图标 + 用户信息
-- **多标签页**: 可关闭的页面标签
-- **页面容器**: 带滚动条的主内容区域
-
-#### 技术实现
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### Card 卡片组件
-
-#### API 接口
-```typescript
-interface CardProps {
- title?: string
- bordered?: boolean
- shadow?: string
- bodyStyle?: Record
-}
-```
-
-#### 使用示例
-```vue
-
- 卡片内容
-
-```
-
-## 📊 页面功能详解
-
-### 1. 数据看板 (Dashboard)
-
-#### 第一行:KPI 指标卡片
-```vue
-
-
-
-
-
- ¥125,680.50
-
- 5.7%
-
-
-
-
-
-
-```
-
-**数据结构**:
-```typescript
-interface KPIData {
- today: number
- yesterday: number
- monthTotal: number
- change: number // 环比百分比
-}
-```
-
-#### 第二行:订单统计图表
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### 第三行:用户分析图表
-```vue
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### 2. 用户统计页
-
-#### 筛选条件栏
-```vue
-
-
-
-
- 用户渠道:
-
-
-
-
-
- 时间范围:
-
-
- -
-
-
-
-
-
-
-
-
-
-
-```
-
-#### 指标概览卡片
-```vue
-
-
-
-
-
-
-
- {{ metric.title }}
- {{ formatNumber(metric.value) }}
-
- {{ metric.change }}%
- 较上月
-
-
-
-
-```
-
-#### 多折线趋势图
-```vue
-
-
-
-
-
-
- {{ item.name }}
-
-
-
-
-
-
-
-
-
-```
-
-## 🔧 ECharts 图表配置
-
-### 组合图表配置
-```javascript
-export const getOrderChartOption = (period) => ({
- title: { text: `订单统计 (${period})`, left: 'center' },
- tooltip: { trigger: 'axis' },
- legend: { data: ['订单金额', '订单数量'] },
- xAxis: { type: 'category', data: dateLabels },
- yAxis: [
- { type: 'value', name: '订单金额' },
- { type: 'value', name: '订单数量' }
- ],
- series: [
- {
- name: '订单金额',
- type: 'bar',
- data: amountData,
- itemStyle: { color: '#1890ff' }
- },
- {
- name: '订单数量',
- type: 'line',
- yAxisIndex: 1,
- data: countData,
- itemStyle: { color: '#52c41a' }
- }
- ]
-})
-```
-
-### 多折线图配置
-```javascript
-export const getUserStatisticsOption = () => ({
- title: { text: '用户数据趋势分析' },
- tooltip: { trigger: 'axis' },
- legend: {
- data: ['新增用户', '访客数', '浏览量', '成交用户', '付费会员']
- },
- series: [
- { name: '新增用户', type: 'line', data: newUsersData },
- { name: '访客数', type: 'line', data: visitorsData },
- { name: '浏览量', type: 'line', data: pageViewsData },
- { name: '成交用户', type: 'line', data: conversionsData },
- { name: '付费会员', type: 'line', data: vipUsersData }
- ]
-})
-```
-
-## 📱 响应式设计
-
-### 断点定义
-```scss
-// 大屏:4卡片一行
-@media screen and (min-width: 1200px) {
- .kpi-row { /* 4列布局 */ }
-}
-
-// 中屏:2卡片一行
-@media screen and (max-width: 1200px) {
- .kpi-row { /* 2列布局 */ }
-}
-
-// 小屏:单列布局
-@media screen and (max-width: 768px) {
- .kpi-row { flex-direction: column; }
- .chart-row.two-cols { flex-direction: column; }
-}
-```
-
-## 🚀 功能特性
-
-### ✅ 已实现功能
-- [x] CRMEB 风格垂直菜单布局
-- [x] 响应式 24 栅格系统
-- [x] KPI 指标卡片展示
-- [x] 订单统计组合图表
-- [x] 用户趋势分析图表
-- [x] 用户构成饼图
-- [x] 用户统计筛选功能
-- [x] 多折线趋势图表
-- [x] 完整的菜单导航
-- [x] 标签页管理
-- [x] 返回顶部功能
-
-### 🔄 可扩展功能
-- [ ] ECharts 实际集成
-- [ ] 数据实时更新
-- [ ] 图表交互功能
-- [ ] 数据导出功能
-- [ ] 更多图表类型
-
-## 📋 使用指南
-
-### 1. 页面访问
-```javascript
-// 主页面访问
-/pages/mall/admin/index // 数据看板
-/pages/mall/admin/user-statistics // 用户统计页
-
-// 菜单导航
-uni.navigateTo({
- url: '/pages/mall/admin/user-statistics'
-})
-```
-
-### 2. 数据更新
-```javascript
-// KPI 数据更新
-const salesData = ref({
- today: 125680.50,
- yesterday: 118920.30,
- monthTotal: 2857808.90,
- change: 5.7
-})
-```
-
-### 3. 图表配置
-```javascript
-import { getOrderChartOption } from '@/layouts/admin/utils/echarts-config'
-
-// 使用配置
-const option = getOrderChartOption('30days')
-```
-
-## 🎨 样式规范
-
-### 卡片样式
-```scss
-.admin-card {
- background: #fff;
- border-radius: 8rpx;
- box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06);
- border: 1rpx solid #e8e8e8;
-
- &.shadow-small { box-shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.04); }
- &.shadow-large { box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.12); }
-}
-```
-
-### 按钮样式
-```scss
-.btn-primary {
- background: #1890ff;
- color: #fff;
- border-radius: 6rpx;
- padding: 12rpx 24rpx;
-}
-
-.btn-secondary {
- background: #fff;
- color: #666;
- border: 1rpx solid #d9d9d9;
-}
-```
-
-## 📚 技术栈
-
-- **框架**: uni-app-x + Vue 3
-- **语言**: TypeScript + uvue
-- **样式**: SCSS
-- **图表**: ECharts (配置化)
-- **布局**: 24栅格系统
-- **响应式**: 移动端适配
-
-## 🔧 开发规范
-
-### 命名规范
-- **组件**: PascalCase (`AdminLayout.vue`)
-- **文件**: kebab-case (`user-statistics.uvue`)
-- **变量**: camelCase (`salesData`)
-- **常量**: UPPER_SNAKE_CASE (`API_BASE_URL`)
-
-### 代码组织
-```vue
-
-
-
-
-
-
-
-```
-
-## 🎯 项目成果
-
-✅ **完全自主开发**: 无任何源码复制,100%自主编写
-✅ **CRMEB 风格**: 严格遵循设计规范和布局结构
-✅ **完整功能**: 数据看板 + 用户统计双页面
-✅ **响应式设计**: 桌面/平板/手机全适配
-✅ **技术先进**: Vue 3 + TypeScript + 组合式API
-✅ **可维护性**: 模块化架构,易于扩展
-
----
-
-## 🚀 部署运行
-
-```bash
-# 开发环境
-npm run dev:h5
-
-# 构建生产
-npm run build:h5
-
-# 运行到小程序
-npm run dev:mp-weixin
-```
-
-访问地址:`http://localhost:5173/pages/mall/admin/index`
-
----
-
-*本项目完全自主开发,实现了CRMEB标准版后台的核心功能,为后续功能扩展奠定了坚实基础。*
\ No newline at end of file
diff --git a/docs/admin/CRMEB_TO_UVUE_MIGRATION_GUIDE.md b/docs/admin/CRMEB_TO_UVUE_MIGRATION_GUIDE.md
deleted file mode 100644
index 7d4d0909..00000000
--- a/docs/admin/CRMEB_TO_UVUE_MIGRATION_GUIDE.md
+++ /dev/null
@@ -1,807 +0,0 @@
-# CRMEB商城系统到uvue项目的重构迁移指南
-
-## 项目概述
-
-本文档基于CRMEB开源商城系统(PHP版本),指导如何将其核心功能迁移到基于uvue技术栈的项目中。后端使用`@components/supadb`组件库实现,不使用PHP技术栈。
-
-## 参考项目分析
-
-### CRMEB核心功能模块
-
-#### 1. 用户系统 (User Module)
-- **用户注册登录**:手机号验证码、微信授权登录
-- **用户资料管理**:个人信息、收货地址、会员等级
-- **用户积分系统**:积分获取、积分消费记录
-- **分销系统**:用户推广、佣金结算
-
-#### 2. 商品系统 (Product Module)
-- **商品管理**:商品信息、SKU规格、商品分类
-- **商品展示**:商品详情、商品列表、商品搜索
-- **库存管理**:商品库存、规格库存管理
-
-#### 3. 订单系统 (Order Module)
-- **购物车**:添加商品、修改数量、删除商品
-- **订单创建**:订单确认、地址选择、支付方式
-- **订单管理**:订单状态跟踪、订单取消、退款处理
-- **物流跟踪**:快递信息查询、物流状态更新
-
-#### 4. 营销活动 (Activity Module)
-- **秒杀活动**:限时抢购、库存锁定
-- **拼团活动**:团购发起、参团流程
-- **砍价活动**:好友助力、砍价进度
-- **优惠券系统**:券领取、使用规则
-- **积分商城**:积分兑换商品
-
-#### 5. 支付系统 (Payment Module)
-- **多渠道支付**:微信支付、支付宝、余额支付
-- **支付回调**:订单状态更新、支付记录
-
-#### 6. 客服系统 (Service Module)
-- **在线客服**:实时聊天、消息记录
-- **售后服务**:退换货处理、服务评价
-
-#### 7. 内容管理系统 (CMS Module)
-- **文章系统**:资讯发布、分类管理
-- **广告位管理**:首页banner、推荐位
-
-#### 8. 系统配置 (System Module)
-- **基础配置**:站点信息、支付配置、物流配置
-- **权限管理**:管理员权限、操作日志
-
-## 技术栈对比
-
-### 原CRMEB技术栈
-```
-后端: ThinkPHP 6 + MySQL + Redis
-前端: Vue2 + ElementUI + UniApp
-其他: Workerman(长连接)、队列、定时任务
-```
-
-### 目标技术栈
-```
-后端: Supabase (PostgreSQL + Auth + Storage + Edge Functions)
-前端: uvue + @components/supadb
-其他: 实时订阅、文件存储、服务器less函数
-```
-
-## 数据架构设计
-
-### Supabase数据库表结构设计
-
-#### 核心数据表
-
-##### 1. 用户表 (users)
-```sql
--- 继承Supabase auth.users表,扩展字段
-CREATE TABLE public.users (
- id UUID REFERENCES auth.users(id) PRIMARY KEY,
- phone TEXT,
- nickname TEXT,
- avatar_url TEXT,
- gender INTEGER DEFAULT 0,
- birthday DATE,
- level_id INTEGER DEFAULT 0,
- integral INTEGER DEFAULT 0,
- balance DECIMAL(10,2) DEFAULT 0,
- spread_uid INTEGER,
- spread_time TIMESTAMP WITH TIME ZONE,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 2. 商品表 (products)
-```sql
-CREATE TABLE public.products (
- id SERIAL PRIMARY KEY,
- title TEXT NOT NULL,
- description TEXT,
- images TEXT[],
- category_id INTEGER,
- brand_id INTEGER,
- price DECIMAL(10,2),
- ot_price DECIMAL(10,2),
- cost DECIMAL(10,2),
- stock INTEGER DEFAULT 0,
- sales INTEGER DEFAULT 0,
- is_show BOOLEAN DEFAULT true,
- is_del BOOLEAN DEFAULT false,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 3. 商品规格表 (product_skus)
-```sql
-CREATE TABLE public.product_skus (
- id SERIAL PRIMARY KEY,
- product_id INTEGER REFERENCES products(id),
- sku TEXT,
- price DECIMAL(10,2),
- stock INTEGER DEFAULT 0,
- image TEXT,
- attributes JSONB,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 4. 订单表 (orders)
-```sql
-CREATE TABLE public.orders (
- id SERIAL PRIMARY KEY,
- order_sn TEXT UNIQUE,
- user_id UUID REFERENCES users(id),
- total_price DECIMAL(10,2),
- pay_price DECIMAL(10,2),
- coupon_price DECIMAL(10,2),
- pay_type INTEGER DEFAULT 1, -- 1微信 2余额 3线下
- status INTEGER DEFAULT 0, -- 订单状态
- address_info JSONB,
- mark TEXT,
- paid BOOLEAN DEFAULT false,
- pay_time TIMESTAMP WITH TIME ZONE,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 5. 订单商品表 (order_items)
-```sql
-CREATE TABLE public.order_items (
- id SERIAL PRIMARY KEY,
- order_id INTEGER REFERENCES orders(id),
- product_id INTEGER REFERENCES products(id),
- sku_id INTEGER REFERENCES product_skus(id),
- product_title TEXT,
- product_image TEXT,
- sku_info JSONB,
- price DECIMAL(10,2),
- quantity INTEGER,
- total_price DECIMAL(10,2),
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 6. 购物车表 (cart)
-```sql
-CREATE TABLE public.cart (
- id SERIAL PRIMARY KEY,
- user_id UUID REFERENCES users(id),
- product_id INTEGER REFERENCES products(id),
- sku_id INTEGER REFERENCES product_skus(id),
- quantity INTEGER,
- selected BOOLEAN DEFAULT true,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
- updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 7. 优惠券表 (coupons)
-```sql
-CREATE TABLE public.coupons (
- id SERIAL PRIMARY KEY,
- title TEXT,
- type INTEGER, -- 1满减 2折扣
- value DECIMAL(10,2),
- min_price DECIMAL(10,2),
- use_start_time TIMESTAMP WITH TIME ZONE,
- use_end_time TIMESTAMP WITH TIME ZONE,
- stock INTEGER,
- receive_count INTEGER DEFAULT 0,
- is_show BOOLEAN DEFAULT true,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-##### 8. 用户优惠券表 (user_coupons)
-```sql
-CREATE TABLE public.user_coupons (
- id SERIAL PRIMARY KEY,
- user_id UUID REFERENCES users(id),
- coupon_id INTEGER REFERENCES coupons(id),
- status INTEGER DEFAULT 0, -- 0未使用 1已使用 2已过期
- use_time TIMESTAMP WITH TIME ZONE,
- created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
-);
-```
-
-## API接口设计
-
-### 使用@components/supadb实现的数据操作
-
-#### 用户相关接口
-
-##### 用户注册
-```typescript
-// 使用Supabase Auth实现
-const { data, error } = await supa.auth.signUp({
- email: 'user@example.com',
- password: 'password'
-})
-```
-
-##### 用户登录
-```typescript
-const { data, error } = await supa.auth.signInWithPassword({
- email: 'user@example.com',
- password: 'password'
-})
-```
-
-##### 获取用户信息
-```typescript
-// 使用supadb组件
-
-
-
-```
-
-##### 更新用户信息
-```typescript
-const result = await supa.from('users').update(userData).eq('id', userId)
-```
-
-#### 商品相关接口
-
-##### 获取商品列表
-```vue
-
-
-
-
-
-
-```
-
-##### 获取商品详情
-```vue
-
-
-
-```
-
-##### 商品搜索
-```vue
-
-
-
-```
-
-#### 订单相关接口
-
-##### 创建订单
-```typescript
-// 先创建订单记录
-const orderData = {
- order_sn: generateOrderSn(),
- user_id: userId,
- total_price: totalPrice,
- // ...其他字段
-}
-const { data: order } = await supa.from('orders').insert(orderData).select().single()
-
-// 然后创建订单商品记录
-const orderItems = cartItems.map(item => ({
- order_id: order.id,
- product_id: item.product_id,
- // ...其他字段
-}))
-await supa.from('order_items').insert(orderItems)
-```
-
-##### 获取订单列表
-```vue
-
-
-
-
-
-```
-
-#### 营销活动接口
-
-##### 秒杀活动
-```vue
-
-
-
-```
-
-##### 优惠券领取
-```typescript
-// 检查用户是否已领取
-const { data: existing } = await supa
- .from('user_coupons')
- .select('*')
- .eq('user_id', userId)
- .eq('coupon_id', couponId)
- .single()
-
-if (!existing) {
- await supa.from('user_coupons').insert({
- user_id: userId,
- coupon_id: couponId
- })
-}
-```
-
-## uvue前端页面重构方案
-
-### 页面结构重组
-
-#### 1. 首页 (pages/index/index.uvue)
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### 2. 商品详情页 (pages/goods/detail.uvue)
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### 3. 购物车页面 (pages/cart/index.uvue)
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-## 实时功能实现
-
-### 使用Supabase实时订阅
-
-#### 订单状态更新监听
-```typescript
-// 监听订单状态变化
-const orderSubscription = supa
- .channel('order-updates')
- .on('postgres_changes',
- {
- event: 'UPDATE',
- schema: 'public',
- table: 'orders',
- filter: `user_id=eq.${userId}`
- },
- (payload) => {
- console.log('Order updated:', payload)
- // 更新订单状态
- }
- )
- .subscribe()
-```
-
-#### 库存变化监听
-```typescript
-// 监听商品库存变化
-const stockSubscription = supa
- .channel('stock-updates')
- .on('postgres_changes',
- {
- event: 'UPDATE',
- schema: 'public',
- table: 'products'
- },
- (payload) => {
- // 更新本地商品库存
- updateLocalStock(payload.new)
- }
- )
- .subscribe()
-```
-
-## 文件存储实现
-
-### 使用Supabase Storage
-
-#### 商品图片上传
-```typescript
-const uploadProductImage = async (filePath: string, productId: number) => {
- const fileName = `product_${productId}_${Date.now()}.jpg`
- const { data, error } = await supa.storage
- .from('products')
- .upload(fileName, filePath)
-
- if (data) {
- const { data: urlData } = supa.storage
- .from('products')
- .getPublicUrl(fileName)
-
- return urlData.publicUrl
- }
-}
-```
-
-#### 用户头像上传
-```typescript
-const uploadAvatar = async (filePath: string) => {
- const fileName = `avatar_${userId}_${Date.now()}.jpg`
- const { data, error } = await supa.storage
- .from('avatars')
- .upload(fileName, filePath)
-
- if (data) {
- const { data: urlData } = supa.storage
- .from('avatars')
- .getPublicUrl(fileName)
-
- // 更新用户头像
- await supa.from('users').update({
- avatar_url: urlData.publicUrl
- }).eq('id', userId)
- }
-}
-```
-
-## 服务器端逻辑实现
-
-### 使用Supabase Edge Functions
-
-#### 订单创建函数
-```typescript
-// supabase/functions/create-order/index.ts
-import { serve } from "https://deno.land/std@0.168.0/http/server.ts"
-import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
-
-serve(async (req) => {
- const { userId, items, address } = await req.json()
-
- const supabase = createClient(
- Deno.env.get('SUPABASE_URL') ?? '',
- Deno.env.get('SUPABASE_ANON_KEY') ?? ''
- )
-
- // 生成订单号
- const orderSn = `ORDER${Date.now()}${Math.random().toString(36).substr(2, 6).toUpperCase()}`
-
- // 计算总价
- let totalPrice = 0
- for (const item of items) {
- const { data: product } = await supabase
- .from('products')
- .select('price')
- .eq('id', item.productId)
- .single()
-
- totalPrice += product.price * item.quantity
- }
-
- // 创建订单
- const { data: order, error } = await supabase
- .from('orders')
- .insert({
- order_sn: orderSn,
- user_id: userId,
- total_price: totalPrice,
- address_info: address
- })
- .select()
- .single()
-
- if (error) throw error
-
- // 创建订单商品记录
- const orderItems = items.map(item => ({
- order_id: order.id,
- product_id: item.productId,
- quantity: item.quantity,
- price: item.price,
- total_price: item.price * item.quantity
- }))
-
- const { error: itemsError } = await supabase
- .from('order_items')
- .insert(orderItems)
-
- if (itemsError) throw itemsError
-
- return new Response(
- JSON.stringify({ order }),
- { headers: { "Content-Type": "application/json" } }
- )
-})
-```
-
-#### 支付回调函数
-```typescript
-// supabase/functions/payment-callback/index.ts
-import { serve } from "https://deno.land/std@0.168.0/http/server.ts"
-import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
-
-serve(async (req) => {
- const { orderSn, paymentResult } = await req.json()
-
- const supabase = createClient(
- Deno.env.get('SUPABASE_URL') ?? '',
- Deno.env.get('SUPABASE_ANON_KEY') ?? ''
- )
-
- // 更新订单支付状态
- const { error } = await supabase
- .from('orders')
- .update({
- paid: true,
- pay_time: new Date().toISOString(),
- status: 1 // 已支付
- })
- .eq('order_sn', orderSn)
-
- if (error) throw error
-
- return new Response(
- JSON.stringify({ success: true }),
- { headers: { "Content-Type": "application/json" } }
- )
-})
-```
-
-## 组件重构对照表
-
-### CRMEB组件 → uvue组件映射
-
-| CRMEB组件 | uvue组件 | 功能说明 |
-|----------|---------|---------|
-| HomeComb | home-comb.uvue | 首页搜索组合 |
-| GoodList | product-list.uvue | 商品列表 |
-| CouponWindow | coupon-popup.uvue | 优惠券弹窗 |
-| CartList | cart-list.uvue | 购物车列表 |
-| Payment | payment-selector.uvue | 支付方式选择 |
-| AddressWindow | address-selector.uvue | 地址选择弹窗 |
-| UserEvaluation | product-review.uvue | 商品评价 |
-| ShareRedPackets | share-popup.uvue | 分享红包 |
-
-## 性能优化建议
-
-### 1. 数据缓存策略
-```typescript
-// 使用Supabase内置缓存
-const { data, error } = await supa
- .from('products')
- .select('*')
- .eq('category_id', categoryId)
- .order('sales', { ascending: false })
- .limit(20)
- // 启用缓存
- .single()
-```
-
-### 2. 图片懒加载
-```vue
-
-
-
-```
-
-### 3. 列表虚拟化
-```vue
-
-
-
-
-
-
-
-```
-
-## 部署和维护
-
-### 环境配置
-```javascript
-// config/app.js
-export default {
- supabase: {
- url: 'https://your-project.supabase.co',
- anonKey: 'your-anon-key',
- serviceRoleKey: 'your-service-role-key' // 服务端使用
- }
-}
-```
-
-### 数据库迁移
-```sql
--- 数据库初始化脚本
--- 创建表结构
--- 设置RLS策略
--- 创建索引
--- 设置触发器
-```
-
-### 监控和日志
-```typescript
-// 错误监控
-const handleError = (error) => {
- console.error('App Error:', error)
- // 上报到监控系统
-}
-
-// 性能监控
-const reportPerformance = (metrics) => {
- // 上报性能数据
-}
-```
-
-## 总结
-
-通过本重构指南,我们将CRMEB的核心功能成功迁移到基于uvue + Supabase的技术栈:
-
-1. **数据层**:使用Supabase替代MySQL + Redis
-2. **API层**:使用@components/supadb替代ThinkPHP
-3. **前端**:使用uvue替代uni-app
-4. **实时功能**:使用Supabase实时订阅
-5. **文件存储**:使用Supabase Storage
-6. **服务器逻辑**:使用Edge Functions
-
-这种架构具有以下优势:
-- **开发效率高**:减少后端开发工作
-- **维护成本低**:Serverless架构
-- **扩展性好**:支持实时功能和全球化部署
-- **安全性高**:Supabase提供完善的安全机制
-
-实际迁移时需要根据具体业务需求进行调整,并充分测试各项功能。
\ No newline at end of file
diff --git a/docs/admin/FRONTEND_ARCHITECTURE_ANALYSIS.md b/docs/admin/FRONTEND_ARCHITECTURE_ANALYSIS.md
deleted file mode 100644
index 1e8000a5..00000000
--- a/docs/admin/FRONTEND_ARCHITECTURE_ANALYSIS.md
+++ /dev/null
@@ -1,427 +0,0 @@
-# CRMEB Admin 前端架构梳理分析
-
-## 项目概述
-- **项目名称**: CRMEB Admin Template
-- **技术栈**: Vue.js + Element UI + Vue Router + Vuex
-- **项目类型**: 电商管理后台系统
-- **分析时间**: 2026-01-23
-
-## 1. 页面总览表
-
-| 路由路径 | 页面标题 | 所属端 | 是否tab/子包 | 说明 | 入口文件 |
-|---------|---------|-------|-------------|------|---------|
-| `/admin/index` | 主页 | Admin后台 | 否 | 系统首页,包含基础统计信息 | `src/pages/index/index.vue` |
-| `/admin/product/product_list` | 商品管理 | Admin后台 | 否 | 商品列表管理页面 | `src/pages/product/productList/index.vue` |
-| `/admin/product/product_classify` | 商品分类 | Admin后台 | 否 | 商品分类管理 | `src/pages/product/productClassify/index.vue` |
-| `/admin/product/add_product/:id?` | 商品添加 | Admin后台 | 否 | 添加/编辑商品 | `src/pages/product/productAdd/index.vue` |
-| `/admin/order/list` | 订单管理 | Admin后台 | 否 | 订单列表管理 | `src/pages/order/orderList/index.vue` |
-| `/admin/order/offline` | 收银订单 | Admin后台 | 否 | 线下收银订单 | `src/pages/order/offline/index.vue` |
-| `/admin/order/refund` | 售后订单 | Admin后台 | 否 | 售后退款订单 | `src/pages/order/refund/index.vue` |
-| `/admin/user/list` | 用户管理 | Admin后台 | 否 | 用户列表管理 | `src/pages/user/list/index.vue` |
-| `/admin/user/level` | 用户等级 | Admin后台 | 否 | 用户等级管理 | `src/pages/user/level/index.vue` |
-| `/admin/user/group` | 用户分组 | Admin后台 | 否 | 用户分组管理 | `src/pages/user/group/index.vue` |
-| `/admin/setting/system_config` | 系统设置 | Admin后台 | 否 | 系统基础配置 | `src/pages/setting/setSystem/index.vue` |
-| `/admin/setting/system_role/index` | 身份管理 | Admin后台 | 否 | 管理员角色管理 | `src/pages/setting/systemRole/index.vue` |
-| `/admin/setting/system_admin/index` | 管理员列表 | Admin后台 | 否 | 管理员账户管理 | `src/pages/setting/systemAdmin/index.vue` |
-| `/admin/marketing/store_combination/index` | 拼团商品 | Admin后台 | 否 | 拼团活动商品管理 | `src/pages/marketing/storeCombination/index.vue` |
-| `/admin/marketing/store_coupon_issue/index` | 优惠券 | Admin后台 | 否 | 优惠券发放管理 | `src/pages/marketing/storeCouponIssue/index.vue` |
-| `/admin/system/log` | 前端日志 | Admin后台 | 否 | 系统日志查看 | `src/pages/system/log/index.vue` |
-
-**来源**: `src/router/modules/*.js` 文件中的路由配置
-
-## 2. 页面关系树
-
-```
-CRMEB Admin 后台系统
-├── 主页 (home_index)
-│ ├── 基础信息展示 (baseInfo)
-│ ├── 快捷菜单 (gridMenu)
-│ ├── 访问统计图表 (visitChart)
-│ └── 用户统计图表 (userChart)
-├── 商品管理 (product)
-│ ├── 商品列表 (productList)
-│ │ ├── 搜索筛选区
-│ │ ├── 商品列表表格
-│ │ └── 操作按钮区
-│ ├── 商品分类 (productClassify)
-│ ├── 添加商品 (productAdd)
-│ ├── 商品评论 (productEvaluate)
-│ ├── 商品规格 (productAttr)
-│ ├── 商品参数 (paramList)
-│ └── 商品标签 (labelList)
-├── 订单管理 (order)
-│ ├── 订单列表 (orderList)
-│ ├── 收银订单 (offline)
-│ ├── 售后订单 (refund)
-│ └── 发票管理 (invoice)
-├── 用户管理 (user)
-│ ├── 用户列表 (list)
-│ │ ├── 用户搜索筛选
-│ │ ├── 用户列表表格
-│ │ └── 用户详情弹窗
-│ ├── 用户等级 (level)
-│ ├── 用户分组 (group)
-│ ├── 用户标签 (label)
-│ ├── 会员类型 (type)
-│ ├── 卡密会员 (card)
-│ ├── 会员记录 (record)
-│ └── 会员权益 (right)
-├── 系统设置 (setting)
-│ ├── 系统配置 (setSystem)
-│ ├── 身份管理 (systemRole)
-│ ├── 管理员列表 (systemAdmin)
-│ ├── 消息管理 (notification)
-│ ├── 物流配置 (logistics)
-│ ├── 短信配置 (sms)
-│ ├── 商城配置 (config)
-│ ├── 主题风格 (themeStyle)
-│ ├── 店铺装修 (devise)
-│ ├── 客服管理 (service)
-│ ├── 城市数据 (dada)
-│ ├── 运费模板 (templates)
-│ ├── 提货点管理 (store)
-│ ├── 核销员管理 (staff)
-│ └── 核销订单 (order)
-├── 营销活动 (marketing)
-│ ├── 拼团商品 (combinalist)
-│ ├── 优惠券 (storeCouponIssue)
-│ ├── 秒杀商品 (storeSeckill)
-│ ├── 积分商品 (storeIntegral)
-│ └── 砍价商品 (bargain)
-├── 财务管理 (finance)
-│ ├── 财务对账 (financeList)
-│ ├── 资金记录 (capitalFlow)
-│ ├── 佣金记录 (commissionList)
-│ ├── 提现申请 (extractList)
-│ └── 账单记录 (billList)
-├── 系统管理 (system)
-│ ├── 代码生成 (codeGeneration)
-│ ├── 文件管理 (fileList)
-│ ├── 维护管理 (maintain)
-│ └── 数据配置 (groupData)
-├── 应用管理 (app)
-│ ├── 微信菜单 (wechatMenu)
-│ ├── 微信回复 (wechatReply)
-│ └── 微信用户 (wechatUser)
-└── 统计报表 (statistic)
- ├── 产品统计 (productStatistic)
- ├── 用户统计 (userStatistic)
- ├── 订单统计 (orderStatistic)
- └── 交易统计 (transactionStatistic)
-```
-
-## 3. 页面区域-文件映射表
-
-### 3.1 主页 (home_index)
-
-| 区域名 | 对应组件/文件 | 说明 | 关键状态 | 关键接口 |
-|-------|---------------|------|---------|---------|
-| 基础信息展示区 | `src/pages/index/components/baseInfo.vue` | 显示今日/昨日数据对比和总计信息 | infoList数组 | `headerApi` (来源: `src/api/index.js`) |
-| 快捷菜单区 | `src/pages/index/components/gridMenu.vue` | 九宫格快捷入口菜单 | - | - |
-| 访问统计图表 | `src/pages/index/components/visitChart.vue` | 订单统计图表展示 | visitType, visitDate | - |
-| 用户统计图表 | `src/pages/index/components/userChart.vue` | 用户数据统计图表 | - | - |
-| 页面布局容器 | `src/pages/index/index.vue` | 主页布局容器,组合上述组件 | userInfo | `auth()` (来源: `src/api/system.js`) |
-| Vuex状态 | `src/store/module/userInfo.js` | 用户信息状态管理 | userInfo | - |
-
-**来源**: `src/pages/index/index.vue` (行7-15), `src/store/module/userInfo.js`
-
-### 3.2 商品列表页面 (product_productList)
-
-| 区域名 | 对应组件/文件 | 说明 | 关键状态 | 关键接口 |
-|-------|---------------|------|---------|---------|
-| 搜索筛选区 | 内联在页面模板中 | 商品名称、类型、分类、配送方式等筛选条件 | artFrom表单对象 | - |
-| 商品列表表格 | 内联在页面模板中 | 商品数据表格展示,包含分页 | tableData数组 | `productList()` (来源: `src/api/product.js`) |
-| 操作按钮区 | 内联在页面模板中 | 批量操作、添加商品等按钮 | - | - |
-| 页面布局容器 | `src/pages/product/productList/index.vue` | 商品管理主页面 | artFrom, tableData, loading | `productList()`, `productStatus()` (来源: `src/api/product.js`) |
-
-**来源**: `src/pages/product/productList/index.vue` (行1-50), `src/api/product.js`
-
-### 3.3 用户列表页面 (user_list)
-
-| 区域名 | 对应组件/文件 | 说明 | 关键状态 | 关键接口 |
-|-------|---------------|------|---------|---------|
-| 用户搜索筛选区 | 内联在页面模板中 | 用户昵称、等级、分组等筛选条件 | userFrom表单对象, field_key | - |
-| 用户列表表格 | 内联在页面模板中 | 用户数据表格,包含用户信息展示 | tableData数组 | `userList()` (来源: `src/api/user.js`) |
-| 用户详情弹窗 | `src/pages/user/list/handle/userDetails.vue` | 用户详细信息弹窗组件 | visible, userInfo | - |
-| 用户编辑弹窗 | `src/pages/user/list/handle/userEdit.vue` | 用户信息编辑弹窗 | visible, editForm | `userEdit()` (来源: `src/api/user.js`) |
-| 页面布局容器 | `src/pages/user/list/index.vue` | 用户管理主页面 | userFrom, tableData, collapse | `userList()`, `userLevel()`, `userGroup()` (来源: `src/api/user.js`) |
-
-**来源**: `src/pages/user/list/index.vue` (行1-100), `src/api/user.js`
-
-## 4. 文件职责清单
-
-### 4.1 Pages 目录文件职责
-
-#### 主页相关 (src/pages/index/)
-- `index.vue`: 主页容器组件,组合统计组件,处理用户认证
-- `components/baseInfo.vue`: 基础统计信息卡片展示
-- `components/gridMenu.vue`: 快捷操作菜单网格
-- `components/visitChart.vue`: 访问统计图表组件
-- `components/userChart.vue`: 用户统计图表组件
-
-#### 商品管理 (src/pages/product/)
-- `productList/index.vue`: 商品列表页面,包含搜索、筛选、表格展示
-- `productClassify/index.vue`: 商品分类管理页面
-- `productAdd/index.vue`: 商品添加/编辑页面
-- `productReply/index.vue`: 商品评论管理页面
-- `productAttr/index.vue`: 商品规格管理页面
-- `paramList/index.vue`: 商品参数管理页面
-- `labelList/index.vue`: 商品标签管理页面
-
-#### 订单管理 (src/pages/order/)
-- `orderList/index.vue`: 订单列表管理页面
-- `offline/index.vue`: 收银订单管理页面
-- `refund/index.vue`: 售后订单管理页面
-- `invoice/index.vue`: 发票管理页面
-
-#### 用户管理 (src/pages/user/)
-- `list/index.vue`: 用户列表主页面
-- `list/handle/userDetails.vue`: 用户详情弹窗组件
-- `list/handle/userEdit.vue`: 用户编辑弹窗组件
-- `list/handle/userEditForm.vue`: 用户编辑表单组件
-- `list/handle/userInfo.vue`: 用户信息展示组件
-- `list/tableExpand.vue`: 用户列表表格展开组件
-- `level/index.vue`: 用户等级管理页面
-- `group/index.vue`: 用户分组管理页面
-- `label/index.vue`: 用户标签管理页面
-
-#### 系统设置 (src/pages/setting/)
-- `setSystem/index.vue`: 系统配置主页面
-- `systemRole/index.vue`: 管理员角色管理页面
-- `systemAdmin/index.vue`: 管理员列表管理页面
-- `notification/index.vue`: 消息管理页面
-- `notification/notificationEdit.vue`: 消息编辑页面
-- `membershipLevel/index.vue`: 分销等级管理页面
-- `freight/index.vue`: 物流公司管理页面
-- `cityDada/index.vue`: 城市数据管理页面
-- `shippingTemplates/index.vue`: 运费模板管理页面
-- `storeList/index.vue`: 提货点管理页面
-- `clerkList/index.vue`: 核销员管理页面
-- `verifyOrder/index.vue`: 核销订单管理页面
-- `themeStyle/index.vue`: 主题风格设置页面
-- `devise/list.vue`: 店铺装修页面
-- `devisePage/index.vue`: 页面设计页面
-- `link.vue`: 链接管理页面
-- `storage.vue`: 存储配置页面
-- `ticket.vue`: 打印机设置页面
-- `agreement/index.vue`: 协议设置页面
-
-#### 营销活动 (src/pages/marketing/)
-- `storeCombination/index.vue`: 拼团商品管理页面
-- `storeCombination/combinaList.vue`: 拼团列表页面
-- `storeCouponIssue/index.vue`: 优惠券管理页面
-- `storeSeckill/index.vue`: 秒杀商品管理页面
-- `storeIntegral/index.vue`: 积分商品管理页面
-- `storeBargain/index.vue`: 砍价商品管理页面
-
-#### 财务管理 (src/pages/finance/)
-- `financeList/index.vue`: 财务对账页面
-- `capitalFlow/index.vue`: 资金记录页面
-- `commissionList/index.vue`: 佣金记录页面
-- `extractList/index.vue`: 提现申请页面
-- `billList/index.vue`: 账单记录页面
-
-#### 系统管理 (src/pages/system/)
-- `codeGeneration/index.vue`: 代码生成页面
-- `fileList/index.vue`: 文件管理页面
-- `maintain/index.vue`: 维护管理页面
-- `group/list.vue`: 数据配置页面
-
-#### 应用管理 (src/pages/app/)
-- `wechatMenu/index.vue`: 微信菜单管理页面
-- `wechatReply/index.vue`: 微信回复管理页面
-- `wechatUser/index.vue`: 微信用户管理页面
-
-#### 统计报表 (src/pages/statistic/)
-- `productStatistic/index.vue`: 产品统计页面
-- `userStatistic/index.vue`: 用户统计页面
-- `orderStatistic/index.vue`: 订单统计页面
-- `transactionStatistic/index.vue`: 交易统计页面
-
-### 4.2 Components 目录文件职责
-
-#### 通用组件 (src/components/)
-- `common-icon/`: 通用图标组件
-- `copyright/`: 版权信息组件
-- `Pagination/`: 分页组件
-- `parent-view/`: 父视图组件
-- `publicSearchFrom/`: 公共搜索表单组件
-- `searchFrom/`: 搜索表单组件
-- `uploadImg/`: 图片上传组件
-- `uploadPictures/`: 多图上传组件
-- `uploadVideo/`: 视频上传组件
-- `uploadVideo2/`: 视频上传组件(增强版)
-
-#### 表单组件 (src/components/from/)
-- `from/`: 通用表单组件
-
-#### 图表组件 (src/components/echarts/)
-- `echarts/`: ECharts图表基础组件
-- `echartsNew/`: 新版ECharts图表组件
-
-#### 移动端配置组件 (src/components/mobileConfig/)
-- 包含大量移动端页面配置组件
-
-#### 弹窗组件 (src/components/hotpotModal/)
-- `hotpotModal/`: 热区弹窗组件
-
-#### 编辑器组件 (src/components/wangEditor/)
-- `wangEditor/`: 富文本编辑器组件
-
-### 4.3 Store 目录文件职责
-
-#### Vuex状态管理模块 (src/store/module/)
-- `user.js`: 用户登录状态管理
-- `app.js`: 应用全局状态
-- `menus.js`: 菜单数据管理
-- `menu.js`: 当前菜单状态
-- `userInfo.js`: 用户信息管理
-- `userLevel.js`: 用户等级管理
-- `order.js`: 订单相关状态
-- `media.js`: 媒体文件管理
-- `goodSelect.js`: 商品选择状态
-- `moren.js`: 默认配置管理
-- `shopping.js`: 购物相关状态
-- `fresh.js`: 刷新状态管理
-- `kefu.js`: 客服状态管理
-- `integralOrder.js`: 积分订单管理
-- `mobildConfig.js`: 移动端配置
-- `upgrade.js`: 升级状态管理
-- `layout.js`: 布局状态管理
-- `themeConfig.js`: 主题配置
-- `routesList.js`: 路由列表
-- `tagsViewRoutes.js`: 标签页路由
-- `userInfos.js`: 用户信息扩展
-- `keepAliveNames.js`: 缓存页面名称
-
-### 4.4 API 目录文件职责
-
-#### 接口文件 (src/api/)
-- `index.js`: 首页相关接口
-- `account.js`: 账户相关接口
-- `agent.js`: 代理商相关接口
-- `app.js`: 应用相关接口
-- `cms.js`: CMS内容管理接口
-- `common.js`: 通用接口
-- `crud.js`: CRUD通用接口
-- `diy.js`: DIY装修接口
-- `export.js`: 导出相关接口
-- `finance.js`: 财务相关接口
-- `index.js`: 首页统计接口
-- `kefu.js`: 客服相关接口
-- `kefu_mobile.js`: 移动端客服接口
-- `live.js`: 直播相关接口
-- `lottery.js`: 抽奖相关接口
-- `marketing.js`: 营销活动接口
-- `membershipLevel.js`: 会员等级接口
-- `notification.js`: 消息通知接口
-- `order.js`: 订单相关接口
-- `product.js`: 商品相关接口
-- `setting.js`: 设置相关接口
-- `statistic.js`: 统计相关接口
-- `system.js`: 系统相关接口
-- `systemAdmin.js`: 管理员接口
-- `systemBackendRouting.js`: 后端路由接口
-- `systemCodeGeneration.js`: 代码生成接口
-- `systemMenus.js`: 菜单接口
-- `systemOutAccount.js`: 外部账户接口
-- `upload.js`: 上传相关接口
-- `uploadPictures.js`: 图片上传接口
-- `user.js`: 用户相关接口
-
-### 4.5 Utils 目录文件职责
-
-#### 工具函数 (src/utils/)
-- `ase.js`: AES加密工具
-- `authLapse.js`: 认证过期处理
-- `bus.js`: 事件总线
-- `city.js`: 城市数据处理
-- `componentSize.js`: 组件尺寸工具
-- `compressImg.js`: 图片压缩工具
-- `editorImg.js`: 编辑器图片处理
-- `emoji.js`: 表情符号处理
-- `Excel.js`: Excel处理工具
-- `icon.js`: 图标处理工具
-- `index.js`: 工具函数入口
-- `loading.js`: 加载状态管理
-- `modalForm.js`: 弹窗表单工具
-- `newToExcel.js`: 新版Excel导出
-- `public.js`: 公共工具函数
-- `scroll-to.js`: 滚动工具
-- `storage.js`: 本地存储工具
-- `theme.js`: 主题工具
-- `toolsValidate.js`: 表单验证工具
-- `upload.js`: 上传工具
-- `validate.js`: 数据验证工具
-- `videoCloud.js`: 视频云处理
-
-### 4.6 Styles 目录文件职责
-
-#### 样式文件 (src/theme/)
-- `app.scss`: 应用主样式
-- `base.scss`: 基础样式
-- `common/transition.scss`: 过渡动画样式
-- `dark.scss`: 暗色主题
-- `element.scss`: Element UI样式覆盖
-- `iview.scss`: iView样式覆盖
-- `index.scss`: 样式入口文件
-- `loading.scss`: 加载样式
-- `variables.scss`: 样式变量
-
-## 5. 未知/缺失信息清单
-
-### 5.1 需要补充分析的页面文件
-- `src/pages/kefu/`: 客服模块页面文件(40个文件)- 未详细分析
-- `src/pages/marketing/`: 部分营销活动页面组件 - 未完全追踪依赖关系
-- `src/pages/setting/`: 系统设置下多个子页面 - 未完全分析组件结构
-- `src/pages/system/`: 系统管理页面 - 未详细分析
-- `src/pages/app/`: 应用管理页面 - 未详细分析
-- `src/pages/statistic/`: 统计报表页面 - 未详细分析
-
-### 5.2 需要补充的组件依赖
-- `src/components/mobileConfig/`: 35个移动端配置组件 - 未分析具体职责
-- `src/components/mobileConfigRight/`: 39个右侧配置组件 - 未分析具体职责
-- `src/components/mobilePage/`: 28个移动端页面组件 - 未分析具体职责
-- `src/components/mobilePageDiy/`: 23个DIY页面组件 - 未分析具体职责
-
-### 5.3 需要补充的API接口分析
-- 大部分API文件只分析了入口,未分析具体接口函数职责
-- 缺少接口参数和返回数据结构分析
-
-### 5.4 需要补充的Store状态分析
-- 大部分store模块只分析了入口,未分析具体state/mutations/actions结构
-
-### 5.5 需要补充的Utils工具分析
-- 大部分工具文件未分析具体函数功能和使用场景
-
-## 6. 架构优化建议
-
-### 6.1 组件抽取建议
-1. **搜索筛选组件**: 将各页面的搜索筛选逻辑抽取为通用组件
-2. **数据表格组件**: 标准化列表页面的表格展示组件
-3. **弹窗表单组件**: 统一弹窗编辑表单的结构和交互
-4. **统计卡片组件**: 标准化统计信息展示组件
-
-### 6.2 Store模块重组建议
-1. **按业务域重组**: 将相关业务的状态管理集中到一起
-2. **状态规范化**: 统一state的命名和结构规范
-3. **Actions抽象**: 将通用数据操作抽象为通用actions
-
-### 6.3 API接口重组建议
-1. **按模块分组**: 将API按业务模块重新组织
-2. **接口规范化**: 统一接口命名和参数结构
-3. **错误处理统一**: 标准化API错误处理逻辑
-
-### 6.4 Utils工具优化建议
-1. **工具分类**: 按功能类型重新组织工具函数
-2. **通用工具库**: 抽取跨页面使用的通用工具
-3. **类型定义**: 为工具函数添加TypeScript类型定义
-
-### 6.5 文件组织优化建议
-1. **组件按功能分组**: 将组件按功能类型重新组织目录结构
-2. **页面组件瘦身**: 将复杂页面的逻辑抽取到composables中
-3. **样式模块化**: 将样式按组件和页面分离组织
-
----
-
-**分析说明**: 本文档基于代码静态分析生成,重点分析了页面结构、组件依赖和文件职责关系。由于项目规模较大,部分细节需要进一步深入分析。
\ No newline at end of file
diff --git a/docs/admin/PAGE_STRUCTURE_ANALYSIS.md b/docs/admin/PAGE_STRUCTURE_ANALYSIS.md
deleted file mode 100644
index 032b689e..00000000
--- a/docs/admin/PAGE_STRUCTURE_ANALYSIS.md
+++ /dev/null
@@ -1,292 +0,0 @@
-# CRMEB Admin 页面结构与流转分析
-
-## 项目概述
-- **项目**: CRMEB Admin 电商管理后台
-- **技术栈**: Vue.js + Vue Router + Element UI + Vuex
-- **路由前缀**: `/admin` (可配置)
-- **路由模式**: history
-
-## 1. 应用入口结构
-
-### 1.1 入口文件层级
-```
-main.js (应用入口)
-├── Vue实例初始化
-
-
-├── 路由器配置
-├── Vuex状态管理
-└── 全局组件/插件注册
-
-App.vue (根组件)
-├── router-view (主路由出口)
-└── Setings组件 (布局设置弹窗)
-```
-
-**源码位置**:
-- `src/main.js` (line 250-256): Vue实例创建
-- `src/App.vue` (line 3): 根路由视图
-
-## 2. 页面布局体系
-
-### 2.1 布局组件层级
-```
-LayoutMain (主布局组件)
-├── layout/index.vue (布局选择器)
-│ ├── 根据主题配置选择布局类型
-│ ├── 支持4种布局模式
-│ └── 响应式适配
-│
-├── layout/main/defaults.vue (默认布局)
-│ ├── Asides (侧边栏)
-│ ├── Headers (顶部导航栏)
-│ └── Mains (主内容区)
-│
-└── layout/component/main.vue (主内容容器)
- ├── LayoutParentView (路由视图容器)
- ├── Footers (页脚)
- ├── Links (链接页面)
- └── Iframes (内嵌页面)
-```
-
-**源码位置**:
-- `src/layout/index.vue` (line 3-8): 布局选择逻辑
-- `src/layout/main/defaults.vue` (line 2-11): 默认布局结构
-- `src/layout/component/main.vue` (line 9): 路由视图
-
-### 2.2 路由视图容器
-```
-LayoutParentView (父级路由视图)
-├── transition (页面切换动画)
-├── keep-alive (页面缓存)
-└── router-view (实际路由出口)
-```
-
-**源码位置**: `src/layout/routerView/parent.vue`
-
-## 3. 路由配置体系
-
-### 3.1 路由分类结构
-```
-路由配置 (src/router/routers.js)
-├── frameIn (主框架内路由)
-│ ├── 基础路径: /
-│ ├── 使用LayoutMain布局
-│ ├── 包含所有业务模块
-│ └── 需要权限验证
-│
-├── frameOuts (主框架外路由)
-│ ├── 登录页面
-│ ├── 客服模块
-│ ├── 特殊功能页面
-│ └── 无需权限验证
-│
-└── errorPage (错误页面)
- ├── 403/404/500错误页
- └── 通配符路由兜底
-```
-
-### 3.2 路由模块组织
-```
-src/router/modules/
-├── index.js # 首页模块
-├── product.js # 商品管理
-├── order.js # 订单管理
-├── user.js # 用户管理
-├── setting.js # 系统设置
-├── marketing.js # 营销活动
-├── finance.js # 财务管理
-├── system.js # 系统管理
-├── app.js # 应用管理
-├── statistic.js # 统计报表
-├── frameOut.js # 框架外路由
-├── crud.js # CRUD模块
-├── division.js # 部门管理
-└── agent.js # 代理商管理
-```
-
-## 4. 页面流转逻辑
-
-### 4.1 应用启动流程
-```
-应用启动
-├── main.js 初始化Vue实例
-├── 注册全局组件和插件
-├── 配置路由和状态管理
-└── 挂载到 #app 元素
-
-页面初次加载
-├── App.vue 渲染
-├── 路由器检查当前路径
-├── 匹配路由配置
-└── 渲染对应组件
-```
-
-### 4.2 登录认证流程
-```
-访问受保护页面
-├── router.beforeEach 路由守卫拦截
-├── 检查用户token
-│ ├── 有token → 验证权限
-│ └── 无token → 跳转登录页
-├── 权限验证
-│ ├── 有权限 → 允许访问
-│ └── 无权限 → 跳转403页
-└── 渲染目标页面
-```
-
-**源码位置**: `src/router/index.js` (line 116-169)
-
-### 4.3 页面导航流程
-```
-用户点击导航
-├── 触发路由变化 ($route变化)
-├── layout/index.vue 监听路由变化
-├── 更新面包屑导航
-├── 更新标签页导航
-├── LayoutParentView 处理页面切换
-│ ├── 检查keep-alive缓存
-│ ├── 执行页面切换动画
-│ └── 渲染新页面组件
-└── 滚动到页面顶部
-```
-
-### 4.4 布局切换流程
-```
-用户切换布局主题
-├── Vuex状态更新 (themeConfig)
-├── layout/index.vue 响应状态变化
-├── 根据配置选择布局组件
-├── 重新渲染布局结构
-└── 保持页面内容不变
-```
-
-## 5. 关键页面路径
-
-### 5.1 主框架内页面 (frameIn)
-| 路径 | 页面名称 | 组件位置 | 权限要求 |
-|------|---------|---------|---------|
-| `/admin/index` | 主页 | `src/pages/index/index.vue` | `admin-index-index` |
-| `/admin/product/product_list` | 商品管理 | `src/pages/product/productList/index.vue` | `admin-store-storeProuduct-index` |
-| `/admin/order/list` | 订单管理 | `src/pages/order/orderList/index.vue` | `admin-order-storeOrder-index` |
-| `/admin/user/list` | 用户管理 | `src/pages/user/list/index.vue` | `admin-user-user-index` |
-| `/admin/setting/system_config` | 系统设置 | `src/pages/setting/setSystem/index.vue` | `setting-system-config` |
-
-### 5.2 主框架外页面 (frameOut)
-| 路径 | 页面名称 | 组件位置 | 说明 |
-|------|---------|---------|------|
-| `/admin/login` | 登录页面 | `src/pages/account/login/index.vue` | 无需登录即可访问 |
-| `/kefu` | 客服管理 | `src/pages/kefu/index.vue` | 独立客服系统 |
-| `/kefu/mobile_chat` | 移动端客服 | `src/pages/kefu/mobile/index.vue` | 移动端聊天界面 |
-| `/app/upload` | 文件上传 | `src/pages/app/upload.vue` | 移动端扫码上传 |
-
-## 6. 页面缓存机制
-
-### 6.1 Keep-Alive 配置
-```javascript
-// src/layout/routerView/parent.vue
-
-
-
-```
-
-### 6.2 缓存管理
-```
-缓存页面列表
-├── 从Vuex获取 (keepAliveNames)
-├── 支持页面刷新功能
-├── 标签页关闭时清理缓存
-└── 路由切换时保持状态
-```
-
-**源码位置**: `src/store/module/keepAliveNames.js`
-
-## 7. 页面布局类型
-
-### 7.1 支持的布局模式
-```
-defaults (默认布局)
-├── 经典的左右布局
-├── 侧边栏 + 主内容区
-└── 支持固定头部
-
-classic (经典布局)
-├── 传统管理后台布局
-├── 顶部导航 + 侧边栏
-└── 适用于复杂导航
-
-transverse (横向布局)
-├── 横向菜单布局
-├── 适用于扁平化导航
-└── 节省垂直空间
-
-columns (分栏布局)
-├── 多列布局设计
-├── 适用于信息密集页面
-└── 提高空间利用率
-```
-
-**源码位置**: `src/layout/main/` 目录下对应文件
-
-## 8. 特殊页面处理
-
-### 8.1 全屏页面
-```javascript
-// 路由meta配置
-meta: {
- fullScreen: true // 启用全屏模式
-}
-```
-- 隐藏侧边栏和顶部导航
-- 适用于页面设计器等特殊场景
-
-### 8.2 内嵌页面
-```javascript
-// 路由meta配置
-meta: {
- isIframe: true, // 内嵌iframe
- isLink: true // 链接页面
-}
-```
-- 支持iframe内嵌外部页面
-- 支持直接跳转外部链接
-
-### 8.3 标签页固定
-```javascript
-// 路由meta配置
-meta: {
- isAffix: true // 固定标签页
-}
-```
-- 标签页不可关闭
-- 通常用于首页等重要页面
-
-## 9. 响应式适配
-
-### 9.1 移动端适配
-```
-屏幕宽度检测
-├── < 600px → Mobile模式
-├── 600-992px → Tablet模式
-├── > 992px → Desktop模式
-
-布局自适应
-├── 移动端隐藏侧边栏
-├── 自动切换到单列布局
-└── 调整组件尺寸
-```
-
-**源码位置**: `src/App.vue` (line 33-49)
-
-## 10. 总结
-
-CRMEB Admin的页面结构采用了典型的管理后台架构:
-
-1. **分层设计**: 入口层 → 布局层 → 路由层 → 页面层
-2. **模块化组织**: 路由按业务模块拆分,便于维护
-3. **灵活布局**: 支持多种布局模式,适应不同使用场景
-4. **权限控制**: 基于路由的权限验证体系
-5. **缓存优化**: 智能的页面缓存机制提升用户体验
-6. **响应式适配**: 支持多终端访问
-
-这种架构设计使得系统具有良好的可扩展性和维护性,同时提供了丰富的定制化选项。
\ No newline at end of file
diff --git a/docs/admin/UNI_APP_X_PAGE_FIX_GUIDE.md b/docs/admin/UNI_APP_X_PAGE_FIX_GUIDE.md
deleted file mode 100644
index 8815fbed..00000000
--- a/docs/admin/UNI_APP_X_PAGE_FIX_GUIDE.md
+++ /dev/null
@@ -1,1612 +0,0 @@
-# uni-app-x 页面修复指南
-
-## 📋 文档概述
-
-本文档总结了 uni-app-x 项目中页面配置和编译错误的完整修复流程,旨在为后续开发提供标准化的解决方案和最佳实践。
-
-## 🔍 问题根源分析
-
-### 1. 初始错误现象
-
-```
-[plugin:uni:h5-pages-json] 页面"minimal"不存在,请确保填写的页面路径不包含文件后缀,且必须与真实的文件路径大小写保持一致。
-```
-
-```
-SyntaxError: The requested module '.../vue.runtime.esm.js' does not provide an export named 'onLoad'
-```
-
-### 2. 根本原因总结
-
-#### **原因一:pages.json 路径配置错误**
-
-- **错误格式**: `"path": "pages/minimal"` (主页面缺少完整路径)
-- **错误格式**: `"path": "pages/mall/admin/index"` (主页面错误包含完整路径)
-- **错误格式**: 子包路径配置不完整
-
-#### **原因二:AdminLayout 组件语法错误**
-
-- **重复闭合标签**: ` 标签 -->
-
-
-
-
-
-```
-
-#### **步骤 2.2:修复生命周期导入**
-
-```javascript
-// ❌ 错误:从 Vue 导入 uni-app 生命周期
-import { ref, computed, onLoad } from "vue";
-
-// ✅ 正确:uni-app-x 生命周期全局可用
-import { ref, computed } from "vue";
-
-// 在组件中直接使用
-onLoad(() => {
- activeMenu.value = props.currentPage;
-});
-```
-
-#### **步骤 2.3:验证组件结构**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### **阶段三:页面配置恢复**
-
-#### **步骤 3.1:恢复主页面配置**
-
-```json
-{
- "pages": [
- {
- "path": "pages/minimal",
- "style": {
- "navigationBarTitleText": "最小测试"
- }
- },
- {
- "path": "pages/mall/admin/index",
- "style": {
- "navigationBarTitleText": "管理后台",
- "navigationStyle": "custom"
- }
- }
- ]
-}
-```
-
-#### **步骤 3.2:恢复子包配置**
-
-```json
-{
- "subPackages": [
- {
- "root": "pages/mall",
- "pages": [
- {
- "path": "admin/user-management",
- "style": {
- "navigationBarTitleText": "用户管理",
- "navigationStyle": "custom"
- }
- }
- // ... 其他页面
- ]
- }
- ]
-}
-```
-
-#### **步骤 3.3:验证完整配置**
-
-```json
-{
- "pages": [
- {
- "path": "pages/minimal",
- "style": { "navigationBarTitleText": "最小测试" }
- },
- {
- "path": "pages/mall/admin/index",
- "style": {
- "navigationBarTitleText": "管理后台",
- "navigationStyle": "custom"
- }
- }
- ],
- "subPackages": [
- {
- "root": "pages/mall",
- "pages": [
- {
- "path": "admin/user-management",
- "style": {
- "navigationBarTitleText": "用户管理",
- "navigationStyle": "custom"
- }
- },
- {
- "path": "admin/product-management",
- "style": {
- "navigationBarTitleText": "商品管理",
- "navigationStyle": "custom"
- }
- },
- {
- "path": "admin/order-management",
- "style": {
- "navigationBarTitleText": "订单管理",
- "navigationStyle": "custom"
- }
- },
- {
- "path": "admin/finance-management",
- "style": {
- "navigationBarTitleText": "财务管理",
- "navigationStyle": "custom"
- }
- },
- {
- "path": "admin/system-settings",
- "style": {
- "navigationBarTitleText": "系统设置",
- "navigationStyle": "custom"
- }
- }
- ]
- }
- ],
- "globalStyle": {
- "navigationBarTextStyle": "black",
- "navigationBarTitleText": "mall",
- "navigationBarBackgroundColor": "#FFFFFF",
- "backgroundColor": "#F8F8F8"
- }
-}
-```
-
-### **阶段四:路径格式统一**
-
-### **阶段五:特殊字符处理**
-
-#### **步骤 5.1:移除问题 Emoji 字符**
-
-```vue
-
-
-
-
- 👥
-
-
- {{ totalUsers }}
- 总用户数
-
-
-
-
-
-
-
-
-
- 👤
-
-
- {{ totalUsers }}
- 总用户数
-
-
-
-
-```
-
-**常见问题 Emoji 及替代方案**:
-
-```javascript
-// 统计图标
-'👥' → '👤' // 用户数量
-'✅' → '✓' // 成功/活跃
-'🚫' → '✗' // 禁用/下架
-'📦' → '□' // 商品/包裹
-'⏳' → '○' // 等待/处理中
-'🚚' → '→' // 配送中
-'⚠️' → '!' // 警告/库存不足
-
-// 财务图标
-'💰' → '$' // 收入
-'📈' → '↑' // 增长
-'📊' → '≡' // 图表
-'💳' → '■' // 账户
-```
-
-#### **步骤 5.2:检查文件编码**
-
-```bash
-# 检查文件编码和特殊字符
-file pages/mall/admin/*.uvue
-
-# 确保文件编码为 UTF-8 无 BOM
-# 移除任何不可见字符
-```
-
-#### **步骤 5.3:验证模板语法完整性**
-
-```vue
-
-
-
-
-
- 内容
-
- {{ item.name }}
-
-
-
-
-```
-
-#### **步骤 5.4:最终验证**
-
-### **阶段六:缩进一致性检查**
-
-#### **步骤 6.1:统一缩进方式**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### **步骤 6.2:检查缩进工具**
-
-```bash
-# 检查文件中是否存在制表符
-grep -P '\t' pages/mall/admin/*.uvue
-
-# 将制表符转换为空格(2个空格)
-sed -i 's/\t/ /g' pages/mall/admin/*.uvue
-```
-
-#### **步骤 6.3:验证标签闭合**
-
-```javascript
-// 检查所有开始标签都有对应结束标签
-// 检查缩进一致性
-// 确保没有多余的闭合标签
-```
-
-#### **步骤 6.4:最终验证**
-
-### **阶段七:方法调用检查**
-
-#### **步骤 7.1:检查方法引用**
-
-```javascript
-// ❌ 错误:方法名已更改但模板未更新
-
-
-
-
-// ✅ 正确:更新方法引用
-
-
-
-```
-
-#### **步骤 7.2:验证方法定义**
-
-```javascript
-// 确保所有模板中引用的方法都已定义
-const newMethodName = () => {
- // 方法实现
-};
-```
-
-#### **步骤 7.3:检查参数匹配**
-
-```javascript
-// 确保方法调用时的参数与定义一致
-const handleClick = (param: string) => {
- console.log(param)
-}
-
-// 模板调用
-
-```
-
-#### **步骤 7.4:最终验证**
-
-### **阶段八:自闭合标签检查**
-
-#### **步骤 8.1:检查自闭合标签格式**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### **步骤 8.2:自动修复工具**
-
-```bash
-# 使用 sed 批量修复(注意备份文件)
-sed -i 's/><\/image>/ \/>/g' pages/mall/admin/*.uvue
-sed -i 's/><\/checkbox>/ \/>/g' pages/mall/admin/*.uvue
-```
-
-#### **步骤 8.3:验证标签完整性**
-
-```javascript
-// 检查所有自闭合标签都正确结束
-// 确保没有多余的结束标签
-```
-
-### **阶段九:模态框位置优化**
-
-#### **步骤 9.1:识别模态框位置问题**
-
-```vue
-
-
-
-
-
-
-
- 模态框内容
-
-
-
-
-
-
-
-
-
-
-
-
-
- 模态框内容
-
-
-```
-
-#### **步骤 9.2:重构模态框位置**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
- 添加内容
-
- 删除确认
-
-
-```
-
-#### **步骤 9.3:验证模态框行为**
-
-```javascript
-// 确保模态框在所有页面模式下都能正常显示
-// 测试不同条件下的模态框显示
-```
-
-#### **步骤 9.4:最终验证**
-
-### **阶段十:.uvue文件特殊处理**
-
-#### **步骤 10.1:简化复杂模板**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 简化内容
-
-
-
-```
-
-#### **步骤 10.2:移除问题Unicode字符**
-
-```vue
-
-✓
-
-✗
-
-★
-
-
-
-Y
-
-N
-
-*
-
-```
-
-#### **步骤 10.3:UTS编译器兼容性检查**
-
-```javascript
-// 检查UTS特定的语法要求
-// 确保所有导入和类型定义正确
-// 验证组件Props和事件处理
-```
-
-#### **步骤 10.4:渐进式开发策略**
-
-```javascript
-// 1. 从最小可用模板开始
-const minimalTemplate = `
-
-
-
- 页面内容
-
-
-
-`;
-
-// 2. 逐步添加功能,每次只添加一个特性
-// 3. 每次修改后立即编译测试
-// 4. 出现问题时立即回滚到上一个稳定版本
-```
-
-#### **步骤 10.5:最终验证**
-
-### **阶段十一:批量.uvue文件修复**
-
-### **阶段十二:AdminLayout双侧边栏布局**
-
-#### **步骤 11.1:识别问题文件**
-
-```bash
-# 检查所有.uvue文件是否正常编译
-# 记录出现"Invalid end tag"错误的文件
-# 按优先级排序修复顺序
-```
-
-#### **步骤 11.2:批量简化模板**
-
-```javascript
-// 为每个问题文件创建最小可用模板
-const minimalTemplates = {
- "user-management.uvue": `
-
-
-
- 用户管理
-
-
-
-
-
-
-
- `,
-
- "product-management.uvue": `
-
-
-
- 商品管理
-
-
-
-
-
-
-
- `,
-
- // 为其他页面创建类似的模板
-};
-```
-
-#### **步骤 11.3:统一字符替换**
-
-```bash
-# 批量替换所有.uvue文件中的问题字符
-find pages/mall/admin -name "*.uvue" -exec sed -i \
- -e 's/👤/U/g' \
- -e 's/✓/Y/g' \
- -e 's/✗/N/g' \
- -e 's/★/*/g' \
- -e 's/📦/□/g' \
- -e 's/⏳/○/g' \
- -e 's/🚚/→/g' \
- {} \;
-```
-
-#### **步骤 11.4:验证批量修复**
-
-```javascript
-// 检查所有文件是否正常编译
-// 确认没有"Invalid end tag"错误
-// 测试基本页面导航功能
-```
-
-#### **步骤 11.5:最终验证**
-
-#### **步骤 12.1:设计双侧边栏布局**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### **步骤 12.2:实现菜单数据结构**
-
-```javascript
-const menuList = ref([
- {
- id: "user",
- title: "用户管理",
- icon: "icon-user",
- path: "/pages/mall/admin/user-management",
- subMenus: [
- {
- id: "user-list",
- title: "用户列表",
- path: "/pages/mall/admin/user-management",
- },
- {
- id: "user-add",
- title: "添加用户",
- path: "/pages/mall/admin/user-management?action=add",
- },
- ],
- },
- {
- id: "product",
- title: "商品管理",
- icon: "icon-product",
- path: "/pages/mall/admin/product-management",
- subMenus: [
- {
- id: "product-list",
- title: "商品列表",
- path: "/pages/mall/admin/product-management",
- },
- {
- id: "category",
- title: "商品分类",
- path: "/pages/mall/admin/product-management?tab=category",
- },
- ],
- },
- // 没有子菜单的页面
- {
- id: "statistics",
- title: "用户统计",
- icon: "icon-statistics",
- path: "/pages/mall/admin/user-statistics",
- },
-]);
-```
-
-#### **步骤 12.3:计算属性实现**
-
-```javascript
-// 计算当前菜单的子菜单
-const activeSubMenus = computed(() => {
- const menu = menuList.value.find((m) => m.id === activeMenu.value);
- return menu ? menu.subMenus || [] : [];
-});
-
-// 判断是否有子菜单
-const hasSubMenus = computed(() => {
- return activeSubMenus.value.length > 0;
-});
-```
-
-#### **步骤 12.4:菜单点击处理**
-
-```javascript
-const handleMenuClick = (menu: any) => {
- activeMenu.value = menu.id
- // 设置默认子菜单(如果有的话)
- activeSubMenu.value = menu.subMenus && menu.subMenus.length > 0 ? menu.subMenus[0].id : ''
-
- // 导航到菜单路径
- uni.navigateTo({
- url: menu.path
- })
-}
-
-const handleSubMenuClick = (subMenu: any) => {
- activeSubMenu.value = subMenu.id
- // 导航到子菜单路径(可能包含查询参数)
- uni.navigateTo({
- url: subMenu.path
- })
-}
-```
-
-#### **步骤 12.5:样式实现**
-
-```scss
-/* 主侧边栏 */
-.admin-sider {
- width: 200px;
- background-color: #001529;
- position: fixed;
- left: 0;
- top: 0;
- bottom: 0;
- z-index: 1000;
-}
-
-/* 主内容区 */
-.admin-main {
- margin-left: 200px;
- display: flex;
- min-height: 100vh;
-}
-
-/* 内容侧边栏 */
-.content-sider {
- width: 180px;
- background-color: #ffffff;
- border-right: 1px solid #e8e8e8;
- box-shadow: 2px 0 8px rgba(0, 0, 0, 0.06);
-}
-
-.content-sub-menu-item {
- height: 36px;
- padding: 0 16px;
- cursor: pointer;
- transition: all 0.2s;
-
- &.active {
- background-color: #e6f7ff;
- color: #1890ff;
- border-right: 2px solid #1890ff;
- }
-}
-
-/* 内容区域 */
-.content-area {
- flex: 1;
- background-color: #f0f2f5;
-}
-```
-
-#### **步骤 12.6:响应式设计**
-
-```scss
-@media (max-width: 768px) {
- .admin-sider {
- width: 160px;
- }
-
- .admin-main {
- margin-left: 160px;
- }
-
- .content-sider {
- width: 140px;
- }
-}
-```
-
-#### **步骤 12.7:最终验证**
-
-### **阶段十四:绝对路径强制规范**
-
-#### **步骤 14.1:识别相对路径问题**
-
-```vue
-
-
-
-
-
-```
-
-**为什么相对路径会导致问题**:
-
-- uni-app-x 的 UTS 编译器对相对路径解析不稳定
-- 相对路径在子包结构中容易出错
-- 重构文件位置后需要手动更新所有相对路径
-- 可能导致批量 500 编译错误
-
-#### **步骤 14.2:批量替换相对路径**
-
-```powershell
-# 批量替换所有相对路径为绝对路径
-Get-ChildItem "pages" -Recurse -Filter "*.uvue" | ForEach-Object {
- (Get-Content $_.FullName -Raw) `
- -replace "from '\.\./\.\./marketing\.uts'", "from '@/pages/mall/admin/marketing/marketing.uts'" `
- -replace "from '\./marketing\.uts'", "from '@/pages/mall/admin/marketing/marketing.uts'" `
- | Set-Content $_.FullName -NoNewline
-}
-```
-
-#### **步骤 14.3:绝对路径映射规则**
-
-```javascript
-// 相对路径 → 绝对路径映射表
-'../../marketing.uts' → '@/pages/mall/admin/marketing/marketing.uts'
-'./marketing.uts' → '@/pages/mall/admin/marketing/marketing.uts'
-'../../../layouts/admin/...' → '@/layouts/admin/...'
-'../../components/...' → '@/components/...'
-'../utils/...' → '@/utils/...'
-
-// ⚠️ 常见错误路径
-'@/layouts/admin/marketing/marketing.uts' // ✗ 错误!marketing.uts 不在 layouts 目录
-'@/pages/mall/admin/marketing/marketing.uts' // ✓ 正确路径
-```
-
-**批量替换验证**:
-
-```powershell
-# 验证是否有错误路径残留
-Select-String -Path "pages\mall\admin\marketing\**\*.uvue" -Pattern "from '@/layouts/admin/marketing"
-# 应该返回 0 个结果
-```
-
-#### **步骤 14.4:验证绝对路径**
-
-```bash
-# 检查是否还有相对路径
-grep -r "from '\.\." pages/
-grep -r 'from "\.\.' pages/
-
-# 应该没有任何匹配结果
-```
-
-#### **步骤 14.5:最终验证**
-
-### **阶段十三:AdminLayout代码清理**
-
-#### **步骤 13.1:移除遗留变量引用**
-
-```javascript
-// ❌ 错误:引用已删除的变量
-const handleMenuClick = (menu: any) => {
- activeMenu.value = menu.id
- // 引用不存在的 tabs 变量
- const existingTab = tabs.value.find(tab => tab.id === menu.id)
- // ...
-}
-
-// ✅ 修复:移除所有遗留引用
-const handleMenuClick = (menu: any) => {
- activeMenu.value = menu.id
- activeSubMenu.value = menu.subMenus?.[0]?.id || ''
-
- uni.navigateTo({ url: menu.path })
-}
-```
-
-#### **步骤 13.2:检查计算属性完整性**
-
-```javascript
-// 确保所有模板中使用的属性都已定义
-const activeSubMenuTitle = computed(() => {
- const subMenu = activeSubMenus.value.find(sm => sm.id === activeSubMenu.value)
- return subMenu ? subMenu.title : ''
-})
-
-// 模板中使用
-{{ activeSubMenuTitle }}
-```
-
-#### **步骤 13.3:验证模板依赖**
-
-```vue
-
-
-
-
- {{ activeMenuTitle }}
- {{ activeSubMenuTitle }}
-
-
-```
-
-#### **步骤 13.4:最终验证**
-
-### **阶段十二:AdminLayout组件解析修复**
-
-#### **步骤 12.1:检查组件导入路径**
-
-```javascript
-// ❌ 错误:缺少文件扩展名
-import AdminLayout from "@/layouts/admin/index";
-
-// ❌ 错误:路径不存在
-import AdminLayout from "@/layout/admin/index.uvue";
-
-// ✅ 正确:完整路径包含扩展名
-import AdminLayout from "@/layouts/admin/index.uvue";
-```
-
-#### **步骤 12.2:简化组件结构**
-
-```vue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-#### **步骤 12.3:验证组件可用性**
-
-```javascript
-// 在页面中正确使用组件
-
-
-
-
-
-
-
-```
-
-#### **步骤 12.4:UTS编译器兼容性**
-
-```javascript
-// 确保组件语法符合UTS要求
-// 使用
-```
-
-### **原理五:错误排查方法**
-
-#### **逐步验证策略**:
-
-1. **最小化配置**: 从最简单的配置开始
-2. **逐步添加**: 每次只添加一个功能
-3. **错误定位**: 根据错误信息快速定位问题
-4. **备份恢复**: 修改前备份,失败时快速回滚
-
-#### **常见错误检查清单**:
-
-- ✅ pages.json 路径格式是否正确
-- ✅ 页面文件是否存在
-- ✅ 组件语法是否正确
-- ✅ **导入语句必须使用 `@/...` 绝对路径(禁止相对路径)**
-- ✅ 生命周期钩子使用是否正确
-- ✅ 响应式数据使用是否正确
-- ✅ 特殊字符和 emoji 是否安全
-- ✅ 缩进是否一致(避免混用制表符和空格)
-- ✅ 方法调用是否正确(方法名和参数匹配)
-- ✅ 自闭合标签格式是否正确(使用 `/>` 而非 `>`)
-- ✅ 模态框位置是否正确(避免条件嵌套)
-- ✅ .uvue文件复杂度是否适中(避免过度复杂的模板结构)
-- ✅ 批量文件修复是否完整(所有.uvue文件都已简化处理)
-- ✅ AdminLayout组件是否正确导入和解析
-- ✅ AdminLayout代码清理是否完整(无遗留变量引用)
-
-## 🚀 最佳实践指南
-
-### **开发规范**
-
-#### **1. 文件命名规范**
-
-- 页面文件: `kebab-case.uvue`
-- 组件文件: `PascalCase.uvue`
-- 工具文件: `camelCase.uts`
-
-#### **2. 路径配置规范**
-
-- 主页面: `pages/page-name`
-- 子包页面: `root: "pages/module"`, `path: "sub-page"`
-- 组件导入: `@/layouts/...`, `@/components/...`
-
-#### **3. 代码组织规范**
-
-```vue
-
-
-
-
-
-
-
-```
-
-### **调试技巧**
-
-#### **1. 编译错误排查**
-
-- 查看控制台错误信息
-- 检查文件语法
-- 验证导入路径
-- 确认类型定义
-
-#### **2. 运行时错误排查**
-
-- 检查页面配置
-- 验证组件 Props
-- 确认事件处理
-- 测试页面跳转
-
-#### **3. 性能优化**
-
-- 合理使用响应式数据
-- 避免不必要的计算属性
-- 优化组件渲染
-- 使用合适的生命周期
-
-#### **4. .uvue文件特殊处理**
-
-- 保持模板结构简单,避免过度复杂
-- 使用UTS编译器兼容的字符集
-- 定期检查文件编码和特殊字符
-- 采用渐进式开发策略,从简单到复杂
-- 出现编译错误时优先简化模板结构
-
-#### **5. AdminLayout组件维护**
-
-- 保持组件结构简单,避免过度复杂的功能
-- 使用正确的文件扩展名(.uvue)在导入路径中
-- 定期验证组件的导出和解析
-- 出现解析错误时优先简化组件结构
-- 确保组件语法符合UTS编译器要求
-
-#### **6. 双侧边栏布局设计**
-
-- 主侧边栏只显示一级菜单图标,保持简洁
-- 内容侧边栏显示二级菜单,位于内容区左侧
-- 合理分配侧边栏宽度,确保移动端兼容性
-- 使用计算属性动态控制侧边栏显示
-- 确保路由同步和高亮状态正确
-
-## 📚 参考资源
-
-### **官方文档**
-
-- [uni-app-x 官方文档](https://doc.dcloud.net.cn/uni-app-x/)
-- [Vue 3 组合式 API](https://cn.vuejs.org/guide/extras/composition-api-faq.html)
-- [TypeScript 指南](https://www.typescriptlang.org/docs/)
-
-### **最佳实践**
-
-- 遵循项目现有的代码风格
-- 保持配置的一致性
-- 定期检查和更新依赖
-- 编写清晰的注释
-
----
-
-## 🎯 总结
-
-通过本次修复,我们建立了完整的 uni-app-x 项目开发和调试方法论:
-
-1. **问题定位**: 快速识别配置和语法错误
-2. **逐步修复**: 从简单到复杂,逐步解决问题
-3. **规范建立**: 统一的代码和配置规范
-4. **最佳实践**: 可复用的开发模式
-
-### **新增问题类型**
-
-#### **特殊字符兼容性问题**
-
-- **现象**: `[plugin:uts] Invalid end tag` 错误
-- **原因**: emoji 字符或特殊 Unicode 符号导致模板解析失败
-- **解决方案**: 替换为标准 ASCII 字符或安全 Unicode 符号
-- **预防**: 在模板中使用经过验证的安全字符集
-
----
-
-#### **原因十四:AdminLayout代码清理不完整**
-
-- **遗留变量引用**: 移除功能后仍引用已删除的变量
-- **计算属性缺失**: 重构时遗漏必要的计算属性
-- **模板依赖问题**: 模板中使用未定义的响应式属性
-
----
-
-这个指南现在涵盖了 uni-app-x 项目开发中最常见的 14 类编译和运行时错误,为后续开发提供了完整的故障排除和最佳实践指导。 🚀
diff --git a/layouts/admin/router/adminComponentMap.uts b/layouts/admin/router/adminComponentMap.uts
index e1549903..26034adf 100644
--- a/layouts/admin/router/adminComponentMap.uts
+++ b/layouts/admin/router/adminComponentMap.uts
@@ -24,15 +24,12 @@ import UserLevel from '@/pages/mall/admin/user/level.uvue'
import UserGroup from '@/pages/mall/admin/user/group.uvue'
import UserLabel from '@/pages/mall/admin/user/label.uvue'
import MemberConfig from '@/pages/mall/admin/user/MemberConfig.uvue'
-// 其他用户模块组件暂时使用 PlaceholderPage
-// import UserGradeType from '@/pages/mall/admin/user/grade/type.uvue'
-// import UserGradeCard from '@/pages/mall/admin/user/grade/card.uvue'
-// import UserGradeRecord from '@/pages/mall/admin/user/grade/record.uvue'
-// import UserGradeRight from '@/pages/mall/admin/user/grade/right.uvue'
-// import UserMemberConfig from '@/pages/mall/admin/user/MemberConfig.uvue'
// 导入商品模块(纯组件,不包含 AdminLayout)
-import ProductList from '@/pages/mall/admin/product/list.uvue'
+import ProductStatistic from '@/pages/mall/admin/product/product-statistics/index.uvue'
+import ProductList from '@/pages/mall/admin/product/product-management/index.uvue'
+import ProductEdit from '@/pages/mall/admin/product/product-management/edit.uvue'
+import ProductMemberPrice from '@/pages/mall/admin/product/product-management/member-price.uvue'
import ProductClassify from '@/pages/mall/admin/product/classify.uvue'
import ProductReply from '@/pages/mall/admin/product/reply.uvue'
import ProductAttr from '@/pages/mall/admin/product/attr.uvue'
@@ -48,16 +45,39 @@ import OrderCashier from '@/pages/mall/admin/order/cashier-order/index.uvue'
import OrderVerify from '@/pages/mall/admin/order/write-off-records/index.uvue'
import OrderConfig from '@/pages/mall/admin/order/order-configuration/index.uvue'
-// 营销、内容、财务、数据、设置模块暂时使用 PlaceholderPage
+// 营销设置模块暂时使用 PlaceholderPage
// 避免循环依赖问题
-// import MarketingCoupon from '@/pages/mall/admin/marketing/coupon/list.uvue'
-// import MarketingIntegral from '@/pages/mall/admin/marketing/integral/list.uvue'
-// import MarketingBargain from '@/pages/mall/admin/marketing/bargain/list.uvue'
-// import MarketingCombination from '@/pages/mall/admin/marketing/combination/list.uvue'
-// import MarketingSeckill from '@/pages/mall/admin/marketing/seckill/list.uvue'
-// import CmsArticle from '@/pages/mall/admin/cms/article/list.uvue'
-// import CmsCategory from '@/pages/mall/admin/cms/category/list.uvue'
-// import FinanceRecord from '@/pages/mall/admin/finance/record.uvue'
+import CmsArticle from '@/pages/mall/admin/cms/article/list.uvue'
+import CmsCategory from '@/pages/mall/admin/cms/category/list.uvue'
+import MarketingCouponList from '@/pages/mall/admin/marketing/coupon/list.uvue'
+import MarketingCouponUser from '@/pages/mall/admin/marketing/coupon/user.uvue'
+import MarketingIntegralStatistic from '@/pages/mall/admin/marketing/integral/statistic.uvue'
+
+// 导入财务模块(纯组件)
+import FinanceTransactionStats from '@/pages/mall/admin/finance/transaction_stats.uvue'
+import FinanceWithdrawal from '@/pages/mall/admin/finance/withdrawal.uvue'
+import FinanceInvoice from '@/pages/mall/admin/finance/invoice.uvue'
+import FinanceRecharge from '@/pages/mall/admin/finance/recharge.uvue'
+import FinanceCapitalFlow from '@/pages/mall/admin/finance/capital_flow.uvue'
+import FinanceBill from '@/pages/mall/admin/finance/bill.uvue'
+import FinanceCommission from '@/pages/mall/admin/finance/commission.uvue'
+import FinanceBalanceStats from '@/pages/mall/admin/finance/balance_stats.uvue'
+import FinanceBalanceRecord from '@/pages/mall/admin/finance/balance_record.uvue'
+
+// 导入客服模块
+import KefuList from '@/pages/mall/admin/kefu/list.uvue'
+import KefuWords from '@/pages/mall/admin/kefu/words.uvue'
+import KefuFeedback from '@/pages/mall/admin/kefu/feedback.uvue'
+import KefuConfig from '@/pages/mall/admin/kefu/config.uvue'
+
+// 导入装修模块
+import DecorationHome from '@/pages/mall/admin/decoration/home.uvue'
+import DecorationCategory from '@/pages/mall/admin/decoration/category.uvue'
+import DecorationUser from '@/pages/mall/admin/decoration/user.uvue'
+
+// 导入维护模块
+import MaintainDevConfig from '@/pages/mall/admin/maintain/dev/config.uvue'
+
// import StatisticIndex from '@/pages/mall/admin/statistic/index.uvue'
// import SettingSystemConfig from '@/pages/mall/admin/setting/system/config.uvue'
// import SettingSystemAdmin from '@/pages/mall/admin/setting/system/admin.uvue'
@@ -77,13 +97,12 @@ export const componentMap: Map = new Map([
['UserGroup', UserGroup],
['UserLabel', UserLabel],
['UserMemberConfig', MemberConfig],
- ['UserGradeType', PlaceholderPage], // 暂时使用占位组件
- ['UserGradeCard', PlaceholderPage],
- ['UserGradeRecord', PlaceholderPage],
- ['UserGradeRight', PlaceholderPage],
// 商品模块
+ ['ProductStatistic', ProductStatistic],
['ProductList', ProductList],
+ ['ProductEdit', ProductEdit],
+ ['ProductMemberPrice', ProductMemberPrice],
['ProductClassify', ProductClassify],
['ProductReply', ProductReply],
['ProductAttr', ProductAttr],
@@ -99,19 +118,62 @@ export const componentMap: Map = new Map([
['OrderVerify', OrderVerify],
['OrderConfig', OrderConfig],
- // 营销模块 - 暂时使用占位组件
- ['MarketingCoupon', PlaceholderPage],
- ['MarketingIntegral', PlaceholderPage],
- ['MarketingBargain', PlaceholderPage],
- ['MarketingCombination', PlaceholderPage],
- ['MarketingSeckill', PlaceholderPage],
+ // 营销模块
+ // 1. 优惠券
+ ['MarketingCouponList', MarketingCouponList],
+ ['MarketingCouponUser', MarketingCouponUser],
+ // 2. 积分管理
+ ['MarketingIntegralStatistic', MarketingIntegralStatistic],
+ ['MarketingIntegralProduct', PlaceholderPage],
+ ['MarketingIntegralOrder', PlaceholderPage],
+ ['MarketingIntegralRecord', PlaceholderPage],
+ // 3. 抽奖管理
+ ['MarketingLotteryList', PlaceholderPage],
+ ['MarketingLotteryConfig', PlaceholderPage],
+ // 4. 砍价管理
+ ['MarketingBargainProduct', PlaceholderPage],
+ ['MarketingBargainList', PlaceholderPage],
+ // 5. 拼团管理
+ ['MarketingCombinationProduct', PlaceholderPage],
+ ['MarketingCombinationList', PlaceholderPage],
+ // 6. 秒杀管理
+ ['MarketingSeckillList', PlaceholderPage],
+ ['MarketingSeckillProduct', PlaceholderPage],
+ ['MarketingSeckillConfig', PlaceholderPage],
+ // 7. 付费会员
+ ['MarketingMemberType', PlaceholderPage],
+ ['MarketingMemberRight', PlaceholderPage],
+ ['MarketingMemberCard', PlaceholderPage],
+ ['MarketingMemberRecord', PlaceholderPage],
+ ['MarketingMemberConfig', PlaceholderPage],
+ // 8. 直播管理
+ ['MarketingLiveRoom', PlaceholderPage],
+ ['MarketingLiveProduct', PlaceholderPage],
+ ['MarketingLiveAnchor', PlaceholderPage],
+ // 9. 用户充值
+ ['MarketingRechargeQuota', PlaceholderPage],
+ ['MarketingRechargeConfig', PlaceholderPage],
+ // 10. 每日签到
+ ['MarketingCheckinConfig', PlaceholderPage],
+ ['MarketingCheckinReward', PlaceholderPage],
+ // 11. 渠道码 & 新人礼
+ ['MarketingChannelList', PlaceholderPage],
+ ['MarketingNewcomerGift', PlaceholderPage],
- // 内容模块 - 暂时使用占位组件
- ['CmsArticle', PlaceholderPage],
- ['CmsCategory', PlaceholderPage],
+ // 内容模块
+ ['CmsArticle', CmsArticle],
+ ['CmsCategory', CmsCategory],
- // 财务模块 - 暂时使用占位组件
- ['FinanceRecord', PlaceholderPage],
+ // 财务模块
+ ['FinanceTransactionStats', FinanceTransactionStats],
+ ['FinanceWithdrawal', FinanceWithdrawal],
+ ['FinanceInvoice', FinanceInvoice],
+ ['FinanceRecharge', FinanceRecharge],
+ ['FinanceCapitalFlow', FinanceCapitalFlow],
+ ['FinanceBill', FinanceBill],
+ ['FinanceCommission', FinanceCommission],
+ ['FinanceBalanceStats', FinanceBalanceStats],
+ ['FinanceBalanceRecord', FinanceBalanceRecord],
// 数据模块 - 暂时使用占位组件
['StatisticIndex', PlaceholderPage],
@@ -119,7 +181,56 @@ export const componentMap: Map = new Map([
// 设置模块 - 暂时使用占位组件
['SettingSystemConfig', PlaceholderPage],
['SettingSystemAdmin', PlaceholderPage],
- ['SettingSystemRole', PlaceholderPage]
+ ['SettingSystemRole', PlaceholderPage],
+
+ // 分销模块
+ ['DistributionStatistic', PlaceholderPage],
+ ['DistributionList', PlaceholderPage],
+ ['DistributionConfig', PlaceholderPage],
+
+ // 客服模块
+ ['KefuList', KefuList],
+ ['KefuWords', KefuWords],
+ ['KefuFeedback', KefuFeedback],
+ ['KefuAutoReply', PlaceholderPage],
+ ['KefuConfig', KefuConfig],
+
+ // 装修模块
+ ['DecorationHome', DecorationHome],
+ ['DecorationCategory', DecorationCategory],
+ ['DecorationUser', DecorationUser],
+ ['DecorationData', PlaceholderPage],
+ ['DecorationStyle', PlaceholderPage],
+ ['DecorationMaterial', PlaceholderPage],
+ ['DecorationLink', PlaceholderPage],
+
+ // 应用模块
+ ['AppStatistic', PlaceholderPage],
+ ['AppList', PlaceholderPage],
+
+ // 维护模块
+ ['MaintainDevConfig', MaintainDevConfig],
+ ['MaintainDevData', PlaceholderPage],
+ ['MaintainDevTask', PlaceholderPage],
+ ['MaintainDevAuth', PlaceholderPage],
+ ['MaintainDevModule', PlaceholderPage],
+ ['MaintainDevEvent', PlaceholderPage],
+ ['MaintainSecurityCache', PlaceholderPage],
+ ['MaintainSecurityLog', PlaceholderPage],
+ ['MaintainSecurityUpgrade', PlaceholderPage],
+ ['MaintainDataLogistics', PlaceholderPage],
+ ['MaintainDataCity', PlaceholderPage],
+ ['MaintainDataClear', PlaceholderPage],
+ ['MaintainApiAccount', PlaceholderPage],
+ ['MaintainLangList', PlaceholderPage],
+ ['MaintainLangDetail', PlaceholderPage],
+ ['MaintainLangRegion', PlaceholderPage],
+ ['MaintainLangConfig', PlaceholderPage],
+ ['MaintainToolDb', PlaceholderPage],
+ ['MaintainToolFile', PlaceholderPage],
+ ['MaintainToolApi', PlaceholderPage],
+ ['MaintainToolDic', PlaceholderPage],
+ ['MaintainSysInfo', PlaceholderPage]
])
/**
diff --git a/layouts/admin/router/adminRoutes.uts b/layouts/admin/router/adminRoutes.uts
index c782323f..f48e12db 100644
--- a/layouts/admin/router/adminRoutes.uts
+++ b/layouts/admin/router/adminRoutes.uts
@@ -72,18 +72,7 @@ export const topMenus: TopMenu[] = [
path: '/pages/mall/admin/user/list',
order: 2,
groups: [
- { id: 'user-manage', title: '', order: 1 },
- { id: 'member-manage', title: '会员管理', order: 2 }
- ]
- },
- {
- id: 'product',
- title: '商品',
- icon: 'product',
- path: '/pages/mall/admin/product/list',
- order: 3,
- groups: [
- { id: 'product-manage', title: '商品管理', order: 1 }
+ { id: 'user-manage', title: '', order: 1 }
]
},
{
@@ -91,11 +80,21 @@ export const topMenus: TopMenu[] = [
title: '订单',
icon: 'order',
path: '/pages/mall/admin/order/list',
- order: 4,
+ order: 3,
groups: [
{ id: 'order-manage', title: '', order: 1 }
]
},
+ {
+ id: 'product',
+ title: '商品',
+ icon: 'product',
+ path: '/pages/mall/admin/product/statistic',
+ order: 4,
+ groups: [
+ { id: 'product-manage', title: '商品管理', order: 1 }
+ ]
+ },
{
id: 'marketing',
title: '营销',
@@ -103,8 +102,51 @@ export const topMenus: TopMenu[] = [
path: '/pages/mall/admin/marketing/coupon/list',
order: 5,
groups: [
- { id: 'marketing-tool', title: '营销工具', order: 1 },
- { id: 'marketing-activity', title: '营销活动', order: 2 }
+ { id: 'marketing-coupon', title: '优惠券', order: 1 },
+ { id: 'marketing-integral', title: '积分管理', order: 2 },
+ { id: 'marketing-lottery', title: '抽奖管理', order: 3 },
+ { id: 'marketing-bargain', title: '砍价管理', order: 4 },
+ { id: 'marketing-combination', title: '拼团管理', order: 5 },
+ { id: 'marketing-seckill', title: '秒杀管理', order: 6 },
+ { id: 'marketing-member', title: '付费会员', order: 7 },
+ { id: 'marketing-live', title: '直播管理', order: 8 },
+ { id: 'marketing-recharge', title: '用户充值', order: 9 },
+ { id: 'marketing-checkin', title: '每日签到', order: 10 },
+ { id: 'marketing-other', title: '其他', order: 11 }
+ ]
+ },
+ {
+ id: 'distribution',
+ title: '分销',
+ icon: 'share',
+ path: '/pages/mall/admin/distribution/statistic',
+ order: 6,
+ groups: [
+ { id: 'distribution-manage', title: '', order: 1 }
+ ]
+ },
+ {
+ id: 'kefu',
+ title: '客服',
+ icon: 'customer-service',
+ path: '/pages/mall/admin/kefu/list',
+ order: 7,
+ groups: [
+ { id: 'kefu-manage', title: '', order: 1 }
+ ]
+ },
+ {
+ id: 'finance',
+ title: '财务',
+ icon: 'finance',
+ path: '/pages/mall/admin/finance/transaction_stats',
+ order: 8,
+ groups: [
+ { id: 'finance-data', title: '', order: 1 },
+ { id: 'finance-ops', title: '财务操作', order: 2 },
+ { id: 'finance-record', title: '财务记录', order: 3 },
+ { id: 'finance-commission', title: '佣金记录', order: 4 },
+ { id: 'finance-balance', title: '余额记录', order: 5 }
]
},
{
@@ -112,29 +154,29 @@ export const topMenus: TopMenu[] = [
title: '内容',
icon: 'content',
path: '/pages/mall/admin/cms/article/list',
- order: 6,
+ order: 9,
groups: [
{ id: 'cms-manage', title: '内容管理', order: 1 }
]
},
{
- id: 'finance',
- title: '财务',
- icon: 'finance',
- path: '/pages/mall/admin/finance/record',
- order: 7,
+ id: 'decoration',
+ title: '装修',
+ icon: 'decoration',
+ path: '/pages/mall/admin/decoration/home',
+ order: 10,
groups: [
- { id: 'finance-manage', title: '财务管理', order: 1 }
+ { id: 'decoration-manage', title: '', order: 1 }
]
},
{
- id: 'statistic',
- title: '数据',
- icon: 'statistic',
- path: '/pages/mall/admin/statistic/index',
- order: 8,
+ id: 'app',
+ title: '应用',
+ icon: 'app',
+ path: '/pages/mall/admin/app/statistic',
+ order: 11,
groups: [
- { id: 'statistic-data', title: '数据统计', order: 1 }
+ { id: 'app-manage', title: '', order: 1 }
]
},
{
@@ -142,11 +184,26 @@ export const topMenus: TopMenu[] = [
title: '设置',
icon: 'setting',
path: '/pages/mall/admin/setting/system/config',
- order: 9,
+ order: 12,
groups: [
{ id: 'setting-system', title: '系统设置', order: 1 },
- { id: 'setting-application', title: '应用设置', order: 2 },
- { id: 'setting-maintain', title: '维护管理', order: 3 }
+ { id: 'setting-application', title: '应用设置', order: 2 }
+ ]
+ },
+ {
+ id: 'maintain',
+ title: '维护',
+ icon: 'tool',
+ path: '/pages/mall/admin/maintain/dev/config',
+ order: 13,
+ groups: [
+ { id: 'maintain-dev', title: '开发配置', order: 1 },
+ { id: 'maintain-security', title: '安全维护', order: 2 },
+ { id: 'maintain-data', title: '数据维护', order: 3 },
+ { id: 'maintain-api', title: '对外接口', order: 4 },
+ { id: 'maintain-lang', title: '语言设置', order: 5 },
+ { id: 'maintain-tool', title: '开发工具', order: 6 },
+ { id: 'maintain-sys', title: '系统信息', order: 7 }
]
}
]
@@ -218,58 +275,18 @@ export const routes: RouteRecord[] = [
auth: ['user-user-level'],
order: 5
},
- {
- id: 'user_member_config',
- title: '用户配置',
- path: '/pages/mall/admin/user/MemberConfig',
- componentKey: 'UserMemberConfig',
- parentId: 'user',
- groupId: 'user-manage',
- auth: ['admin-user-member-config'],
- order: 6
- },
- {
- id: 'user_type',
- title: '会员类型',
- path: '/pages/mall/admin/user/grade/type',
- componentKey: 'UserGradeType',
- parentId: 'user',
- groupId: 'member-manage',
- auth: ['admin-user-member-type'],
- order: 1
- },
- {
- id: 'user_card',
- title: '卡密会员',
- path: '/pages/mall/admin/user/grade/card',
- componentKey: 'UserGradeCard',
- parentId: 'user',
- groupId: 'member-manage',
- auth: ['admin-user-grade-card'],
- order: 2
- },
- {
- id: 'user_record',
- title: '会员记录',
- path: '/pages/mall/admin/user/grade/record',
- componentKey: 'UserGradeRecord',
- parentId: 'user',
- groupId: 'member-manage',
- auth: ['admin-user-grade-record'],
- order: 3
- },
- {
- id: 'user_right',
- title: '会员权益',
- path: '/pages/mall/admin/user/grade/right',
- componentKey: 'UserGradeRight',
- parentId: 'user',
- groupId: 'member-manage',
- auth: ['admin-user-grade-right'],
- order: 4
- },
// ========== 商品模块 ==========
+ {
+ id: 'product_statistic',
+ title: '商品统计',
+ path: '/pages/mall/admin/product/statistic',
+ componentKey: 'ProductStatistic',
+ parentId: 'product',
+ groupId: 'product-manage',
+ auth: ['admin-store-storeProuduct-statistic'],
+ order: 1
+ },
{
id: 'product_productList',
title: '商品管理',
@@ -279,7 +296,7 @@ export const routes: RouteRecord[] = [
groupId: 'product-manage',
auth: ['admin-store-storeProuduct-index'],
keepAlive: true,
- order: 1
+ order: 2
},
{
id: 'product_productClassify',
@@ -289,16 +306,6 @@ export const routes: RouteRecord[] = [
parentId: 'product',
groupId: 'product-manage',
auth: ['admin-store-storeCategory-index'],
- order: 2
- },
- {
- id: 'product_productEvaluate',
- title: '商品评论',
- path: '/pages/mall/admin/product/reply',
- componentKey: 'ProductReply',
- parentId: 'product',
- groupId: 'product-manage',
- auth: ['admin-store-storeProuduct-index'],
order: 3
},
{
@@ -341,6 +348,36 @@ export const routes: RouteRecord[] = [
auth: ['admin-product-protection-list'],
order: 7
},
+ {
+ id: 'product_productEvaluate',
+ title: '商品评论',
+ path: '/pages/mall/admin/product/reply',
+ componentKey: 'ProductReply',
+ parentId: 'product',
+ groupId: 'product-manage',
+ auth: ['admin-store-storeProuduct-index'],
+ order: 8
+ },
+ {
+ id: 'product_edit',
+ title: '编辑商品',
+ path: '/pages/mall/admin/product/edit',
+ componentKey: 'ProductEdit',
+ parentId: 'product',
+ groupId: 'product-manage',
+ hidden: true,
+ auth: ['admin-store-storeProuduct-index']
+ },
+ {
+ id: 'product_member_price',
+ title: '预售会员价',
+ path: '/pages/mall/admin/product/member-price',
+ componentKey: 'ProductMemberPrice',
+ parentId: 'product',
+ groupId: 'product-manage',
+ hidden: true,
+ auth: ['admin-store-storeProuduct-index']
+ },
// ========== 订单模块 ==========
{
@@ -406,56 +443,307 @@ export const routes: RouteRecord[] = [
},
// ========== 营销模块 ==========
+ // 1. 优惠券
{
- id: 'marketing_coupon',
- title: '优惠券',
+ id: 'marketing_coupon_list',
+ title: '优惠券列表',
path: '/pages/mall/admin/marketing/coupon/list',
- componentKey: 'MarketingCoupon',
+ componentKey: 'MarketingCouponList',
parentId: 'marketing',
- groupId: 'marketing-tool',
+ groupId: 'marketing-coupon',
auth: ['admin-marketing-storeCoupon-index'],
order: 1
},
{
- id: 'marketing_integral',
- title: '积分管理',
- path: '/pages/mall/admin/marketing/integral/list',
- componentKey: 'MarketingIntegral',
+ id: 'marketing_coupon_user',
+ title: '用户领取记录',
+ path: '/pages/mall/admin/marketing/coupon/user',
+ componentKey: 'MarketingCouponUser',
parentId: 'marketing',
- groupId: 'marketing-tool',
- auth: ['admin-marketing-storeIntegral-index'],
+ groupId: 'marketing-coupon',
+ auth: ['admin-marketing-storeCouponUser-index'],
+ order: 2
+ },
+ // 2. 积分管理
+ {
+ id: 'marketing_integral_statistic',
+ title: '积分统计',
+ path: '/pages/mall/admin/marketing/integral/statistic',
+ componentKey: 'MarketingIntegralStatistic',
+ parentId: 'marketing',
+ groupId: 'marketing-integral',
+ auth: ['admin-marketing-integral-statistic'],
+ order: 1
+ },
+ {
+ id: 'marketing_integral_product',
+ title: '积分商品',
+ path: '/pages/mall/admin/marketing/integral/product',
+ componentKey: 'MarketingIntegralProduct',
+ parentId: 'marketing',
+ groupId: 'marketing-integral',
+ auth: ['admin-marketing-integral-product'],
order: 2
},
{
- id: 'marketing_bargain',
- title: '砍价活动',
- path: '/pages/mall/admin/marketing/bargain/list',
- componentKey: 'MarketingBargain',
+ id: 'marketing_integral_order',
+ title: '积分订单',
+ path: '/pages/mall/admin/marketing/integral/order',
+ componentKey: 'MarketingIntegralOrder',
parentId: 'marketing',
- groupId: 'marketing-activity',
- auth: ['admin-marketing-storeBargain-index'],
+ groupId: 'marketing-integral',
+ auth: ['admin-marketing-integral-order'],
order: 3
},
{
- id: 'marketing_combination',
- title: '拼团活动',
- path: '/pages/mall/admin/marketing/combination/list',
- componentKey: 'MarketingCombination',
+ id: 'marketing_integral_record',
+ title: '积分记录',
+ path: '/pages/mall/admin/marketing/integral/record',
+ componentKey: 'MarketingIntegralRecord',
parentId: 'marketing',
- groupId: 'marketing-activity',
- auth: ['admin-marketing-storeCombination-index'],
+ groupId: 'marketing-integral',
+ auth: ['admin-marketing-integral-record'],
+ order: 4
+ },
+ // 3. 抽奖管理
+ {
+ id: 'marketing_lottery_list',
+ title: '抽奖列表',
+ path: '/pages/mall/admin/marketing/lottery/list',
+ componentKey: 'MarketingLotteryList',
+ parentId: 'marketing',
+ groupId: 'marketing-lottery',
+ auth: ['admin-marketing-lottery-index'],
+ order: 1
+ },
+ {
+ id: 'marketing_lottery_config',
+ title: '抽奖配置',
+ path: '/pages/mall/admin/marketing/lottery/config',
+ componentKey: 'MarketingLotteryConfig',
+ parentId: 'marketing',
+ groupId: 'marketing-lottery',
+ auth: ['admin-marketing-lottery-config'],
+ order: 2
+ },
+ // 4. 砍价管理
+ {
+ id: 'marketing_bargain_product',
+ title: '砍价商品',
+ path: '/pages/mall/admin/marketing/bargain/product',
+ componentKey: 'MarketingBargainProduct',
+ parentId: 'marketing',
+ groupId: 'marketing-bargain',
+ auth: ['admin-marketing-bargain-product'],
+ order: 1
+ },
+ {
+ id: 'marketing_bargain_list',
+ title: '砍价列表',
+ path: '/pages/mall/admin/marketing/bargain/list',
+ componentKey: 'MarketingBargainList',
+ parentId: 'marketing',
+ groupId: 'marketing-bargain',
+ auth: ['admin-marketing-bargain-index'],
+ order: 2
+ },
+ // 5. 拼团管理
+ {
+ id: 'marketing_combination_product',
+ title: '拼团商品',
+ path: '/pages/mall/admin/marketing/combination/product',
+ componentKey: 'MarketingCombinationProduct',
+ parentId: 'marketing',
+ groupId: 'marketing-combination',
+ auth: ['admin-marketing-combination-product'],
+ order: 1
+ },
+ {
+ id: 'marketing_combination_list',
+ title: '拼团列表',
+ path: '/pages/mall/admin/marketing/combination/list',
+ componentKey: 'MarketingCombinationList',
+ parentId: 'marketing',
+ groupId: 'marketing-combination',
+ auth: ['admin-marketing-combination-index'],
+ order: 2
+ },
+ // 6. 秒杀管理
+ {
+ id: 'marketing_seckill_list',
+ title: '秒杀列表',
+ path: '/pages/mall/admin/marketing/seckill/list',
+ componentKey: 'MarketingSeckillList',
+ parentId: 'marketing',
+ groupId: 'marketing-seckill',
+ auth: ['admin-marketing-seckill-index'],
+ order: 1
+ },
+ {
+ id: 'marketing_seckill_product',
+ title: '秒杀商品',
+ path: '/pages/mall/admin/marketing/seckill/product',
+ componentKey: 'MarketingSeckillProduct',
+ parentId: 'marketing',
+ groupId: 'marketing-seckill',
+ auth: ['admin-marketing-seckill-product'],
+ order: 2
+ },
+ {
+ id: 'marketing_seckill_config',
+ title: '秒杀配置',
+ path: '/pages/mall/admin/marketing/seckill/config',
+ componentKey: 'MarketingSeckillConfig',
+ parentId: 'marketing',
+ groupId: 'marketing-seckill',
+ auth: ['admin-marketing-seckill-config'],
+ order: 3
+ },
+ // 7. 付费会员 (从用户模块迁入)
+ {
+ id: 'marketing_member_type',
+ title: '会员类型',
+ path: '/pages/mall/admin/marketing/member/type',
+ componentKey: 'MarketingMemberType',
+ parentId: 'marketing',
+ groupId: 'marketing-member',
+ auth: ['admin-user-member-type'],
+ order: 1
+ },
+ {
+ id: 'marketing_member_right',
+ title: '会员权益',
+ path: '/pages/mall/admin/marketing/member/right',
+ componentKey: 'MarketingMemberRight',
+ parentId: 'marketing',
+ groupId: 'marketing-member',
+ auth: ['admin-user-member-right'],
+ order: 2
+ },
+ {
+ id: 'marketing_member_card',
+ title: '卡密会员',
+ path: '/pages/mall/admin/marketing/member/card',
+ componentKey: 'MarketingMemberCard',
+ parentId: 'marketing',
+ groupId: 'marketing-member',
+ auth: ['admin-user-member-card'],
+ order: 3
+ },
+ {
+ id: 'marketing_member_record',
+ title: '会员记录',
+ path: '/pages/mall/admin/marketing/member/record',
+ componentKey: 'MarketingMemberRecord',
+ parentId: 'marketing',
+ groupId: 'marketing-member',
+ auth: ['admin-user-member-record'],
order: 4
},
{
- id: 'marketing_seckill',
- title: '秒杀活动',
- path: '/pages/mall/admin/marketing/seckill/list',
- componentKey: 'MarketingSeckill',
+ id: 'marketing_member_config',
+ title: '会员配置',
+ path: '/pages/mall/admin/marketing/member/config',
+ componentKey: 'MarketingMemberConfig',
parentId: 'marketing',
- groupId: 'marketing-activity',
- auth: ['admin-marketing-storeSeckill-index'],
+ groupId: 'marketing-member',
+ auth: ['admin-user-member-config'],
order: 5
},
+ // 8. 直播管理
+ {
+ id: 'marketing_live_room',
+ title: '直播间管理',
+ path: '/pages/mall/admin/marketing/live/room',
+ componentKey: 'MarketingLiveRoom',
+ parentId: 'marketing',
+ groupId: 'marketing-live',
+ auth: ['admin-marketing-live-room'],
+ order: 1
+ },
+ {
+ id: 'marketing_live_product',
+ title: '直播商品管理',
+ path: '/pages/mall/admin/marketing/live/product',
+ componentKey: 'MarketingLiveProduct',
+ parentId: 'marketing',
+ groupId: 'marketing-live',
+ auth: ['admin-marketing-live-product'],
+ order: 2
+ },
+ {
+ id: 'marketing_live_anchor',
+ title: '主播管理',
+ path: '/pages/mall/admin/marketing/live/anchor',
+ componentKey: 'MarketingLiveAnchor',
+ parentId: 'marketing',
+ groupId: 'marketing-live',
+ auth: ['admin-marketing-live-anchor'],
+ order: 3
+ },
+ // 9. 用户充值
+ {
+ id: 'marketing_recharge_quota',
+ title: '金额设置',
+ path: '/pages/mall/admin/marketing/recharge/quota',
+ componentKey: 'MarketingRechargeQuota',
+ parentId: 'marketing',
+ groupId: 'marketing-recharge',
+ auth: ['admin-marketing-recharge-quota'],
+ order: 1
+ },
+ {
+ id: 'marketing_recharge_config',
+ title: '充值配置',
+ path: '/pages/mall/admin/marketing/recharge/config',
+ componentKey: 'MarketingRechargeConfig',
+ parentId: 'marketing',
+ groupId: 'marketing-recharge',
+ auth: ['admin-marketing-recharge-config'],
+ order: 2
+ },
+ // 10. 每日签到
+ {
+ id: 'marketing_checkin_config',
+ title: '签到配置',
+ path: '/pages/mall/admin/marketing/checkin/config',
+ componentKey: 'MarketingCheckinConfig',
+ parentId: 'marketing',
+ groupId: 'marketing-checkin',
+ auth: ['admin-marketing-checkin-config'],
+ order: 1
+ },
+ {
+ id: 'marketing_checkin_reward',
+ title: '签到奖励',
+ path: '/pages/mall/admin/marketing/checkin/reward',
+ componentKey: 'MarketingCheckinReward',
+ parentId: 'marketing',
+ groupId: 'marketing-checkin',
+ auth: ['admin-marketing-checkin-reward'],
+ order: 2
+ },
+ // 11. 渠道码 & 新人礼
+ {
+ id: 'marketing_channel_code',
+ title: '渠道码',
+ path: '/pages/mall/admin/marketing/channel/list',
+ componentKey: 'MarketingChannelList',
+ parentId: 'marketing',
+ groupId: 'marketing-other',
+ auth: ['admin-marketing-channel-index'],
+ order: 1
+ },
+ {
+ id: 'marketing_newcomer_gift',
+ title: '新人礼',
+ path: '/pages/mall/admin/marketing/newcomer/gift',
+ componentKey: 'MarketingNewcomerGift',
+ parentId: 'marketing',
+ groupId: 'marketing-other',
+ auth: ['admin-marketing-newcomer-index'],
+ order: 2
+ },
// ========== 内容模块 ==========
{
@@ -481,15 +769,95 @@ export const routes: RouteRecord[] = [
// ========== 财务模块 ==========
{
- id: 'finance_record',
- title: '财务记录',
- path: '/pages/mall/admin/finance/record',
- componentKey: 'FinanceRecord',
+ id: 'finance_transaction_stats',
+ title: '交易统计',
+ path: '/pages/mall/admin/finance/transaction_stats',
+ componentKey: 'FinanceTransactionStats',
parentId: 'finance',
- groupId: 'finance-manage',
- auth: ['admin-finance-record-index'],
+ groupId: 'finance-data',
+ auth: ['admin-finance-transaction-stats'],
order: 1
},
+ {
+ id: 'finance_withdrawal',
+ title: '提现申请',
+ path: '/pages/mall/admin/finance/withdrawal',
+ componentKey: 'FinanceWithdrawal',
+ parentId: 'finance',
+ groupId: 'finance-ops',
+ auth: ['admin-finance-withdrawal-index'],
+ order: 1
+ },
+ {
+ id: 'finance_invoice',
+ title: '发票管理',
+ path: '/pages/mall/admin/finance/invoice',
+ componentKey: 'FinanceInvoice',
+ parentId: 'finance',
+ groupId: 'finance-ops',
+ auth: ['admin-finance-invoice-index'],
+ order: 2
+ },
+ {
+ id: 'finance_recharge',
+ title: '充值记录',
+ path: '/pages/mall/admin/finance/recharge',
+ componentKey: 'FinanceRecharge',
+ parentId: 'finance',
+ groupId: 'finance-record',
+ auth: ['admin-finance-recharge-index'],
+ order: 1
+ },
+ {
+ id: 'finance_capital_flow',
+ title: '资金流水',
+ path: '/pages/mall/admin/finance/capital_flow',
+ componentKey: 'FinanceCapitalFlow',
+ parentId: 'finance',
+ groupId: 'finance-record',
+ auth: ['admin-finance-capital-flow-index'],
+ order: 2
+ },
+ {
+ id: 'finance_bill',
+ title: '账单记录',
+ path: '/pages/mall/admin/finance/bill',
+ componentKey: 'FinanceBill',
+ parentId: 'finance',
+ groupId: 'finance-record',
+ auth: ['admin-finance-bill-index'],
+ order: 3
+ },
+ {
+ id: 'finance_commission_record',
+ title: '佣金记录',
+ path: '/pages/mall/admin/finance/commission',
+ componentKey: 'FinanceCommission',
+ parentId: 'finance',
+ groupId: 'finance-commission',
+ auth: ['admin-finance-commission-index'],
+ order: 1
+ },
+ {
+ id: 'finance_balance_stats',
+ title: '余额统计',
+ path: '/pages/mall/admin/finance/balance_stats',
+ componentKey: 'FinanceBalanceStats',
+ parentId: 'finance',
+ groupId: 'finance-balance',
+ auth: ['admin-finance-balance-stats'],
+ order: 1
+ },
+ {
+ id: 'finance_balance_record',
+ title: '余额记录',
+ path: '/pages/mall/admin/finance/balance_record',
+ componentKey: 'FinanceBalanceRecord',
+ parentId: 'finance',
+ groupId: 'finance-balance',
+ auth: ['admin-finance-balance-record-index'],
+ order: 2
+ },
// ========== 数据统计模块 ==========
{
@@ -533,7 +901,205 @@ export const routes: RouteRecord[] = [
groupId: 'setting-system',
auth: ['admin-setting-system-role'],
order: 3
- }
+ },
+
+ // ========== 分销模块 ==========
+ {
+ id: 'distribution_statistic',
+ title: '分销统计',
+ path: '/pages/mall/admin/distribution/statistic',
+ componentKey: 'DistributionStatistic',
+ parentId: 'distribution',
+ groupId: 'distribution-manage',
+ order: 1
+ },
+ {
+ id: 'distribution_list',
+ title: '分销员列表',
+ path: '/pages/mall/admin/distribution/list',
+ componentKey: 'DistributionList',
+ parentId: 'distribution',
+ groupId: 'distribution-manage',
+ order: 2
+ },
+ {
+ id: 'distribution_config',
+ title: '分销设置',
+ path: '/pages/mall/admin/distribution/config',
+ componentKey: 'DistributionConfig',
+ parentId: 'distribution',
+ groupId: 'distribution-manage',
+ order: 3
+ },
+
+ // ========== 客服模块 ==========
+ {
+ id: 'kefu_list',
+ title: '客服列表',
+ path: '/pages/mall/admin/kefu/list',
+ componentKey: 'KefuList',
+ parentId: 'kefu',
+ groupId: 'kefu-manage',
+ order: 1
+ },
+ {
+ id: 'kefu_words',
+ title: '客服话术',
+ path: '/pages/mall/admin/kefu/words',
+ componentKey: 'KefuWords',
+ parentId: 'kefu',
+ groupId: 'kefu-manage',
+ order: 2
+ },
+ {
+ id: 'kefu_feedback',
+ title: '用户留言',
+ path: '/pages/mall/admin/kefu/feedback',
+ componentKey: 'KefuFeedback',
+ parentId: 'kefu',
+ groupId: 'kefu-manage',
+ order: 3
+ },
+ {
+ id: 'kefu_auto_reply',
+ title: '自动回复',
+ path: '/pages/mall/admin/kefu/auto_reply',
+ componentKey: 'KefuAutoReply',
+ parentId: 'kefu',
+ groupId: 'kefu-manage',
+ order: 4
+ },
+ {
+ id: 'kefu_config',
+ title: '客服配置',
+ path: '/pages/mall/admin/kefu/config',
+ componentKey: 'KefuConfig',
+ parentId: 'kefu',
+ groupId: 'kefu-manage',
+ order: 5
+ },
+
+ // ========== 装修模块 ==========
+ {
+ id: 'decoration_home',
+ title: '首页装修',
+ path: '/pages/mall/admin/decoration/home',
+ componentKey: 'DecorationHome',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 1
+ },
+ {
+ id: 'decoration_category',
+ title: '商品分类',
+ path: '/pages/mall/admin/decoration/category',
+ componentKey: 'DecorationCategory',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 2
+ },
+ {
+ id: 'decoration_user',
+ title: '个人中心',
+ path: '/pages/mall/admin/decoration/user',
+ componentKey: 'DecorationUser',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 3
+ },
+ {
+ id: 'decoration_data',
+ title: '数据配置',
+ path: '/pages/mall/admin/decoration/data',
+ componentKey: 'DecorationData',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 4
+ },
+ {
+ id: 'decoration_style',
+ title: '主题风格',
+ path: '/pages/mall/admin/decoration/style',
+ componentKey: 'DecorationStyle',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 5
+ },
+ {
+ id: 'decoration_material',
+ title: '素材管理',
+ path: '/pages/mall/admin/decoration/material',
+ componentKey: 'DecorationMaterial',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 6
+ },
+ {
+ id: 'decoration_link',
+ title: '链接管理',
+ path: '/pages/mall/admin/decoration/link',
+ componentKey: 'DecorationLink',
+ parentId: 'decoration',
+ groupId: 'decoration-manage',
+ order: 7
+ },
+
+ // ========== 应用模块 ==========
+ {
+ id: 'app_statistic',
+ title: '应用统计',
+ path: '/pages/mall/admin/app/statistic',
+ componentKey: 'AppStatistic',
+ parentId: 'app',
+ groupId: 'app-manage',
+ order: 1
+ },
+ {
+ id: 'app_list',
+ title: '应用列表',
+ path: '/pages/mall/admin/app/list',
+ componentKey: 'AppList',
+ parentId: 'app',
+ groupId: 'app-manage',
+ order: 2
+ },
+
+ // ========== 维护模块 ==========
+ // 开发配置
+ { id: 'maintain_dev_config', title: '配置分类', path: '/pages/mall/admin/maintain/dev/config', componentKey: 'MaintainDevConfig', parentId: 'maintain', groupId: 'maintain-dev', order: 1 },
+ { id: 'maintain_dev_data', title: '组合数据', path: '/pages/mall/admin/maintain/dev/data', componentKey: 'MaintainDevData', parentId: 'maintain', groupId: 'maintain-dev', order: 2 },
+ { id: 'maintain_dev_task', title: '定时任务', path: '/pages/mall/admin/maintain/dev/task', componentKey: 'MaintainDevTask', parentId: 'maintain', groupId: 'maintain-dev', order: 3 },
+ { id: 'maintain_dev_auth', title: '权限维护', path: '/pages/mall/admin/maintain/dev/auth', componentKey: 'MaintainDevAuth', parentId: 'maintain', groupId: 'maintain-dev', order: 4 },
+ { id: 'maintain_dev_module', title: '模块配置', path: '/pages/mall/admin/maintain/dev/module', componentKey: 'MaintainDevModule', parentId: 'maintain', groupId: 'maintain-dev', order: 5 },
+ { id: 'maintain_dev_event', title: '自定事件', path: '/pages/mall/admin/maintain/dev/event', componentKey: 'MaintainDevEvent', parentId: 'maintain', groupId: 'maintain-dev', order: 6 },
+
+ // 安全维护
+ { id: 'maintain_security_cache', title: '刷新缓存', path: '/pages/mall/admin/maintain/security/cache', componentKey: 'MaintainSecurityCache', parentId: 'maintain', groupId: 'maintain-security', order: 1 },
+ { id: 'maintain_security_log', title: '系统日志', path: '/pages/mall/admin/maintain/security/log', componentKey: 'MaintainSecurityLog', parentId: 'maintain', groupId: 'maintain-security', order: 2 },
+ { id: 'maintain_security_upgrade', title: '在线升级', path: '/pages/mall/admin/maintain/security/upgrade', componentKey: 'MaintainSecurityUpgrade', parentId: 'maintain', groupId: 'maintain-security', order: 3 },
+
+ // 数据维护
+ { id: 'maintain_data_logistics', title: '物流公司', path: '/pages/mall/admin/maintain/data/logistics', componentKey: 'MaintainDataLogistics', parentId: 'maintain', groupId: 'maintain-data', order: 1 },
+ { id: 'maintain_data_city', title: '城市数据', path: '/pages/mall/admin/maintain/data/city', componentKey: 'MaintainDataCity', parentId: 'maintain', groupId: 'maintain-data', order: 2 },
+ { id: 'maintain_data_clear', title: '清除数据', path: '/pages/mall/admin/maintain/data/clear', componentKey: 'MaintainDataClear', parentId: 'maintain', groupId: 'maintain-data', order: 3 },
+
+ // 对外接口
+ { id: 'maintain_api_account', title: '账号管理', path: '/pages/mall/admin/maintain/api/account', componentKey: 'MaintainApiAccount', parentId: 'maintain', groupId: 'maintain-api', order: 1 },
+
+ // 语言设置
+ { id: 'maintain_lang_list', title: '语言列表', path: '/pages/mall/admin/maintain/lang/list', componentKey: 'MaintainLangList', parentId: 'maintain', groupId: 'maintain-lang', order: 1 },
+ { id: 'maintain_lang_detail', title: '语言详情', path: '/pages/mall/admin/maintain/lang/detail', componentKey: 'MaintainLangDetail', parentId: 'maintain', groupId: 'maintain-lang', order: 2 },
+ { id: 'maintain_lang_region', title: '地区列表', path: '/pages/mall/admin/maintain/lang/region', componentKey: 'MaintainLangRegion', parentId: 'maintain', groupId: 'maintain-lang', order: 3 },
+ { id: 'maintain_lang_config', title: '翻译配置', path: '/pages/mall/admin/maintain/lang/config', componentKey: 'MaintainLangConfig', parentId: 'maintain', groupId: 'maintain-lang', order: 4 },
+
+ // 开发工具
+ { id: 'maintain_tool_db', title: '数据库管理', path: '/pages/mall/admin/maintain/tool/db', componentKey: 'MaintainToolDb', parentId: 'maintain', groupId: 'maintain-tool', order: 1 },
+ { id: 'maintain_tool_file', title: '文件管理', path: '/pages/mall/admin/maintain/tool/file', componentKey: 'MaintainToolFile', parentId: 'maintain', groupId: 'maintain-tool', order: 2 },
+ { id: 'maintain_tool_api', title: '接口管理', path: '/pages/mall/admin/maintain/tool/api', componentKey: 'MaintainToolApi', parentId: 'maintain', groupId: 'maintain-tool', order: 3 },
+ { id: 'maintain_tool_dic', title: '数据字典', path: '/pages/mall/admin/maintain/tool/dic', componentKey: 'MaintainToolDic', parentId: 'maintain', groupId: 'maintain-tool', order: 4 },
+
+ // 系统信息
+ { id: 'maintain_sys_info', title: '系统信息', path: '/pages/mall/admin/maintain/sys/info', componentKey: 'MaintainSysInfo', parentId: 'maintain', groupId: 'maintain-sys', order: 1 }
]
/**
diff --git a/pages/mall/admin/cms/article/list.uvue b/pages/mall/admin/cms/article/list.uvue
index 51b3bdd9..60ac6697 100644
--- a/pages/mall/admin/cms/article/list.uvue
+++ b/pages/mall/admin/cms/article/list.uvue
@@ -1,15 +1,217 @@
-
-
diff --git a/pages/mall/admin/product/product-management/member-price.uvue b/pages/mall/admin/product/product-management/member-price.uvue
new file mode 100644
index 00000000..826daae1
--- /dev/null
+++ b/pages/mall/admin/product/product-management/member-price.uvue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+ UR2024夏季新款女装复古纯欲氛围感一字肩短款T恤衫
+
+
+
+
+ 规格名称
+ 售价
+ 普通会员价
+ 黄金会员价
+ 铂金会员价
+
+
+ XL,卡其
+ ¥99.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/mall/admin/product/product-statistics/index.uvue b/pages/mall/admin/product/product-statistics/index.uvue
index 5b2efc99..2acbfe8e 100644
--- a/pages/mall/admin/product/product-statistics/index.uvue
+++ b/pages/mall/admin/product/product-statistics/index.uvue
@@ -1,26 +1,568 @@
-
-
-
+
+
+
+
+
+
+ {{ item.emoji }}
+
+
+ {{ item.label }}
+ {{ item.value }}
+
+ 坏比增长:
+
+ {{ item.compare }}
+ ▲
+ ▼
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.id }}
+
+
+
+
+ {{ item.name }}
+
+ {{ item.views }}
+ {{ item.visitors }}
+ {{ item.cartCount }}
+ {{ item.orderCount }}
+ {{ item.payCount }}
+ {{ item.payAmount }}
+ {{ item.favCount }}
+ {{ item.conversion }}%
+
+
+
+
diff --git a/pages/mall/admin/product/reply.uvue b/pages/mall/admin/product/reply.uvue
index 13746efd..5704b44c 100644
--- a/pages/mall/admin/product/reply.uvue
+++ b/pages/mall/admin/product/reply.uvue
@@ -1,15 +1,95 @@
-
-