将APP的功能开关配置从本地 config.js 文件改为从数据库动态读取,实现后台可配置化管理。
文件: ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppConfigController.java
提供两个接口:
- GET /app/config/features - 获取功能开关配置
- GET /app/config/all - 获取完整APP配置
特点:
- 无需权限校验,所有登录用户都可访问
- 自动将配置值转换为布尔类型
文件: sql/app_config.sql
插入两条配置记录:
```sql
-- 就绪按钮配置
config_key: app.feature.showAssigneeReadyButton
config_value: true/false
-- 强制完成按钮配置
config_key: app.feature.showForceCompleteButton
config_value: true/false
```
文件: app/api/appConfig.js
封装配置获取接口:
- getAppFeatures() - 获取功能开关
- getAppConfig() - 获取完整配置
文件: app/App.vue
修改配置加载逻辑:
1. 应用启动时:
- 先使用本地默认配置(config.js)
- 如果已登录,从服务器加载配置并覆盖本地配置
user-login 事件文件: app/config.js
保留 features 配置作为默认值:javascript features: { showAssigneeReadyButton: true, showForceCompleteButton: true }
| 配置键 | 说明 | 可选值 | 默认值 |
|---|---|---|---|
| app.feature.showAssigneeReadyButton | 是否显示执行人就绪按钮 | true/false | true |
| app.feature.showForceCompleteButton | 是否显示强制完成按钮 | true/false | true |
true 或 false-- 显示强制完成按钮
UPDATE sys_config
SET config_value = 'true'
WHERE config_key = 'app.feature.showForceCompleteButton';
```
配置修改后,APP在以下情况会获取最新配置:
1. 用户重新登录
2. 应用重新启动
3. 从后台切换回前台(如果已登录)
服务器配置 > 本地默认配置
数据库添加配置:sql INSERT INTO sys_config (config_name, config_key, config_value, config_type, create_by, create_time, remark) VALUES ('APP-新功能开关', 'app.feature.newFeature', 'true', 'N', 'admin', sysdate(), '新功能开关说明');
后端添加读取逻辑:java // AppConfigController.java String newFeature = configService.selectConfigByKey("app.feature.newFeature"); features.put("newFeature", "true".equalsIgnoreCase(newFeature));
前端config.js添加默认值:javascript features: { showAssigneeReadyButton: true, showForceCompleteButton: true, newFeature: true // 新增 }
页面使用配置:
```javascript
// 在 methods 中添加判断方法
showNewFeature() {
return !!(config && config.features && config.features.newFeature)
}
// 在模板中使用
新功能按钮
```
ruoyi-admin/src/main/java/com/ruoyi/web/controller/app/AppConfigController.java - 配置控制器sql/app_config.sql - 配置数据SQLapp/api/appConfig.js - API接口app/App.vue - 应用启动配置加载app/config.js - 本地默认配置app/pagesTask/detail.vue - 任务详情页(使用配置)