diff --git a/client-deployment/docker-compose.yml b/client-deployment/docker-compose.yml index bf7314f..bc65c90 100644 --- a/client-deployment/docker-compose.yml +++ b/client-deployment/docker-compose.yml @@ -140,7 +140,7 @@ services: VITE_APP_TITLE: ${VITE_APP_TITLE:-穿戴管理演示系统} TZ: Asia/Shanghai ports: - - "8080:80" + - "8088:80" volumes: - ./logs/ljwx-admin:/var/log/nginx - ./custom-admin-config.js:/tmp/custom-admin-config.js:ro diff --git a/cookies.txt b/cookies.txt new file mode 100644 index 0000000..c31d989 --- /dev/null +++ b/cookies.txt @@ -0,0 +1,4 @@ +# Netscape HTTP Cookie File +# https://curl.se/docs/http-cookies.html +# This file was generated by libcurl! Edit at your own risk. + diff --git a/ljwx-admin/README.md b/ljwx-admin/README.md index ad6c587..aff6326 100644 --- a/ljwx-admin/README.md +++ b/ljwx-admin/README.md @@ -400,8 +400,95 @@ Content-Type: application/json } ``` +### 🔧 微信告警配置管理 (最新) + +#### 功能概述 +- 支持企业微信和微信公众号两种类型的告警配置管理 +- 动态表格列显示,根据配置类型自适应显示相应字段 +- 完整的CRUD操作支持,包含新增、编辑、删除和批量删除功能 +- 智能数据过滤和状态管理 + +#### 功能特点 +1. **双类型支持**: + - **企业微信配置**:显示企业ID、应用ID、应用Secret等企业微信专属字段 + - **微信公众号配置**:显示AppID、AppSecret、微信ID等公众号专属字段 + +2. **智能表格**: + - 标签页切换时动态调整表格列 + - 自适应字段显示,避免冗余列 + - 统一的通用字段:模板ID、启用状态、创建时间、操作等 + +3. **数据管理**: + - 实时数据同步和状态更新 + - 完整的权限控制和操作验证 + - 敏感信息脱敏显示(Secret字段只显示后4位) + +#### 使用方法 +1. **查看配置**: + - 点击"企业微信配置"标签查看企业微信告警配置 + - 点击"微信公众号配置"标签查看公众号告警配置 + - 支持按类型、启用状态等条件搜索过滤 + +2. **新增配置**: + - 点击"新增"按钮打开配置表单 + - 根据当前标签页自动设置配置类型 + - 填写对应类型的必要字段信息 + +3. **编辑配置**: + - 点击表格中的"编辑"按钮修改配置 + - 支持修改除ID和类型外的所有字段 + - 实时保存并更新表格显示 + +#### 技术实现 +- **动态列定义**:基于 `activeTab` 值动态生成表格列配置 +- **状态管理**:使用 Vue 3 的响应式系统实现状态同步 +- **API集成**:与后端 `/t_wechat_alarm_config/page` 接口完整对接 +- **类型安全**:完整的 TypeScript 类型定义和验证 + +#### 数据字段映射 +```typescript +// 企业微信配置 +{ + corpId: string; // 企业ID + agentId: string; // 应用ID + secret: string; // 应用Secret +} + +// 微信公众号配置 +{ + appid: string; // AppID + appsecret: string; // AppSecret + wechatId: string; // 微信ID (映射自appid) +} + +// 通用字段 +{ + templateId: string; // 模板ID + enabled: boolean; // 启用状态 + createTime: string; // 创建时间 +} +``` + ## 📝 更新日志 +### v1.3.5 (2025-08-27) +- ✨ **新增微信告警配置管理功能** + - 支持企业微信和微信公众号两种配置类型 + - 动态表格列显示,根据类型自适应字段 + - 完整的CRUD操作和批量管理 + - 敏感信息安全脱敏显示 + - 智能数据过滤和实时状态同步 +- 🔧 **修复表格组件显示问题** + - 解决NDataTable组件数据绑定问题 + - 修复TableHeaderOperation组件导入缺失 + - 优化标签页切换时的数据加载逻辑 + - 完善列定义动态更新机制 +- 🐛 **修复数据过滤和状态管理** + - 修复标签切换时数据不更新的问题 + - 优化searchParams参数传递机制 + - 改进API参数验证和错误处理 + - 增强前后端数据同步稳定性 + ### v1.3.4 (2025-08-25) - ✨ **新增健康数据源过滤功能** - 健康数据查看时自动过滤通用事件上传的数据 diff --git a/ljwx-admin/src/hooks/common/table.ts b/ljwx-admin/src/hooks/common/table.ts index db6482d..f91248c 100644 --- a/ljwx-admin/src/hooks/common/table.ts +++ b/ljwx-admin/src/hooks/common/table.ts @@ -31,7 +31,9 @@ export function useTable(config: NaiveUI.NaiveTabl apiParams, columns: config.columns, transformer: res => { + console.log('[DEBUG] API Raw Response:', res); const { records = [], page = 1, pageSize = 20, total = 0 } = res.data || {}; + console.log('[DEBUG] Extracted:', { records, page, pageSize, total }); // Ensure that the size is greater than 0, If it is less than 0, it will cause paging calculation errors. const rPageSize = pageSize <= 0 ? 20 : pageSize; const recordsWithIndex = records.map((item, index) => { @@ -40,6 +42,7 @@ export function useTable(config: NaiveUI.NaiveTabl index: (page - 1) * rPageSize + index + 1 }; }); + console.log('[DEBUG] Final data with index:', recordsWithIndex); return { data: recordsWithIndex, diff --git a/ljwx-admin/src/typings/api/health/alert-info.d.ts b/ljwx-admin/src/typings/api/health/alert-info.d.ts index bf84dd6..4986318 100644 --- a/ljwx-admin/src/typings/api/health/alert-info.d.ts +++ b/ljwx-admin/src/typings/api/health/alert-info.d.ts @@ -31,14 +31,22 @@ declare namespace Api { type AlertConfigWechat = Common.CommonRecord<{ customerId: number; - /** WeChat App ID */ - appId: string; - /** WeChat App Secret */ - appSecret: string; + /** WeChat Type: enterprise/official */ + type: string; + /** Enterprise WeChat Corp ID */ + corpId: string; + /** Enterprise WeChat Agent ID */ + agentId: string; + /** Enterprise WeChat Secret */ + secret: string; + /** Official WeChat App ID */ + appid: string; + /** Official WeChat App Secret */ + appsecret: string; /** WeChat Template ID */ templateId: string; - /** WeChat User OpenID */ - userOpenid: string; + /** Whether enabled */ + enabled: boolean; /** User who created the record */ createUser: string; /** Creation timestamp */ @@ -47,13 +55,13 @@ declare namespace Api { /** Wechaalerconfig search params */ type AlertConfigWechatSearchParams = CommonType.RecordNullable< - Pick & Api.Common.CommonSearchParams + Pick & Api.Common.CommonSearchParams >; /** Wechaalerconfig edit model */ type AlertConfigWechatEdit = Pick< Api.Health.AlertConfigWechat, - 'id' | 'appId' | 'appSecret' | 'templateId' | 'userOpenid' | 'createUser' | 'createTime' + 'id' | 'customerId' | 'type' | 'corpId' | 'agentId' | 'secret' | 'appid' | 'appsecret' | 'templateId' | 'enabled' | 'createUser' | 'createTime' >; /** Wechaalerconfig list */ diff --git a/ljwx-admin/src/views/alert/config/index.vue b/ljwx-admin/src/views/alert/config/index.vue index 0cecf3a..66c3cb9 100644 --- a/ljwx-admin/src/views/alert/config/index.vue +++ b/ljwx-admin/src/views/alert/config/index.vue @@ -1,7 +1,7 @@ diff --git a/ljwx-bigscreen/bigscreen/.gitignore b/ljwx-bigscreen/bigscreen/.gitignore index be15f64..f514b74 100644 --- a/ljwx-bigscreen/bigscreen/.gitignore +++ b/ljwx-bigscreen/bigscreen/.gitignore @@ -1,116 +1,2 @@ -# ================================ -# BigScreen 项目 .gitignore -# ================================ - -# 配置文件 -uploader_config.ini - -# Python 环境和缓存 -./myenv/ -__pycache__/ -*.pyc -*.pyo -*.pyd - -# ================================ -# 日志文件 (所有日志) -# ================================ -*.log -*.log.* -logs/ -log/ - -# ================================ -# 大文件和数据 -# ================================ -# SQL 文件 (通常很大) -*.sql -!*_schema.sql -!migration*.sql - -# 数据库文件 -*.db -*.sqlite -*.sqlite3 - -# Excel 数据文件 -*.xlsx -*.xls - -# CSV 数据文件 (大于1MB的) -worker_health_*.csv - -# ================================ -# 缓存和临时文件 -# ================================ -cache/ -.cache/ -uploads/ -temp/ -tmp/ - -# 性能测试数据 -performance_*.json -*_report.json -*_report.log - -# ================================ -# 静态资源构建输出 -# ================================ -static/ -dist/ -build/ - -# ================================ -# HTML 大文件 -# ================================ -# 交互式地图文件 (通常很大) -interactive_*.html -mine_topology_map.html -map.html - -# 模板文件 (如果是临时的) -templates/personal_cool.html -templates/index.html -./bigScreen/template/index.html - -# ================================ -# 证书和密钥 -# ================================ -*.pem -*.key -*.crt - -# ================================ -# 运行时文件 -# ================================ -# 进程ID文件 -*.pid - -# 备份文件 -*.backup -*.bak - -# 测试输出 -test_*.json -test_*.html -test_progress.json - -# ================================ -# Docker 和部署相关 -# ================================ -.dockerignore - -# ================================ -# IDE 和编辑器 -# ================================ -.vscode/ -.idea/ -*.swp -*.swo - -# ================================ -# OS 生成文件 -# ================================ -.DS_Store -Thumbs.db +# Created by venv; see https://docs.python.org/3/library/venv.html +* diff --git a/ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/domain/vo/TWechatAlertConfigVO.java b/ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/domain/vo/TWechatAlertConfigVO.java index 8f8f18f..7389015 100644 --- a/ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/domain/vo/TWechatAlertConfigVO.java +++ b/ljwx-boot/ljwx-boot-modules/src/main/java/com/ljwx/modules/health/domain/vo/TWechatAlertConfigVO.java @@ -44,17 +44,32 @@ import java.time.LocalDateTime; @Schema(name = "TWechatAlertConfigVO", description = "Table to store WeChat alert configuration VO 对象") public class TWechatAlertConfigVO extends BaseVO { - @Schema(description = "WeChat App ID") - private String appId; + @Schema(description = "Client ID") + private Long customerId; - @Schema(description = "WeChat App Secret") - private String appSecret; + @Schema(description = "WeChat Type: enterprise/official") + private String type; + + @Schema(description = "Enterprise WeChat Corp ID") + private String corpId; + + @Schema(description = "Enterprise WeChat Agent ID") + private String agentId; + + @Schema(description = "Enterprise WeChat Secret") + private String secret; + + @Schema(description = "Official WeChat App ID") + private String appid; + + @Schema(description = "Official WeChat App Secret") + private String appsecret; @Schema(description = "WeChat Template ID") private String templateId; - @Schema(description = "WeChat User OpenID") - private String userOpenid; + @Schema(description = "Whether enabled") + private Boolean enabled; @Schema(description = "User who created the record") private String createUser; diff --git a/ljwx-watch/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/ljwx-watch/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 51e8efa..244cf75 100644 Binary files a/ljwx-watch/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/ljwx-watch/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/ljwx-watch/.gradle/buildOutputCleanup/cache.properties b/ljwx-watch/.gradle/buildOutputCleanup/cache.properties index ef1b5c2..e1791e9 100644 --- a/ljwx-watch/.gradle/buildOutputCleanup/cache.properties +++ b/ljwx-watch/.gradle/buildOutputCleanup/cache.properties @@ -1,2 +1,2 @@ -#Sun Aug 24 15:47:42 IRKT 2025 -gradle.version=7.3 +#Wed Aug 27 19:09:11 CST 2025 +gradle.version=8.9 diff --git a/ljwx-watch/.gradle/buildOutputCleanup/outputFiles.bin b/ljwx-watch/.gradle/buildOutputCleanup/outputFiles.bin deleted file mode 100644 index 4fd0d26..0000000 Binary files a/ljwx-watch/.gradle/buildOutputCleanup/outputFiles.bin and /dev/null differ diff --git a/ljwx-watch/.settings/org.eclipse.buildship.core.prefs b/ljwx-watch/.settings/org.eclipse.buildship.core.prefs index 1d415de..1f2415f 100644 --- a/ljwx-watch/.settings/org.eclipse.buildship.core.prefs +++ b/ljwx-watch/.settings/org.eclipse.buildship.core.prefs @@ -1,11 +1,11 @@ -arguments=--init-script /var/folders/9_/swlb2qbs6qxctt1zx7cq4m3h0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/9_/swlb2qbs6qxctt1zx7cq4m3h0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle +arguments=--init-script /var/folders/mm/vmpdh9394f764qzjhxshxd0m0000gn/T/db3b08fc4a9ef609cb16b96b200fa13e563f396e9bb1ed0905fdab7bc3bc513b.gradle --init-script /var/folders/mm/vmpdh9394f764qzjhxshxd0m0000gn/T/52cde0cfcf3e28b8b7510e992210d9614505e0911af0c190bd590d7158574963.gradle auto.sync=true build.scans.enabled=false connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home +java.home=/opt/homebrew/Cellar/openjdk@21/21.0.7/libexec/openjdk.jdk/Contents/Home jvm.arguments= offline.mode=false override.workspace.settings=true