系统设置API模块负责处理系统配置参数、公告管理、系统信息等功能。
文件位置: src/api/setting.js
功能: 获取系统配置参数
请求方式: GET
接口地址: /setting/config
参数:
{
category: string, // 配置分类(可选)
key: string // 配置键名(可选)
}返回数据:
{
status: boolean,
msg: string,
data: {
basic: { // 基础配置
siteName: string, // 站点名称
siteTitle: string, // 站点标题
siteLogo: string, // 站点Logo
siteDescription: string, // 站点描述
siteKeywords: string, // 站点关键词
copyright: string, // 版权信息
icp: string // ICP备案号
},
system: { // 系统配置
timezone: string, // 时区
dateFormat: string, // 日期格式
timeFormat: string, // 时间格式
language: string, // 默认语言
theme: string, // 默认主题
pageSize: number, // 默认分页大小
maxUploadSize: number, // 最大上传文件大小(MB)
allowedFileTypes: Array // 允许上传的文件类型
},
security: { // 安全配置
passwordMinLength: number, // 密码最小长度
passwordComplexity: boolean, // 是否启用密码复杂度
loginAttempts: number, // 登录尝试次数限制
lockoutDuration: number, // 锁定时长(分钟)
sessionTimeout: number, // 会话超时时间(分钟)
enableCaptcha: boolean, // 是否启用验证码
enableTwoFactor: boolean // 是否启用双因子认证
},
email: { // 邮件配置
smtpHost: string, // SMTP服务器
smtpPort: number, // SMTP端口
smtpUser: string, // SMTP用户名
smtpPassword: string, // SMTP密码(加密)
smtpEncryption: string, // 加密方式
fromEmail: string, // 发件人邮箱
fromName: string // 发件人姓名
},
storage: { // 存储配置
driver: string, // 存储驱动 'local'|'oss'|'cos'
localPath: string, // 本地存储路径
ossConfig: Object, // OSS配置
cosConfig: Object // COS配置
}
}
}使用示例:
import { getSystemConfig } from '@/api/setting'
const loadSystemConfig = async () => {
try {
const result = await getSystemConfig()
if (result.status) {
console.log('系统配置:', result.data)
// 应用配置到系统
applySystemConfig(result.data)
}
} catch (error) {
console.error('获取系统配置失败:', error)
}
}功能: 更新系统配置参数
请求方式: PUT
接口地址: /setting/config
参数:
{
category: string, // 配置分类(必填)
configs: { // 配置项(必填)
key1: value1,
key2: value2,
// ...
}
}返回数据:
{
status: boolean,
msg: string
}功能: 获取系统公告列表
请求方式: GET
接口地址: /setting/notice/list
参数:
{
page: number, // 页码,默认1
pageSize: number, // 每页数量,默认20
keyword: string, // 搜索关键词(可选)
status: number, // 状态筛选(可选)1-发布 0-草稿
type: string, // 公告类型筛选(可选)
startDate: string, // 开始日期(可选)
endDate: string // 结束日期(可选)
}返回数据:
{
status: boolean,
data: {
list: [
{
id: number, // 公告ID
title: string, // 公告标题
content: string, // 公告内容
type: string, // 公告类型 'system'-系统 'notice'-通知 'urgent'-紧急
status: number, // 状态 1-发布 0-草稿
priority: number, // 优先级 1-低 2-中 3-高
isTop: number, // 是否置顶 1-是 0-否
isPopup: number, // 是否弹窗 1-是 0-否
startTime: string, // 开始时间
endTime: string, // 结束时间
readCount: number, // 阅读次数
author: string, // 发布人
createTime: string, // 创建时间
updateTime: string, // 更新时间
attachments: Array // 附件列表
}
],
total: number
}
}功能: 获取公告详细信息
请求方式: GET
接口地址: /setting/notice/detail/{id}
参数:
{
id: number // 公告ID
}返回数据:
{
status: boolean,
data: {
// 公告详细信息,格式同列表接口
// 额外包含:
readUsers: Array, // 已读用户列表
unreadUsers: Array // 未读用户列表
}
}功能: 创建新公告
请求方式: POST
接口地址: /setting/notice/create
参数:
{
title: string, // 公告标题(必填)
content: string, // 公告内容(必填)
type: string, // 公告类型(必填)
status: number, // 状态(可选,默认0)
priority: number, // 优先级(可选,默认1)
isTop: number, // 是否置顶(可选,默认0)
isPopup: number, // 是否弹窗(可选,默认0)
startTime: string, // 开始时间(可选)
endTime: string, // 结束时间(可选)
attachments: Array // 附件列表(可选)
}返回数据:
{
status: boolean,
msg: string,
data: {
id: number // 新创建的公告ID
}
}功能: 更新公告信息
请求方式: PUT
接口地址: /setting/notice/update/{id}
参数:
{
id: number, // 公告ID(必填)
title: string, // 公告标题
content: string, // 公告内容
type: string, // 公告类型
status: number, // 状态
priority: number, // 优先级
isTop: number, // 是否置顶
isPopup: number, // 是否弹窗
startTime: string, // 开始时间
endTime: string, // 结束时间
attachments: Array // 附件列表
}功能: 删除公告
请求方式: DELETE
接口地址: /setting/notice/delete/{id}
参数:
{
id: number // 公告ID
}功能: 发布公告(将草稿状态改为发布状态)
请求方式: PUT
接口地址: /setting/notice/publish/{id}
参数:
{
id: number // 公告ID
}功能: 标记用户已读公告
请求方式: POST
接口地址: /setting/notice/mark-read
参数:
{
noticeId: number, // 公告ID
userId: number // 用户ID(可选,默认当前用户)
}功能: 获取系统运行信息
请求方式: GET
接口地址: /setting/system-info
参数: 无
返回数据:
{
status: boolean,
data: {
server: { // 服务器信息
os: string, // 操作系统
arch: string, // 系统架构
nodeVersion: string, // Node.js版本
memory: { // 内存信息
total: number, // 总内存(MB)
used: number, // 已用内存(MB)
free: number // 空闲内存(MB)
},
cpu: { // CPU信息
model: string, // CPU型号
cores: number, // 核心数
usage: number // 使用率(%)
},
disk: { // 磁盘信息
total: number, // 总空间(GB)
used: number, // 已用空间(GB)
free: number // 空闲空间(GB)
}
},
database: { // 数据库信息
type: string, // 数据库类型
version: string, // 数据库版本
size: number, // 数据库大小(MB)
tables: number, // 表数量
connections: number // 连接数
},
application: { // 应用信息
name: string, // 应用名称
version: string, // 应用版本
environment: string, // 运行环境
uptime: number, // 运行时间(秒)
startTime: string, // 启动时间
lastDeployTime: string // 最后部署时间
},
statistics: { // 统计信息
totalUsers: number, // 总用户数
activeUsers: number, // 活跃用户数
todayLogins: number, // 今日登录数
totalRequests: number, // 总请求数
errorRate: number // 错误率(%)
}
}
}功能: 清理系统缓存
请求方式: POST
接口地址: /setting/clear-cache
参数:
{
type: string // 缓存类型 'all'-全部 'config'-配置 'user'-用户 'menu'-菜单
}功能: 备份系统数据
请求方式: POST
接口地址: /setting/backup
参数:
{
type: string, // 备份类型 'full'-完整 'data'-仅数据 'config'-仅配置
description: string // 备份描述
}返回数据:
{
status: boolean,
msg: string,
data: {
backupId: string, // 备份ID
fileName: string, // 备份文件名
fileSize: number, // 文件大小(MB)
downloadUrl: string // 下载链接
}
}{
id: number, // 配置ID
category: string, // 配置分类
key: string, // 配置键名
value: string, // 配置值
type: string, // 数据类型 'string'|'number'|'boolean'|'json'
description: string, // 配置描述
isSystem: number, // 是否系统配置 1-是 0-否
sort: number, // 排序
createTime: string, // 创建时间
updateTime: string // 更新时间
}{
id: number, // 公告ID
title: string, // 公告标题
content: string, // 公告内容(HTML格式)
type: string, // 公告类型
status: number, // 状态 1-发布 0-草稿
priority: number, // 优先级 1-低 2-中 3-高
isTop: number, // 是否置顶 1-是 0-否
isPopup: number, // 是否弹窗 1-是 0-否
startTime: string, // 开始时间
endTime: string, // 结束时间
readCount: number, // 阅读次数
author: string, // 发布人
authorId: number, // 发布人ID
createTime: string, // 创建时间
updateTime: string, // 更新时间
attachments: [ // 附件列表
{
id: number,
name: string,
url: string,
size: number,
type: string
}
]
}- 系统配置分类管理
- 配置项支持多种数据类型
- 系统核心配置不可删除
- 配置变更需要记录日志
- 公告支持富文本编辑
- 支持定时发布和过期
- 重要公告可设置弹窗提醒
- 公告阅读状态跟踪
- 只有管理员可以修改系统配置
- 公告发布需要相应权限
- 系统信息查看需要权限验证
import { updateSystemConfig } from '@/api/setting'
const updateBasicConfig = async () => {
const configData = {
category: 'basic',
configs: {
siteName: '我的管理系统',
siteTitle: '管理后台',
siteDescription: '基于Vue3的管理系统',
copyright: '© 2024 我的公司'
}
}
try {
const result = await updateSystemConfig(configData)
if (result.status) {
ElMessage.success('配置更新成功')
// 重新加载配置
loadSystemConfig()
}
} catch (error) {
ElMessage.error('配置更新失败')
}
}import { createNotice, publishNotice } from '@/api/setting'
const publishSystemNotice = async () => {
// 1. 创建公告
const noticeData = {
title: '系统维护通知',
content: '<p>系统将于今晚22:00-24:00进行维护升级...</p>',
type: 'system',
priority: 3,
isTop: 1,
isPopup: 1,
startTime: '2024-01-15 00:00:00',
endTime: '2024-01-20 23:59:59'
}
try {
const createResult = await createNotice(noticeData)
if (createResult.status) {
const noticeId = createResult.data.id
// 2. 发布公告
const publishResult = await publishNotice(noticeId)
if (publishResult.status) {
ElMessage.success('公告发布成功')
}
}
} catch (error) {
ElMessage.error('公告发布失败')
}
}import { getSystemInfo } from '@/api/setting'
const monitorSystem = {
data: ref({}),
timer: null,
// 开始监控
start() {
this.loadSystemInfo()
this.timer = setInterval(() => {
this.loadSystemInfo()
}, 30000) // 30秒刷新一次
},
// 停止监控
stop() {
if (this.timer) {
clearInterval(this.timer)
this.timer = null
}
},
// 加载系统信息
async loadSystemInfo() {
try {
const result = await getSystemInfo()
if (result.status) {
this.data.value = result.data
// 检查系统状态
this.checkSystemHealth(result.data)
}
} catch (error) {
console.error('获取系统信息失败:', error)
}
},
// 检查系统健康状态
checkSystemHealth(data) {
const { server, statistics } = data
// 内存使用率检查
const memoryUsage = (server.memory.used / server.memory.total) * 100
if (memoryUsage > 80) {
console.warn('内存使用率过高:', memoryUsage + '%')
}
// CPU使用率检查
if (server.cpu.usage > 80) {
console.warn('CPU使用率过高:', server.cpu.usage + '%')
}
// 错误率检查
if (statistics.errorRate > 5) {
console.warn('系统错误率过高:', statistics.errorRate + '%')
}
}
}
// 使用示例
onMounted(() => {
monitorSystem.start()
})
onUnmounted(() => {
monitorSystem.stop()
})60001: 配置项不存在60002: 配置值格式错误60003: 系统配置不可修改60004: 公告不存在60005: 公告已发布,不可修改60006: 权限不足
try {
const result = await updateSystemConfig(configData)
if (!result.status) {
switch (result.code) {
case 60001:
ElMessage.error('配置项不存在')
break
case 60003:
ElMessage.error('系统配置不可修改')
break
default:
ElMessage.error(result.msg || '操作失败')
}
return
}
// 处理成功逻辑
} catch (error) {
console.error('系统设置操作失败:', error)
ElMessage.error('网络请求失败')
}// src/mock/api.js
export const mockSystemConfig = {
url: '/setting/config',
method: 'get',
response: {
status: true,
data: {
basic: {
siteName: 'Candy Sample',
siteTitle: '管理系统',
siteLogo: '/logo.png',
siteDescription: '基于Vue3的管理系统',
copyright: '© 2024 Candy Sample'
},
system: {
timezone: 'Asia/Shanghai',
dateFormat: 'YYYY-MM-DD',
timeFormat: 'HH:mm:ss',
language: 'zh-CN',
theme: 'default',
pageSize: 20
}
}
}
}
export const mockNoticeList = {
url: '/setting/notice/list',
method: 'get',
response: {
status: true,
data: {
list: [
{
id: 1,
title: '系统升级通知',
content: '系统将进行升级维护...',
type: 'system',
status: 1,
priority: 2,
isTop: 1,
readCount: 150,
author: '管理员',
createTime: '2024-01-15 10:00:00'
}
],
total: 1
}
}
}- 配置安全: 敏感配置信息需要加密存储
- 缓存管理: 配置变更后及时清理相关缓存
- 权限控制: 严格控制系统配置的修改权限
- 备份策略: 定期备份系统配置和数据
- 监控告警: 关键系统指标异常时及时告警
最后更新时间:2025-09-19