Files
d8d-admin-mobile-starter-pu…/client/share/types.ts

518 lines
11 KiB
TypeScript

export enum OssType {
ALIYUN = 'aliyun',
MINIO = 'minio',
}
// 全局配置常量
export interface GlobalConfig {
OSS_BASE_URL: string;
OSS_TYPE: OssType;
API_BASE_URL: string;
APP_NAME: string;
ENV: string;
DEFAULT_THEME: string;
MAP_CONFIG: {
KEY: string;
VERSION: string;
PLUGINS: string[];
MAP_MODE: MapMode;
};
CHART_THEME: string;
ENABLE_THEME_CONFIG: boolean;
THEME: ThemeSettings | null;
}
// 定义类型
export interface User {
id: number;
username: string;
nickname?: string;
email?: string;
phone?: string;
role: string;
avatar?: string;
password?: string;
}
export interface MenuItem {
id: number;
name: string;
path: string;
icon: string;
component: string;
parent_id?: number;
children?: MenuItem[];
}
// 认证上下文类型
export interface AuthContextType {
user: User | null;
token: string | null;
login: (username: string, password: string, latitude?: number, longitude?: number) => Promise<void>;
logout: () => Promise<void>;
isAuthenticated: boolean;
isLoading: boolean;
}
// 主题上下文类型
export interface ThemeContextType {
isDark: boolean;
currentTheme: ThemeSettings;
updateTheme: (theme: Partial<ThemeSettings>) => void; // 实时预览
saveTheme: (theme: Partial<ThemeSettings>) => Promise<ThemeSettings>; // 保存到后端
resetTheme: () => Promise<ThemeSettings>;
toggleTheme: () => void; // 切换主题模式
}
// 主题模式枚举
export enum ThemeMode {
LIGHT = 'light',
DARK = 'dark'
}
// 字体大小枚举
export enum FontSize {
SMALL = 'small',
MEDIUM = 'medium',
LARGE = 'large'
}
// 紧凑模式枚举
export enum CompactMode {
NORMAL = 0, // 正常模式
COMPACT = 1 // 紧凑模式
}
// 颜色方案类型
export interface ColorScheme {
name: string;
primary: string;
background: string;
text: string;
}
// 主题设置类型
export interface ThemeSettings {
/** 主键ID */
id?: number;
/** 用户ID */
user_id: number;
/** 主题模式(light/dark) */
theme_mode: ThemeMode;
/** 主题方案名称 */
scheme_name?: string;
/** 主题主色 */
primary_color: string;
/** 背景色 */
background_color?: string;
/** 文字颜色 */
text_color?: string;
/** 边框圆角 */
border_radius?: number;
/** 字体大小(small/medium/large) */
font_size: FontSize;
/** 是否紧凑模式(0否 1是) */
is_compact: CompactMode;
/** 创建时间 */
created_at?: string;
/** 更新时间 */
updated_at?: string;
}
// 启用/禁用状态枚举
export enum EnableStatus {
DISABLED = 0, // 禁用
ENABLED = 1 // 启用
}
// 启用/禁用状态中文映射
export const EnableStatusNameMap: Record<EnableStatus, string> = {
[EnableStatus.DISABLED]: '禁用',
[EnableStatus.ENABLED]: '启用'
};
// 删除状态枚举
export enum DeleteStatus {
NOT_DELETED = 0, // 未删除
DELETED = 1 // 已删除
}
// 删除状态中文映射
export const DeleteStatusNameMap: Record<DeleteStatus, string> = {
[DeleteStatus.NOT_DELETED]: '未删除',
[DeleteStatus.DELETED]: '已删除'
};
// 地图类型
export enum MapMode {
ONLINE = 'online',
OFFLINE = 'offline'
}
// 审核状态枚举
export enum AuditStatus {
PENDING = 0, // 待审核
APPROVED = 1, // 已通过
REJECTED = 2 // 已拒绝
}
// 审核状态中文映射
export const AuditStatusNameMap: Record<AuditStatus, string> = {
[AuditStatus.PENDING]: '待审核',
[AuditStatus.APPROVED]: '已通过',
[AuditStatus.REJECTED]: '已拒绝'
};
// 图标类型映射
type IconType = 'dashboard' | 'user' | 'setting' | 'team' | 'book' | 'calendar' | 'pie-chart' | 'database';
// 图标类型中文映射
export const IconTypeNameMap: Record<IconType, string> = {
'dashboard': '仪表盘',
'user': '用户',
'setting': '设置',
'team': '团队',
'book': '文档',
'calendar': '日历',
'pie-chart': '图表',
'database': '数据库'
};
// 附件类型定义
export interface Attachment {
/** 附件ID */
id: string;
/** 附件名称 */
name: string;
/** 附件访问地址 */
url: string;
/** 附件类型(如image/jpeg, application/pdf等) */
type: string;
/** 附件大小(字节) */
size: number;
/** 上传时间 */
upload_time: string;
}
// 操作日志表
export interface OperationLog {
/** 主键ID */
id: number;
/** 操作人ID */
operator_id: number;
/** 操作类型 */
operation_type: string;
/** 操作内容 */
operation_content?: string;
/** 操作结果 */
operation_result?: string;
/** 操作IP */
ip_address?: string;
/** 是否删除 (0否 1是) */
is_deleted?: number;
/** 创建时间 */
created_at: Date;
/** 更新时间 */
updated_at: Date;
}
// 系统设置分组
export enum SystemSettingGroup {
BASIC = 'basic', // 基础设置
FEATURE = 'feature', // 功能设置
UPLOAD = 'upload', // 上传设置
NOTIFICATION = 'notify' // 通知设置
}
// 系统设置键
export enum SystemSettingKey {
// 基础设置
SITE_NAME = 'SITE_NAME', // 站点名称
SITE_DESCRIPTION = 'SITE_DESCRIPTION', // 站点描述
SITE_KEYWORDS = 'SITE_KEYWORDS', // 站点关键词
SITE_LOGO = 'SITE_LOGO', // 站点LOGO
SITE_FAVICON = 'SITE_FAVICON', // 站点图标
// 功能设置
ENABLE_REGISTER = 'ENABLE_REGISTER', // 是否开启注册
ENABLE_CAPTCHA = 'ENABLE_CAPTCHA', // 是否开启验证码
LOGIN_ATTEMPTS = 'LOGIN_ATTEMPTS', // 登录尝试次数
SESSION_TIMEOUT = 'SESSION_TIMEOUT', // 会话超时时间(分钟)
// 上传设置
UPLOAD_MAX_SIZE = 'UPLOAD_MAX_SIZE', // 最大上传大小(MB)
ALLOWED_FILE_TYPES = 'ALLOWED_FILE_TYPES', // 允许的文件类型
IMAGE_COMPRESS = 'IMAGE_COMPRESS', // 是否压缩图片
IMAGE_MAX_WIDTH = 'IMAGE_MAX_WIDTH', // 图片最大宽度
// 通知设置
NOTIFY_ON_LOGIN = 'NOTIFY_ON_LOGIN', // 登录通知
NOTIFY_ON_UPLOAD = 'NOTIFY_ON_UPLOAD', // 上传通知
NOTIFY_ON_ERROR = 'NOTIFY_ON_ERROR', // 错误通知
// 主题设置
ENABLE_THEME_CONFIG = 'ENABLE_THEME_CONFIG' // 是否开启主题配置
}
export type SystemSettingGroupType = SystemSettingGroup;
export type SystemSettingKeyType = SystemSettingKey;
// 系统设置值类型
export type SystemSettingValue = string | number | boolean;
// 系统设置项接口
export interface SystemSetting {
id: number;
key: SystemSettingKeyType; // 设置键
value: SystemSettingValue; // 设置值
description?: string; // 设置描述
group: SystemSettingGroupType; // 设置分组
created_at?: string;
updated_at?: string;
}
// 系统设置分组类型
export interface SystemSettingGroupData {
name: string;
description: string;
settings: SystemSetting[];
}
// 系统设置记录类型
export type SystemSettingRecord = Record<SystemSettingKey, SystemSettingValue>;
// 允许的文件类型枚举
export enum AllowedFileType {
JPG = 'jpg',
JPEG = 'jpeg',
PNG = 'png',
GIF = 'gif',
DOC = 'doc',
DOCX = 'docx',
XLS = 'xls',
XLSX = 'xlsx',
PDF = 'pdf'
}
// 允许的文件类型列表(用于系统设置)
export const ALLOWED_FILE_TYPES = Object.values(AllowedFileType).join(',');
// 文件库接口
export interface FileLibrary {
/** 主键ID */
id: number;
/** 文件名称 */
file_name: string;
/** 原始文件名 */
original_filename?: string;
/** 文件路径 */
file_path: string;
/** 文件类型 */
file_type: string;
/** 文件大小(字节) */
file_size: number;
/** 上传用户ID */
uploader_id?: number;
/** 上传者名称 */
uploader_name?: string;
/** 文件分类 */
category_id?: number;
/** 文件标签 */
tags?: string;
/** 文件描述 */
description?: string;
/** 下载次数 */
download_count: number;
/** 是否禁用 (0否 1是) */
is_disabled?: EnableStatus;
/** 是否被删除 (0否 1是) */
is_deleted?: DeleteStatus;
/** 创建时间 */
created_at: string;
/** 更新时间 */
updated_at: string;
}
// 文件分类接口
export interface FileCategory {
id: number;
name: string;
code: string;
description?: string;
is_deleted?: DeleteStatus;
created_at: string;
updated_at: string;
}
// 知识库表
export interface KnowInfo {
/** 主键ID */
id: number;
/** 标题 */
title: string;
/** 内容 */
content?: string;
/** 作者 */
author?: string;
/** 分类 */
category: string;
/** 标签 */
tags?: string;
/** 封面图片URL */
cover_url?: string;
/** 审核状态 */
audit_status?: number;
/** 排序权重 */
sort_order?: number;
/** 是否删除 (0否 1是) */
is_deleted?: number;
/** 创建时间 */
created_at: string;
/** 更新时间 */
updated_at: string;
}
// 登录位置详细信息
export interface LoginLocationDetail {
/** 记录ID */
id: number;
/** 用户ID */
user_id: number;
/** 登录时间 */
login_time: string;
/** IP地址 */
ip_address: string;
/** 用户代理 */
user_agent: string;
/** 纬度 */
latitude: number | null;
/** 经度 */
longitude: number | null;
/** 位置名称 */
location_name?: string;
/** 关联用户信息 */
user?: {
id: number;
username: string;
nickname?: string;
};
}
// 登录位置信息
export interface LoginLocation {
/** 纬度 */
latitude: number | null;
/** 经度 */
longitude: number | null;
/** IP地址 */
ip_address?: string;
/** 用户代理 */
user_agent?: string;
/** 登录时间 */
login_time?: string;
}
// 消息类型枚举
export enum MessageType {
SYSTEM = 'system', // 系统通知
PRIVATE = 'private', // 私信
ANNOUNCE = 'announce' // 公告
}
// 消息状态枚举
export enum MessageStatus {
UNREAD = 0, // 未读
READ = 1, // 已读
DELETED = 2 // 已删除
}
// 消息状态中文映射
export const MessageStatusNameMap: Record<MessageStatus, string> = {
[MessageStatus.UNREAD]: '未读',
[MessageStatus.READ]: '已读',
[MessageStatus.DELETED]: '已删除'
};
// 消息实体接口
export interface Message {
id: number;
title: string;
content: string;
type: MessageType;
sender_id?: number; // 发送者ID(系统消息可为空)
sender_name?: string; // 发送者名称
created_at: string;
updated_at: string;
}
// 用户消息关联接口
export interface UserMessage {
id: number;
user_id: number;
message_id: number;
title: string;
content: string;
user_status: MessageStatus;
user_message_id: number;
is_deleted?: DeleteStatus;
read_at?: string;
created_at: string;
updated_at: string;
// 关联信息
message?: Message;
sender?: User;
}