dm-design/商家端web/.spec-workflow/specs/merchant-account-permission/design.md

170 lines
4.8 KiB
Markdown
Raw Normal View History

# Design Document
## Overview
商家端账号权限分配页面是一个独立的前端HTML页面基于平台端权限分配页面的设计模式进行适配改造。主要替换菜市场选择功能为商家身份选择保持一致的UI风格和交互体验。
## 技术决策
### 代码复用策略
完全复用平台端权限分配.html的CSS样式和JavaScript交互逻辑仅修改以下部分
- 替换菜市场选择下拉框为商家身份选择
- 更新相关文案和提示信息
- 调整数据结构(移除菜市场数据,增加身份类型数据)
### 文件组织
- **位置**: `/Users/linbin/Documents/代码/dmjs-demo/商家端web/1 权限管理/账号权限分配.html`
- **类型**: 独立HTML文件包含内联CSS和JavaScript
- **依赖**: 纯前端实现,无需外部库依赖
## 架构设计
### 组件结构
```
账号权限分配页面
├── 布局容器 (Container)
│ ├── 头部区域 (Header)
│ │ ├── 页面标题
│ │ └── 操作按钮区域
│ ├── 内容区域 (Content)
│ │ ├── 账号创建表单区域
│ │ │ ├── 身份选择下拉框
│ │ │ └── 手机号输入框
│ │ ├── 权限分配树形区域
│ │ │ └── 权限复选框树
│ │ └── 操作按钮区域
│ └── 交互逻辑层 (JavaScript)
│ ├── 身份选择处理
│ ├── 权限树渲染
│ ├── 表单验证
│ └── 数据收集与提交
```
### 核心修改点
1. **身份选择组件**: 替换原有的菜市场复杂下拉选择为简单的select下拉框
2. **数据结构简化**: 移除菜市场搜索过滤逻辑,使用固定的身份选项
3. **验证逻辑调整**: 验证身份选择而非菜市场选择
## 数据模型
### 身份类型定义
```javascript
const identityTypes = [
{ id: 1, name: '子经营者', code: 'SUB_MERCHANT' },
{ id: 2, name: '商户', code: 'MERCHANT' }
];
```
### 表单数据结构
```javascript
const formData = {
identity: {
id: number,
name: string,
code: string
},
phoneNumber: string,
permissions: string[], // 权限代码数组
timestamp: string
};
```
## 组件实现
### HTML结构修改
1. 替换`菜市场选择 *`为`创建账号身份 *`
2. 删除复杂的菜市场下拉组件使用标准select元素
3. 更新相关表单验证和错误提示
### CSS复用策略
完全复用参考文件的样式系统,包括:
- 颜色方案(渐变头部、按钮色彩体系)
- 布局系统(响应式网格、卡片设计)
- 交互动画hover效果、阴影过渡
- 移动端适配规则
### JavaScript功能模块
#### 身份选择模块
```javascript
// 初始化身份选项
function initIdentityOptions() {
// 渲染select选项
}
// 处理身份选择变化
function handleIdentityChange(identity) {
// 更新选中状态
// 可选:根据身份类型显示推荐的权限
}
```
#### 权限管理模块(复用原逻辑)
```javascript
// 权限树构建与渲染(完全复用)
function buildPermissionTree(permissions) { /* 复用 */ }
function createPermissionNode(item) { /* 复用 */ }
function togglePermissionChildren(btn, li) { /* 复用 */ }
```
#### 表单验证模块
```javascript
// 修改验证逻辑:身份选择 + 手机号 + 权限
function validateForm() {
// 验证身份已选择
// 验证手机号格式
// 验证至少选择一个权限
}
```
## 错误处理
### 前端验证错误
1. **未选择身份**: 显示"请选择账号身份"提示
2. **手机号格式错误**: 显示"请输入正确的手机号格式"提示
3. **未选择权限**: 显示"请至少选择一个权限"提示
### 用户输入处理
- 手机号输入自动过滤非数字字符
- 表单提交前进行完整性检查
- 重置操作需要二次确认
## 浏览器兼容性
### 支持浏览器
- Chrome 80+, Firefox 75+, Safari 13+, Edge 80+
- 移动端浏览器iOS Safari, Chrome Mobile
### 降级处理
- IE11基本功能可用样式简化处理
- 旧版浏览器使用polyfill处理classList等API
## 性能优化
### 加载优化
- 内联CSS和JavaScript避免额外HTTP请求
- 权限树使用虚拟化渲染(节点数量>100时
- 图片资源使用base64编码如需图标
### 运行时优化
- 事件委托处理权限树点击
- 防抖处理输入框实时验证
- 使用DocumentFragment批量DOM操作
## 测试策略
### 功能测试
1. 身份选择下拉框交互测试
2. 权限树展开/收起功能测试
3. 表单验证逻辑测试
4. 数据收集和提交测试
### 跨浏览器测试
1. 主流浏览器样式一致性测试
2. 移动端响应式布局测试
3. 触摸事件兼容性测试
### 边界条件测试
1. 空表单提交测试
2. 权限循环引用测试
3. 大数据量权限树渲染测试