
BrunoGaoandClaude
8bdf327175
feat: 实现ljwx-admin自定义logo完整功能
## 功能概述
完整实现了ljwx-admin的自定义logo功能,支持部署时动态替换客户logo,无需重新构建镜像。
## 实现内容
### 1. 自定义logo脚本 (client-deployment/customize-admin-logo.sh)
- 支持PNG、JPG、JPEG、SVG格式的logo文件
- 自动检测custom-assets/目录中的logo文件
- 支持多种命名规范:logo.xxx 或 *logo*.xxx
- 动态注入logo配置到前端应用
- 实时生效,无需重启容器
### 2. 前端logo组件增强 (ljwx-admin/src/components/common/system-logo.vue)
- 支持部署时注入的logo配置(优先级最高)
- 兼容原有API方式的logo获取
- 支持动态logo配置更新事件
- 优雅降级:logo加载失败时自动使用默认logo
### 3. 部署脚本集成 (client-deployment/deploy-client.sh)
- 自动检测VITE_CUSTOM_LOGO配置
- 在服务启动后自动应用自定义logo
- 完整的状态反馈和错误处理
### 4. 配置文件支持 (client-deployment/custom-config.env)
- VITE_CUSTOM_LOGO=true 启用自定义logo功能
- 完整的配置文档和示例
### 5. 使用文档 (client-deployment/custom-assets/README.md)
- 详细的logo文件要求和命名规范
- 完整的使用方法和故障排除指南
- 推荐的文件格式和尺寸要求
## 技术特点
### 灵活的Logo支持
- **多格式支持**: PNG、JPG、JPEG、SVG
- **智能识别**: 支持logo.xxx或包含logo的任意文件名
- **尺寸适配**: 自动适配不同尺寸的logo文件
- **透明背景**: 完美支持PNG和SVG的透明背景
### 部署时动态配置
- **无需重构**: 部署时动态注入,不需要重新构建镜像
- **即时生效**: 配置完成后立即生效,支持热更新
- **配置注入**: 通过JavaScript全局配置实现动态logo
- **缓存刷新**: 自动添加时间戳防止浏览器缓存
### 完善的错误处理
- **优雅降级**: logo文件不存在时自动使用默认logo
- **多重检测**: 部署配置 → API配置 → 默认logo的优先级
- **详细日志**: 完整的调试信息和状态反馈
## 使用方法
### 客户部署步骤
1. 将logo文件放入 `client-deployment/custom-assets/` 目录
2. 在 `custom-config.env` 中设置 `VITE_CUSTOM_LOGO=true`
3. 运行部署脚本: `./deploy-client.sh`
4. 访问管理端查看自定义logo效果
### 支持的logo文件
```
custom-assets/
├── logo.png ✅ 推荐格式
├── logo.svg ✅ 矢量格式
├── company-logo.jpg ✅ 包含logo关键字
└── brand-logo.png ✅ 自定义命名
```
### 验证方法
- 部署完成后访问: `http://SERVER_IP:8088`
- 检查侧边栏和页面标题处的logo显示
- 浏览器控制台查看logo加载日志
## 向后兼容性
- 完全兼容现有的API方式logo配置
- 不影响未启用自定义logo的部署
- 保持原有logo组件的所有功能
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
2025-09-07 00:29:39 +08:00
..
2025-09-01 09:04:19 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 21:20:03 +08:00
2025-08-22 23:48:22 +08:00
2025-09-05 20:00:32 +08:00
2025-08-31 15:36:10 +08:00
2025-09-01 21:20:03 +08:00
2025-08-23 22:11:50 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 21:20:03 +08:00
2025-08-23 22:11:50 +08:00
2025-08-23 22:11:50 +08:00
2025-08-31 15:36:10 +08:00
2025-09-01 14:03:20 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 23:26:48 +08:00
2025-09-01 21:55:51 +08:00
2025-09-01 22:11:43 +08:00
2025-09-01 23:26:48 +08:00
2025-09-01 21:55:51 +08:00
2025-09-01 21:55:51 +08:00
2025-09-01 21:20:03 +08:00
2025-08-31 15:36:10 +08:00
2025-08-31 15:36:10 +08:00
2025-08-23 22:11:50 +08:00
2025-09-07 00:29:39 +08:00
2025-09-01 21:20:03 +08:00
2025-08-31 15:36:10 +08:00
2025-08-23 22:11:50 +08:00
2025-08-22 23:48:22 +08:00
2025-09-01 16:56:01 +08:00
2025-09-01 09:04:19 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 09:04:19 +08:00
2025-08-30 12:59:00 +08:00
2025-08-18 23:19:39 +08:00
2025-08-31 15:36:10 +08:00
2025-08-31 15:36:10 +08:00
2025-09-06 15:29:18 +08:00
2025-08-31 15:36:10 +08:00
2025-09-01 09:04:19 +08:00
2025-08-30 20:25:24 +08:00
2025-08-31 15:36:10 +08:00
2025-09-01 21:20:03 +08:00
2025-09-01 21:20:03 +08:00
2025-08-31 21:42:15 +08:00
2025-08-31 21:42:15 +08:00
2025-09-01 09:04:19 +08:00
2025-08-31 15:36:10 +08:00
2025-08-31 15:36:10 +08:00
2025-08-26 21:34:11 +08:00
2025-08-16 10:02:44 +08:00
2025-08-30 12:59:00 +08:00
2025-08-31 15:36:10 +08:00
2025-09-01 09:04:19 +08:00