153 lines
2.8 KiB
TypeScript
153 lines
2.8 KiB
TypeScript
/** 前后端共享类型定义(禁止 any) */
|
||
|
||
export type AdminRole = 'super_admin' | 'normal';
|
||
|
||
export interface AdminInfo {
|
||
id: number;
|
||
username: string;
|
||
nickname: string;
|
||
avatar: string;
|
||
role: AdminRole;
|
||
}
|
||
|
||
export interface AdminUser {
|
||
id: number;
|
||
username: string;
|
||
nickname: string;
|
||
avatar: string;
|
||
role: AdminRole;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface LoginResult {
|
||
token: string;
|
||
admin: AdminInfo;
|
||
}
|
||
|
||
export interface Banner {
|
||
id: number;
|
||
title: string;
|
||
image: string;
|
||
link: string;
|
||
sort: number;
|
||
isShow: number;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface ProductCategory {
|
||
id: number;
|
||
name: string;
|
||
sort: number;
|
||
isShow: number;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface Product {
|
||
id: number;
|
||
categoryId: number;
|
||
name: string;
|
||
cover: string;
|
||
desc: string | null;
|
||
content: string | null;
|
||
sort: number;
|
||
isShow: number;
|
||
category?: ProductCategory;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface NewsCategory {
|
||
id: number;
|
||
name: string;
|
||
sort: number;
|
||
isShow: number;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface News {
|
||
id: number;
|
||
categoryId: number;
|
||
title: string;
|
||
cover: string;
|
||
intro: string;
|
||
content: string;
|
||
isTop: number;
|
||
status: number;
|
||
category?: NewsCategory;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface Team {
|
||
id: number;
|
||
name: string;
|
||
position: string;
|
||
avatar: string;
|
||
desc: string | null;
|
||
sort: number;
|
||
isShow: number;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
export interface Message {
|
||
id: number;
|
||
name: string;
|
||
phone: string;
|
||
email: string;
|
||
content: string;
|
||
isRead: number;
|
||
createdAt: string;
|
||
}
|
||
|
||
export interface SiteConfig {
|
||
id: number;
|
||
siteName: string;
|
||
logo: string;
|
||
tel: string;
|
||
address: string;
|
||
email: string;
|
||
copyright: string;
|
||
icp: string;
|
||
aboutTitle: string;
|
||
aboutContent: string | null;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
/** 使用手册节点类型:0=目录节点 1=文档节点 */
|
||
export type ManualNodeType = 0 | 1;
|
||
|
||
/** 使用手册正文格式 */
|
||
export type ManualContentFormat = 'html' | 'markdown';
|
||
|
||
export interface Manual {
|
||
id: number;
|
||
parentId: number | null;
|
||
title: string;
|
||
/** 0=目录 1=文档 */
|
||
type: ManualNodeType;
|
||
content: string | null;
|
||
/** 正文格式:html=富文本 markdown=Markdown(旧数据可能缺失,按 html 兜底) */
|
||
contentFormat: ManualContentFormat;
|
||
sort: number;
|
||
isShow: number;
|
||
createdAt: string;
|
||
updatedAt: string;
|
||
}
|
||
|
||
/** 树形节点(不含正文,用于菜单) */
|
||
export interface ManualTreeNode {
|
||
id: number;
|
||
parentId: number | null;
|
||
title: string;
|
||
type: ManualNodeType;
|
||
sort: number;
|
||
isShow: number;
|
||
children: ManualTreeNode[];
|
||
}
|