目标
构建前端演示系统的数据层,使用JSON文件模拟分销商相关数据,实现数据筛选、排序、分页和权限过滤功能,为4个核心功能模块提供数据支持。
详细描述
建立基于JSON文件的模拟数据系统,专注于分销商信息查询、变更指引、新增指引和应收账款管理的数据展示需求。实现数据筛选、排序、权限过滤等前端数据处理功能,为演示系统提供逼真的业务数据。
验收条件
实现细节
数据文件结构
src/data/
├── distributors.json # 分销商基本信息
├── licenses.json # 证照信息
├── receivables.json # 应收账款
├── users.json # 用户权限数据
└── config.json # 系统配置
数据处理函数
// 分销商数据服务接口
interface DistributorService {
getDistributors(filters: DistributorFilter): Promise<Distributor[]>
getDistributorsByEntity(entity: 'NNSH' | 'NNCP', filters?: DistributorFilter): Promise<Distributor[]>
getLicenses(distributorId: string): Promise<License[]>
getReceivables(filters: ReceivableFilter): Promise<Receivable[]>
filterByUserRole(data: any[], userRole: UserRole, userId: string): any[]
filterByEntity(data: Distributor[], entity: 'NNSH' | 'NNCP'): Distributor[]
sortData<T>(data: T[], sortBy: keyof T, order: 'asc' | 'desc'): T[]
paginateData<T>(data: T[], page: number, pageSize: number): PaginatedResult<T>
toggleExpand(itemId: string, expanded: boolean): void
searchData<T>(data: T[], searchTerm: string, searchFields: (keyof T)[]): T[]
}
权限系统
- 角色定义:
- 商务人员 - 查看和管理自己负责的分销商信息
- 省经理 - 管理区域内分销商信息
- 商务大区负责人 - 区域分销商管理和监督
- 物流组 - 查看全部分销商应收账款信息
- 供应链人员 - 分销商供应链相关信息管理
- 权限粒度:按主体(NNSH/NNCP)、分销商范围、功能模块
- 数据过滤:商务人员只看负责范围,物流组看全部应收账款
- 权限检查:基于用户角色和数据归属关系
数据验证
// 分销商数据类型定义
interface Distributor {
id: string
name: string // 分销商名称
entities: DistributorEntity[] // 在不同主体下的信息
status: 'active' | 'inactive'
address: string // 主要地址
expanded?: boolean // 展开/折叠状态
}
interface DistributorEntity {
entity: 'NNSH' | 'NNCP' // 主体
region: string // 商务大区
manager: string // 负责商务
contact: string // 该主体下的联系人
phone: string // 该主体下的联系电话
email?: string // 该主体下的邮箱
entityStatus: 'active' | 'inactive' | 'pending' // 在该主体下的状态
}
interface License {
id: string
distributorId: string
type: string // 证照类型
name: string // 证照名称
number: string // 证照编号
issueDate: string // 发证日期
expiryDate: string // 到期日期
status: 'valid' | 'expiring' | 'expired'
daysToExpiry?: number // 距离到期天数
}
interface Receivable {
id: string
distributorId: string
distributorName: string
entity: 'NNSH' | 'NNCP' // 所属主体
amount: number // 应收金额
dueDate: string // 应收到期日
arrivalDate: string // 订单到货日期
status: 'pending' | 'overdue' | 'paid'
businessName: string // 商业名称
daysOverdue?: number // 逾期天数
region: string // 商务大区
manager: string // 负责商务
}
interface User {
id: string
name: string
role: UserRole
entities: UserEntity[] // 用户在不同主体下的权限
}
interface UserEntity {
entity: 'NNSH' | 'NNCP' | 'ALL'
region?: string // 负责区域
distributorIds?: string[] // 负责分销商ID列表
}
type UserRole = '商务人员' | '省经理' | '商务大区负责人' | '物流组' | '供应链人员'
模拟服务
- 异步加载:模拟真实API调用延迟(500-1500ms)
- 错误处理:模拟网络错误和数据异常场景
- 加载状态:提供loading、success、error状态管理
- 缓存机制:模拟数据缓存,避免重复请求
- 搜索防抖:实现搜索输入防抖处理
定义完成
演示数据层完全可用,JSON数据文件结构完整且符合目录结构规范,数据筛选、搜索、排序和权限过滤功能正常,能够支持4个核心功能模块的数据展示需求,模拟真实业务场景,与设计系统的组件样式完美配合。
注意事项
- JSON数据文件放置在src/data/目录下(符合001项目结构)
- 权限过滤的准确性(商务人员只看负责数据)
- 数据筛选和搜索性能(支持多维度筛选)
- 演示数据的真实性和业务逻辑合理性
- 与TailwindCSS主题的状态色彩保持一致
- 确保数据类型定义完整,支持组件展开/折叠状态
相关资源
- TypeScript数据类型定义
- Next.js数据获取最佳实践
- 诺和诺德业务逻辑参考 (@rfp\RFP.md)
- 前端权限控制模式
- 数据展示组件状态管理
目标
构建前端演示系统的数据层,使用JSON文件模拟分销商相关数据,实现数据筛选、排序、分页和权限过滤功能,为4个核心功能模块提供数据支持。
详细描述
建立基于JSON文件的模拟数据系统,专注于分销商信息查询、变更指引、新增指引和应收账款管理的数据展示需求。实现数据筛选、排序、权限过滤等前端数据处理功能,为演示系统提供逼真的业务数据。
验收条件
实现细节
数据文件结构
数据处理函数
权限系统
数据验证
模拟服务
定义完成
演示数据层完全可用,JSON数据文件结构完整且符合目录结构规范,数据筛选、搜索、排序和权限过滤功能正常,能够支持4个核心功能模块的数据展示需求,模拟真实业务场景,与设计系统的组件样式完美配合。
注意事项
相关资源