# 页面装修功能 - 完整文档

> 参考CRMEB项目标准，实现完整的页面装修和DIY设计系统

## 📑 目录

1. [项目概述](#项目概述)
2. [核心功能](#核心功能)
3. [文件结构](#文件结构)
4. [页面功能详解](#页面功能详解)
5. [API文档](#api文档)
6. [数据结构](#数据结构)
7. [使用指南](#使用指南)
8. [开发计划](#开发计划)
9. [与CRMEB对标](#与crmeb对标)

---

## 项目概述

### 功能定位

页面装修模块是一个可视化的页面DIY系统，允许商城管理员通过拖拽和配置组件来自定义页面内容和布局，无需编码即可创建和维护多种展示页面。

### 核心价值

- **降低运营成本**: 无需技术人员，运营即可完成页面装修
- **提高灵活性**: 快速响应市场变化，实时调整页面内容
- **增强转化**: 通过优化页面布局和展示方式，提升用户转化率
- **品牌展示**: 展现品牌特色和商城个性，增强用户体验

### 技术栈

- **框架**: uni-app-x (Vue3 + TypeScript)
- **组件库**: uni.scss 设计系统
- **数据管理**: Promise-based 异步API
- **布局**: Flexbox + Grid 响应式设计

---

## 核心功能

### 🏠 1. 首页装修

**功能特性**:

- 自定义首页布局和显示内容
- 支持轮播图、商品展示、文本等多种组件
- 实时预览装修效果
- 版本管理和发布上线

**使用场景**:

- 节日活动首页设计
- 品牌形象展示
- 商品推荐展示
- 营销信息发布

**功能入口**:

```
系统 → 设计 → 页面装修 → [首页装修] 标签页 → 编辑首页
```

### 📂 2. 分类页装修

**功能特性**:

- 为不同商品分类创建独立的装修页面
- 支持多套分类装修方案并存
- 按分类自动应用对应装修效果
- 快速切换和对比装修效果

**使用场景**:

- 分类专题页设计
- 品类运营和推广
- A/B测试对比
- 季节性活动专页

**功能入口**:

```
系统 → 设计 → 页面装修 → [分类页] 标签页 → 新建装修
```

**分类装修列表**:

- 显示所有已创建的分类装修
- 展示关联分类名称
- 显示发布状态
- 支持编辑、预览、删除操作

### 🛍️ 3. 商品页装修

**功能特性**:

- 自定义商品详情页的布局和模块
- 支持商品图、信息、评价、推荐等模块
- 优化转化漏斗，提升销售额
- 支持A/B测试验证效果

**使用场景**:

- 提升商品详情页转化率
- 突出商品卖点
- 展示用户评价和反馈
- 推荐相关商品

**功能入口**:

```
系统 → 设计 → 页面装修 → [商品页] 标签页 → 编辑商品页
```

### ✏️ 4. 自定义页面

**功能特性**:

- 创建完全自定义的营销和推广页面
- 灵活的页面路径设置
- 独立的装修配置和管理
- 活动和推广专用

**使用场景**:

- 限时促销活动页
- 新品发布页面
- 品牌故事展示页
- 用户专享页面

**功能入口**:

```
系统 → 设计 → 页面装修 → [自定义] 标签页 → 新建页面
```

**自定义页面管理**:

- 显示所有自定义页面列表
- 展示页面路径和访问地址
- 管理发布状态
- 支持编辑、预览、删除

### 🎨 5. 页面模板库

**功能特性**:

- 预设4套精心设计的电商风格模板
- 一键应用模板，快速建站
- 模板库不断扩充和升级
- 支持自定义模板保存

**预设模板**:

1. **电商风格A** - 简洁现代
   - 简约配色，强调商品展示
   - 适合高端品牌
   - 突出产品品质

2. **电商风格B** - 豪华展示
   - 丰富的视觉效果
   - 适合大众商城
   - 强调活动促销

3. **精品风格** - 精品展示
   - 精细的排版设计
   - 适合精品商城
   - 强调用户体验

4. **商城风格** - 完整商城
   - 功能完整的布局
   - 适合综合商城
   - 包含所有必要模块

**功能入口**:

```
系统 → 设计 → 页面装修 → [模板库] 标签页 → 选择模板 → 使用模板
```

### 🧩 6. 组件库

**功能特性**:

- 提供8种预设装修组件
- 组件库持续扩充
- 支持自定义组件配置
- 灵活的嵌套和组合

**8类预设组件**:

| 组件     | 类型     | 图标 | 描述               | 用途               |
| -------- | -------- | ---- | ------------------ | ------------------ |
| 图片组件 | image    | I    | 展示图片和图片轮播 | 产品展示、活动推广 |
| 文本组件 | text     | T    | 展示文本内容和段落 | 文案描述、说明文字 |
| 商品组件 | product  | P    | 展示商品列表和推荐 | 商品展示、推荐引流 |
| 轮播组件 | carousel | C    | 图片和内容轮播     | 焦点图、内容轮播   |
| 分割线   | divider  | D    | 分割不同内容区域   | 版面分割、结构分明 |
| 间距组件 | spacer   | S    | 调整元素间距       | 布局美化、层级区分 |
| 按钮组件 | button   | B    | 创建点击按钮       | 行动召唤、用户转化 |
| 表单组件 | form     | F    | 收集用户输入数据   | 用户信息、意见反馈 |

**功能入口**:

```
系统 → 设计 → 页面装修 → [组件库] 标签页 → 查看可用组件
```

---

## 文件结构

### 目录结构

```
mall/
├── pages/mall/admin/design/
│   ├── index.uvue              # 装修管理主界面 (898行)
│   │   ├── 页面头部
│   │   ├── 导航选项卡
│   │   ├── 首页装修模块
│   │   ├── 分类装修模块
│   │   ├── 商品装修模块
│   │   ├── 自定义页面模块
│   │   ├── 模板库模块
│   │   └── 组件库模块
│   │
│   ├── design.uts              # 业务逻辑 (350+行)
│   │   ├── 接口定义
│   │   ├── API函数
│   │   ├── 工具函数
│   │   └── 验证函数
│   │
│   ├── editor.uvue             # 装修编辑器 (待实现)
│   ├── preview.uvue            # 装修预览 (待实现)
│   └── README.md               # 模块说明文档
│
├── docs/
│   ├── DESIGN_DECORATION_GUIDE.md       # 本文档
│   ├── DESIGN_IMPLEMENTATION_REPORT.md  # 实现报告
│   └── ...
│
└── menu.uts                    # 菜单配置 (包含设计菜单)
```

### 核心文件说明

#### index.uvue (898行)

**职责**: 装修管理的主UI界面

**主要模块**:

- 页面头部：标题和副标题
- 导航选项卡：6个功能模块切换
- 内容区域：各模块的具体功能显示
- 响应式布局：支持桌面、平板、手机

**关键功能**:

```typescript
// 数据管理
const activeTab = ref<string>('homepage')
const categoryDesigns = ref<any[]>([])
const customPages = ref<any[]>([])

// 事件处理
const handleEditPage = (pageType: string)
const handleCreateCategory = ()
const handleDeleteCategory = (id: number)
// ... 更多事件

// 样式系统
@import '@/uni.scss'  // 集成设计系统
```

#### design.uts (350+行)

**职责**: 装修功能的所有业务逻辑和数据管理

**核心内容**:

1. **接口定义**

   ```typescript
   interface DesignItem        // 装修页面数据
   interface DesignComponent   // 装修组件数据
   interface DesignTemplate    // 装修模板数据
   interface DesignConstraints // 约束条件
   ```

2. **API函数** (8个导出函数)
   - getDesignList() // 获取装修列表
   - getHomePageDesign() // 获取首页装修
   - getProductPageDesign() // 获取商品页装修
   - getCategoryDesigns() // 获取分类装修
   - getCustomPages() // 获取自定义页面
   - getTemplateLibrary() // 获取模板库
   - getAvailableComponents() // 获取组件库
   - saveDesign() // 保存装修
   - publishDesign() // 发布装修
   - deleteDesign() // 删除装修

3. **工具函数**
   - formatDateTime() // 日期格式化
   - validateComponent() // 组件验证
   - generateComponentId() // 生成组件ID
   - getDesignConstraints() // 获取约束条件
   - cloneDesign() // 深度克隆
   - validateDesign() // 装修验证
   - exportDesignJSON() // 导出JSON
   - importDesignJSON() // 导入JSON

---

## 页面功能详解

### 📋 UI布局结构

#### 1. 页面头部

```
┌──────────────────────────────────────┐
│ 页面装修                             │
│ 设计和装修您的商城页面              │
└──────────────────────────────────────┘
```

- 大标题: "页面装修"
- 副标题: "设计和装修您的商城页面"

#### 2. 导航选项卡

```
[ H首页装修 ] [ C分类页 ] [ P商品页 ] [ +自定义 ] [ T模板库 ] [ B组件库 ]
```

- 点击切换不同功能模块
- 当前活跃选项卡高亮显示
- 支持键盘快捷键（可扩展）

#### 3. 首页装修模块

```
内容标题          [编辑按钮]
┌────────────────────────────┐
│                            │
│  设计卡片布局              │
│  └─ 卡片信息               │
│     └─ 操作按钮            │
│        [编辑] [预览]       │
│                            │
└────────────────────────────┘
```

#### 4. 分类页模块

```
内容标题          [新建装修]
┌────────────────────────────┐
│  分类1  [状态] [编辑][删除] │
│  分类2  [状态] [编辑][删除] │
│  分类3  [状态] [编辑][删除] │
└────────────────────────────┘
```

#### 5. 模板库模块

```
┌──────────┬──────────┬──────────┬──────────┐
│ 模板卡1  │ 模板卡2  │ 模板卡3  │ 模板卡4  │
├──────────┼──────────┼──────────┼──────────┤
│ [预览]   │ [预览]   │ [预览]   │ [预览]   │
│ 名称     │ 名称     │ 名称     │ 名称     │
│ 描述     │ 描述     │ 描述     │ 描述     │
└──────────┴──────────┴──────────┴──────────┘
```

#### 6. 组件库模块

```
┌──────────┬──────────┬──────────┬──────────┐
│ 组件卡1  │ 组件卡2  │ 组件卡3  │ 组件卡4  │
├──────────┼──────────┼──────────┼──────────┤
│ [图标]   │ [图标]   │ [图标]   │ [图标]   │
│ 名称     │ 名称     │ 名称     │ 名称     │
│ 描述     │ 描述     │ 描述     │ 描述     │
│ [添加]   │ [添加]   │ [添加]   │ [添加]   │
└──────────┴──────────┴──────────┴──────────┘
```

---

## API文档

### 主API函数

#### 1. getDesignList(params?)

获取装修页面列表

```typescript
const designs = await getDesignList()

// 返回值示例
[
  {
    id: 1,
    name: '首页装修',
    type: 'homepage',
    status: 1,
    content: [],
    updated_at: '2026-01-30 14:30:00'
  },
  // ...
]
```

#### 2. getHomePageDesign()

获取首页装修详情

```typescript
const homepage = await getHomePageDesign()

// 返回包含的组件内容
{
  id: 'homepage',
  name: '首页装修',
  type: 'homepage',
  content: [
    { id: 'carousel-1', type: 'carousel', ... },
    { id: 'product-1', type: 'product', ... }
  ]
}
```

#### 3. getCategoryDesigns()

获取分类装修列表

```typescript
const categories =
  await getCategoryDesigns()[
    // 返回示例
    {
      id: 1,
      name: "默认分类装修",
      type: "category",
      status: 1,
      categoryId: 0,
      categoryName: "全部分类",
    }
  ];
```

#### 4. getCustomPages()

获取自定义页面列表

```typescript
const pages =
  await getCustomPages()[
    // 返回示例
    {
      id: 1,
      name: "新年促销页",
      type: "custom",
      status: 1,
      path: "/pages/promotion/newyear",
    }
  ];
```

#### 5. getTemplateLibrary()

获取页面模板库

```typescript
const templates =
  await getTemplateLibrary()[
    // 返回示例
    {
      id: 1,
      name: "电商风格A",
      description: "简洁现代的电商布局",
      type: "homepage",
      preview: "@/static/images/template-a.png",
    }
  ];
```

#### 6. getAvailableComponents()

获取可用组件库

```typescript
const components =
  await getAvailableComponents()[
    // 返回示例
    {
      id: "image",
      type: "image",
      name: "图片组件",
      icon: "I",
      description: "展示图片和图片轮播",
      componentName: "ImageComponent",
    }
  ];
```

#### 7. saveDesign(design)

保存装修页面

```typescript
const result = await saveDesign({
  id: 1,
  name: '新建装修',
  type: 'homepage',
  status: 0,
  content: []
})

// 返回示例
{ id: 1, message: '保存成功' }
```

#### 8. publishDesign(designId)

发布装修页面

```typescript
await publishDesign(1);
// 返回: { message: '发布成功' }
```

#### 9. deleteDesign(designId)

删除装修页面

```typescript
await deleteDesign(1);
// 返回: { message: '删除成功' }
```

---

## 数据结构

### DesignItem 装修页面

```typescript
interface DesignItem {
  id: string | number;
  name: string; // 装修名称
  type: "homepage" | "category" | "product" | "custom";
  status: 0 | 1; // 0=草稿, 1=已发布
  categoryId?: string | number; // 分类ID
  categoryName?: string; // 分类名称
  path?: string; // 自定义页面路径
  preview_url?: string; // 预览图URL
  content: DesignComponent[]; // 组件列表
  version?: string; // 版本号
  created_at?: string; // 创建时间
  updated_at?: string; // 更新时间
}
```

### DesignComponent 组件

```typescript
interface DesignComponent {
  id: string; // 组件唯一ID
  type:
    | "image"
    | "text"
    | "product"
    | "carousel"
    | "divider"
    | "spacer"
    | "button"
    | "form";
  name: string; // 组件名称
  icon: string; // 组件图标
  description?: string; // 组件描述
  componentName?: string; // Vue组件名
  config?: Record<string, any>; // 配置参数
  children?: DesignComponent[]; // 子组件
}
```

### DesignTemplate 模板

```typescript
interface DesignTemplate {
  id: string | number;
  name: string; // 模板名称
  description: string; // 模板描述
  type: string; // 模板类型
  preview: string; // 预览图URL
  content: DesignComponent[]; // 模板内容
  created_at?: string; // 创建时间
}
```

---

## 使用指南

### 快速开始

#### 步骤1: 访问装修页面

```
1. 登录管理后台
2. 点击左侧菜单 "系统" → "设计" → "页面装修"
3. 进入装修管理主界面
```

#### 步骤2: 选择装修类型

```
点击对应标签页:
- 首页装修: 自定义商城首页
- 分类页: 为分类创建装修
- 商品页: 自定义商品详情页
- 自定义: 创建营销推广页
- 模板库: 使用预设模板
- 组件库: 查看可用组件
```

#### 步骤3: 编辑装修

```
1. 点击 [编辑] 按钮或卡片
2. 进入装修编辑器
3. 拖拽组件到页面
4. 配置组件参数
5. 实时预览效果
```

#### 步骤4: 发布上线

```
1. 编辑完成后点击 [发布]
2. 确认发布内容
3. 确认后装修即刻生效
```

---

## 开发计划

### Phase 1: 基础编辑器 (优先级: 高)

- [ ] **editor.uvue** - 装修编辑器界面
  - 组件编辑面板
  - 实时预览窗口
  - 属性配置区
  - 撤销/重做功能

- [ ] **拖拽排序** - 组件拖拽和排序
  - 拖拽添加组件
  - 拖拽排序组件
  - 删除组件

- [ ] **属性配置** - 组件参数设置
  - 基本属性编辑
  - 样式自定义
  - 响应式设置

### Phase 2: 高级功能 (优先级: 中)

- [ ] **版本管理** - 版本控制和回滚
  - 版本列表
  - 版本对比
  - 版本回滚
  - 自动保存草稿

- [ ] **模板管理** - 模板库功能
  - 模板列表
  - 模板预览
  - 模板应用
  - 自定义模板保存

- [ ] **页面克隆** - 快速复制功能
  - 克隆装修页面
  - 保留配置结构
  - 快速修改

### Phase 3: 智能特性 (优先级: 低)

- [ ] **AI建议** - 人工智能优化
  - 布局建议
  - 色彩搭配
  - 文案优化

- [ ] **数据分析** - 性能监控
  - 页面访问统计
  - 用户转化分析
  - 性能指标

---

## 与CRMEB对标

### CRMEB标准功能对标

| 功能       | CRMEB | mall | 状态      |
| ---------- | ----- | ---- | --------- |
| 首页装修   | Y     | Y    | ✓ 已实现  |
| 分类页装修 | Y     | Y    | ✓ 已实现  |
| 商品页装修 | Y     | Y    | ✓ 已实现  |
| 自定义页面 | Y     | Y    | ✓ 已实现  |
| 组件库     | Y     | Y    | ✓ 已实现  |
| 模板库     | Y     | Y    | ✓ 已实现  |
| 拖拽编辑器 | Y     | -    | ⏳ 开发中 |
| 实时预览   | Y     | -    | ⏳ 规划中 |
| 版本管理   | Y     | -    | ⏳ 规划中 |
| AI布局建议 | -     | -    | ⏳ 规划中 |

### 组件库对标

| 组件     | CRMEB | mall | 说明      |
| -------- | ----- | ---- | --------- |
| 图片轮播 | Y     | Y    | ✓ 支持    |
| 商品列表 | Y     | Y    | ✓ 支持    |
| 分类导航 | Y     | -    | ⏳ 规划中 |
| 搜索框   | Y     | -    | ⏳ 规划中 |
| 优惠券   | Y     | -    | ⏳ 规划中 |
| 倒计时   | Y     | -    | ⏳ 规划中 |
| 视频     | Y     | -    | ⏳ 规划中 |
| 直播     | Y     | -    | ⏳ 规划中 |

---

## 技术特性

### 设计系统集成

```typescript
@import '@/uni.scss'

// 颜色系统
$brand-primary: #1890ff
$brand-success: #52c41a
$text-primary: #000000
$background-secondary: #f5f5f5

// 间距系统
$space-sm: 8px
$space-md: 16px
$space-lg: 24px

// 圆角系统
$radius: 8px
$radius-sm: 4px
```

### 响应式设计

```
桌面版 (≥1024px)  : 4列网格
平板版 (768-1023px): 3列网格 + 响应式菜单
手机版 (≤767px)   : 2列网格 + 单列列表
```

### TypeScript 类型安全

所有接口和数据结构都使用TypeScript定义，确保类型安全和IDE支持。

---

## 常见问题

### Q: 如何快速创建首页装修?

A: 可以：

1. 进入模板库选择合适模板
2. 一键应用模板内容
3. 在编辑器中修改细节
4. 发布上线

### Q: 支持多少个组件?

A: 单个装修页面最多支持50个组件，可根据需要调整。

### Q: 如何备份装修数据?

A: 可以使用导出JSON功能备份，然后可随时导入恢复。

### Q: 装修后立即生效吗?

A: 点击发布后立即生效，无需其他步骤。

---

**文档版本**: 1.0.0  
**最后更新**: 2026-01-31  
**维护者**: 设计团队
