| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540 |
- 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;
- permissions?: 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 interface MarkerData {
- /** 标记点经度 */
- longitude: number;
-
- /** 标记点纬度 */
- latitude: number;
-
- /** 标记点ID */
- id?: string | number;
-
- /** 标记点标题 */
- title?: string;
-
- /** 标记点描述 */
- description?: string;
-
- /** 标记点图标URL */
- iconUrl?: string;
-
- /** 标记点状态 */
- status?: string;
-
- /** 标记点类型 */
- type?: string;
-
- /** 标记点额外数据 */
- extraData?: Record<string, any>;
- }
- // 审核状态枚举
- 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 LoginLocation {
- id: number;
- loginTime: string;
- ipAddress: string;
- longitude: number;
- latitude: number;
- location_name?: string;
- user: {
- id: number;
- username: string;
- nickname: string;
- };
- }
- export interface LoginLocationDetail {
- id: number;
- user_id: number;
- login_time: string;
- ip_address: string;
- longitude: number;
- latitude: number;
- location_name: string;
- user_agent: string;
- user: {
- id: number;
- username: string;
- nickname: 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;
- }
|