From 0e8f50cb6b29b3129871c38386f61d75b8525fb2 Mon Sep 17 00:00:00 2001 From: guyue55 <1724246050@qq.com> Date: Tue, 4 Mar 2025 19:04:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/pages.py | 7 ++-- app/static/css/style.css | 52 ++++++++++++++------------- app/static/css/styles.css | 55 ++++++++++++++++++++++------ app/templates/configs.html | 73 +++++++++++++++++++------------------- app/templates/types.html | 13 +++++-- 5 files changed, 123 insertions(+), 77 deletions(-) diff --git a/app/api/pages.py b/app/api/pages.py index 562dd15..aeb57fe 100644 --- a/app/api/pages.py +++ b/app/api/pages.py @@ -84,16 +84,17 @@ async def configs_page( result = await db.execute(query) rows = result.all() - # 处理查询结果,将Config对象的属性转换为字典 + # 处理查询结果,构建包含类型信息的配置数据 configs = [{ "config_id": row[0].config_id, - "type_id": row[0].type_id, "key": row[0].key, "value": row[0].value, "key_description": row[0].key_description, "created_at": row[0].created_at, "updated_at": row[0].updated_at, - "type_name": row[1].type_name + "type": { + "type_name": row[1].type_name + } } for row in rows] # 获取所有类型 diff --git a/app/static/css/style.css b/app/static/css/style.css index edb207e..df417f9 100644 --- a/app/static/css/style.css +++ b/app/static/css/style.css @@ -260,32 +260,29 @@ tbody tr:hover { background-color: rgba(99, 164, 255, 0.1); transition: background-color 0.2s; } -.btn-group .btn { - position: relative; -} -.btn-group .btn::before { - content: attr(data-tooltip); - position: absolute; - bottom: 100%; - left: 50%; - transform: translateX(-50%); - padding: 4px 8px; - background-color: rgba(0, 0, 0, 0.8); - color: white; - font-size: 12px; +.config-value { + display: inline-block; + padding: 0.25rem 0.5rem; + background: var(--secondary-color); border-radius: 4px; + font-family: monospace; + max-width: 300px; + overflow: hidden; + text-overflow: ellipsis; white-space: nowrap; - opacity: 0; - visibility: hidden; - transition: opacity 0.3s, visibility 0.3s; - z-index: 1000; } -.btn-group .btn:hover::before { - opacity: 1; - visibility: visible; +.value-container { + position: relative; + max-width: 300px; } + +.btn-group { + display: inline-flex; + gap: 0.5rem; +} + .btn-group .btn { border-radius: 4px; } @@ -406,25 +403,28 @@ tr:hover { /* 搜索框 */ .search-container { margin-bottom: 1.5rem; - padding: 0; + width: 100%; } .search-box { display: flex; - gap: 1rem; + gap: 0.75rem; flex-wrap: wrap; align-items: center; width: 100%; } .search-box select { - min-width: 150px; - max-width: 200px; + min-width: 120px; + max-width: 180px; + flex-shrink: 0; } + .search-input { flex: 1; min-width: 200px; } + .search-box .btn { flex-shrink: 0; white-space: nowrap; @@ -462,6 +462,7 @@ tr:hover { border-radius: 4px; color: var(--text-light); } + .search-box select { min-width: 150px; max-width: 200px; @@ -470,6 +471,7 @@ tr:hover { padding: 0.5rem; background: white; } + .search-input { flex: 1; min-width: 200px; @@ -478,10 +480,12 @@ tr:hover { padding: 0.5rem; transition: border-color 0.3s; } + .search-input:focus { border-color: var(--primary-color); outline: none; } + /* 标签样式 */ .tag { display: inline-block; diff --git a/app/static/css/styles.css b/app/static/css/styles.css index 8bd3cbf..ab74c69 100644 --- a/app/static/css/styles.css +++ b/app/static/css/styles.css @@ -31,7 +31,8 @@ /* 搜索框样式 */ .search-container { - margin-bottom: 20px; + margin: 0 0 20px 0; + padding: 0; } .search-box { @@ -49,30 +50,59 @@ /* 表格样式 */ .table-container { overflow-x: auto; + margin: 0 -20px; + padding: 0 20px; } table { width: 100%; - border-collapse: collapse; + border-collapse: separate; + border-spacing: 0; margin-bottom: 1rem; background-color: transparent; - border-radius: 4px; + border-radius: 8px; overflow: hidden; + box-shadow: 0 2px 4px rgba(0,0,0,0.05); + table-layout: fixed; } th { - background-color: #f8f9fa; + background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); color: #495057; font-weight: 600; text-align: left; - padding: 12px; + padding: 1rem 1.5rem; border-bottom: 2px solid #dee2e6; + white-space: nowrap; } td { - padding: 12px; + padding: 1rem 1.5rem; border-bottom: 1px solid #dee2e6; color: #212529; + vertical-align: middle; + line-height: 1.5; + word-wrap: break-word; + max-width: 300px; +} + +.value-container { + position: relative; + max-height: 100px; + overflow-y: auto; + background: #f8f9fa; + border-radius: 4px; + padding: 8px; +} + +.config-value { + display: block; + white-space: pre-wrap; + word-break: break-all; + font-family: monospace; + font-size: 0.9em; + color: #333; + background: transparent; } tr:hover { @@ -211,12 +241,17 @@ tr:hover { margin-bottom: 0.5rem; } - .table-container { - margin: 0 -20px; - } - td, th { padding: 8px; + font-size: 0.9em; + } + + .value-container { + max-height: 80px; + } + + .config-value { + font-size: 0.85em; } } /* 配置页面样式优化 */ diff --git a/app/templates/configs.html b/app/templates/configs.html index f30908d..44c86f5 100644 --- a/app/templates/configs.html +++ b/app/templates/configs.html @@ -7,63 +7,54 @@

配置项

- + +
-
+
- +
- - - - - - + + + + + {% for config in configs %} - - - + + + - +
类型 键名 描述 创建时间 更新时间类型键名描述更新时间 操作
{{ config.type_name }}{{ config.key }} -
- {{ config.value }} -
-
{{ config.type.type_name }}{{ config.key }}{{ config.value }} {{ config.key_description }}{{ config.created_at.strftime('%Y-%m-%d %H:%M:%S') }} {{ config.updated_at.strftime('%Y-%m-%d %H:%M:%S') }}
- -
@@ -136,6 +127,14 @@ {% block extra_js %} -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/app/templates/types.html b/app/templates/types.html index d4ae059..bd1375b 100644 --- a/app/templates/types.html +++ b/app/templates/types.html @@ -15,7 +15,6 @@
{{ type.created_at.strftime('%Y-%m-%d %H:%M:%S') }}
- -
@@ -105,6 +104,14 @@ {% block extra_js %}