diff --git a/wwwroot/index.ui b/wwwroot/index.ui index f5f64d0..9b73664 100644 --- a/wwwroot/index.ui +++ b/wwwroot/index.ui @@ -128,6 +128,7 @@ { "widgettype": "VBox", "options": { + "css": "card", "width": "60%", "borderRadius": "12px", "padding": "20px" @@ -187,6 +188,7 @@ { "widgettype": "VBox", "options": { + "css": "card", "width": "40%", "borderRadius": "12px", "padding": "20px" @@ -208,199 +210,206 @@ "minWidth": "120px" }, "subwidgets": [ + { + "widgettype": "Button", + "options": { + "css": "quick-link", + "padding": "16px", + "borderRadius": "8px", + "textAlign": "center" + }, + "binds": [ + { + "wid": "self", + "event": "click", + "actiontype": "urlwidget", + "target": "app.sage_main_content", + "options": { + "url": "{{entire_url('/llmage/llm')}}" + }, + "mode": "replace" + } + ], + "subwidgets": [ + { + "widgettype": "VBox", + "options": { + "alignItems": "center" + }, + "subwidgets": [ { - "widgettype": "Button", + "widgettype": "Svg", "options": { - "padding": "16px", - "borderRadius": "8px", - "textAlign": "center" - }, - "binds": [ - { - "wid": "self", - "event": "click", - "actiontype": "urlwidget", - "target": "app.sage_main_content", - "options": { - "url": "{{entire_url('/llmage/llm')}}" - }, - "mode": "replace" - } - ], - "subwidgets": [ - { - "widgettype": "VBox", - "options": { - "alignItems": "center" - }, - "subwidgets": [ - { - "widgettype": "Svg", - "options": { - "svg": "" - } - }, - { - "widgettype": "Text", - "options": { - "fontWeight": "600", - "fontSize": "13px", - "marginTop": "8px", - "otext": "模型管理", - "i18n": true - } - } - ] - } - ] + "svg": "" + } }, { - "widgettype": "Button", + "widgettype": "Text", "options": { - "padding": "16px", - "borderRadius": "8px", - "textAlign": "center" - }, - "binds": [ - { - "wid": "self", - "event": "click", - "actiontype": "urlwidget", - "target": "app.sage_main_content", - "options": { - "url": "{{entire_url('/rbac/users')}}" - }, - "mode": "replace" - } - ], - "subwidgets": [ - { - "widgettype": "VBox", - "options": { - "alignItems": "center" - }, - "subwidgets": [ - { - "widgettype": "Svg", - "options": { - "svg": "" - } - }, - { - "widgettype": "Text", - "options": { - "fontWeight": "600", - "fontSize": "13px", - "marginTop": "8px", - "otext": "用户管理", - "i18n": true - } - } - ] - } - ] - }, - { - "widgettype": "Button", - "options": { - "padding": "16px", - "borderRadius": "8px", - "border": "none", - "textAlign": "center" - }, - "binds": [ - { - "wid": "self", - "event": "click", - "actiontype": "urlwidget", - "target": "app.sage_main_content", - "options": { - "url": "{{entire_url('/rag/kdb')}}" - }, - "mode": "replace" - } - ], - "subwidgets": [ - { - "widgettype": "VBox", - "options": { - "alignItems": "center" - }, - "subwidgets": [ - { - "widgettype": "Svg", - "options": { - "svg": "" - } - }, - { - "widgettype": "Text", - "options": { - "fontSize": "13px", - "marginTop": "8px", - "otext": "知识库", - "i18n": true - } - } - ] - } - ] - }, - { - "widgettype": "Button", - "options": { - "padding": "16px", - "borderRadius": "8px", - "border": "none", - "textAlign": "center" - }, - "binds": [ - { - "wid": "self", - "event": "click", - "actiontype": "urlwidget", - "target": "app.sage_main_content", - "options": { - "url": "{{entire_url('/llmage/failed_accounting.ui')}}" - }, - "mode": "replace" - } - ], - "subwidgets": [ - { - "widgettype": "VBox", - "options": { - "alignItems": "center" - }, - "subwidgets": [ - { - "widgettype": "Svg", - "options": { - "svg": "" - } - }, - { - "widgettype": "Text", - "options": { - "fontSize": "13px", - "marginTop": "8px", - "otext": "异常记录", - "i18n": true - } - } - ] - } - ] + "fontWeight": "600", + "fontSize": "13px", + "marginTop": "8px", + "otext": "模型管理", + "i18n": true + } } ] } ] + }, + { + "widgettype": "Button", + "options": { + "css": "quick-link", + "padding": "16px", + "borderRadius": "8px", + "textAlign": "center" + }, + "binds": [ + { + "wid": "self", + "event": "click", + "actiontype": "urlwidget", + "target": "app.sage_main_content", + "options": { + "url": "{{entire_url('/rbac/users')}}" + }, + "mode": "replace" + } + ], + "subwidgets": [ + { + "widgettype": "VBox", + "options": { + "alignItems": "center" + }, + "subwidgets": [ + { + "widgettype": "Svg", + "options": { + "svg": "" + } + }, + { + "widgettype": "Text", + "options": { + "fontWeight": "600", + "fontSize": "13px", + "marginTop": "8px", + "otext": "用户管理", + "i18n": true + } + } + ] + } + ] + }, + { + "widgettype": "Button", + "options": { + "css": "quick-link", + "padding": "16px", + "borderRadius": "8px", + "border": "none", + "textAlign": "center" + }, + "binds": [ + { + "wid": "self", + "event": "click", + "actiontype": "urlwidget", + "target": "app.sage_main_content", + "options": { + "url": "{{entire_url('/rag/kdb')}}" + }, + "mode": "replace" + } + ], + "subwidgets": [ + { + "widgettype": "VBox", + "options": { + "alignItems": "center" + }, + "subwidgets": [ + { + "widgettype": "Svg", + "options": { + "svg": "" + } + }, + { + "widgettype": "Text", + "options": { + "fontWeight": "600", + "fontSize": "13px", + "marginTop": "8px", + "otext": "知识库", + "i18n": true + } + } + ] + } + ] + }, + { + "widgettype": "Button", + "options": { + "css": "quick-link", + "padding": "16px", + "borderRadius": "8px", + "border": "none", + "textAlign": "center" + }, + "binds": [ + { + "wid": "self", + "event": "click", + "actiontype": "urlwidget", + "target": "app.sage_main_content", + "options": { + "url": "{{entire_url('/llmage/failed_accounting.ui')}}" + }, + "mode": "replace" + } + ], + "subwidgets": [ + { + "widgettype": "VBox", + "options": { + "alignItems": "center" + }, + "subwidgets": [ + { + "widgettype": "Svg", + "options": { + "svg": "" + } + }, + { + "widgettype": "Text", + "options": { + "fontWeight": "600", + "fontSize": "13px", + "marginTop": "8px", + "otext": "异常记录", + "i18n": true + } + } + ] + } + ] + } + ] + } + ] } ] }, { "widgettype": "VBox", "options": { + "css": "card", "width": "100%", "borderRadius": "12px", "padding": "20px", @@ -429,6 +438,7 @@ { "widgettype": "VBox", "options": { + "css": "card", "width": "100%", "borderRadius": "12px", "padding": "20px", @@ -465,6 +475,7 @@ { "widgettype": "VBox", "options": { + "css": "card", "width": "50%", "borderRadius": "12px", "padding": "20px" @@ -492,6 +503,7 @@ { "widgettype": "VBox", "options": { + "css": "card", "width": "50%", "borderRadius": "12px", "padding": "20px" diff --git a/wwwroot/shell_theme.css b/wwwroot/shell_theme.css index 6d5cdd9..bd5f453 100644 --- a/wwwroot/shell_theme.css +++ b/wwwroot/shell_theme.css @@ -726,6 +726,20 @@ body { color: var(--sage-text-primary); } +[data-theme="light"] .tabular { background-color: #f5f5f5; color: #1E293B; } +[data-theme="light"] .tabular-header-row { background-color: #E2E8F0; color: #0F172A; font-weight: 600; } +[data-theme="light"] .tabular-header-row .tabular-cell { color: #0F172A; } +[data-theme="light"] .tabular-row { color: #1E293B; } +[data-theme="light"] .tabular-row:nth-child(odd) { background-color: #FFFFFF; } +[data-theme="light"] .tabular-row:nth-child(even) { background-color: #F8FAFC; } +[data-theme="light"] .tabular-cell { border-color: #E2E8F0; color: #1E293B; } +[data-theme="light"] .card { color: #1E293B; } +[data-theme="light"] .inputbox { color: #1E293B; background-color: #FFFFFF; } +[data-theme="light"] .popup, [data-theme="light"] .modal { color: #1E293B; } +[data-theme="light"] .accordion-item-info { color: #475569; } +[data-theme="light"] .toolbar-button { color: #334155; } +[data-theme="light"] .message { color: #1E293B; } + /* ===== Menu Overrides ===== */ [data-theme="dark"] .menu-item { color: var(--sage-text-secondary); diff --git a/wwwroot/stat_active_users.ui b/wwwroot/stat_active_users.ui index b383f55..76c276f 100644 --- a/wwwroot/stat_active_users.ui +++ b/wwwroot/stat_active_users.ui @@ -1,6 +1,7 @@ { "widgettype": "VBox", "options": { + "css": "stat-card", "padding": "20px", "borderRadius": "12px", "flex": "1", @@ -30,6 +31,7 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_active_users_today(request)}}", "fontSize": "32px", "fontWeight": "700", @@ -39,6 +41,7 @@ { "widgettype": "Text", "options": { + "css": "stat-label", "fontSize": "14px", "marginTop": "4px", "otext": "今日活跃用户", diff --git a/wwwroot/stat_concurrent.ui b/wwwroot/stat_concurrent.ui index 76cfa0d..dbe99e7 100644 --- a/wwwroot/stat_concurrent.ui +++ b/wwwroot/stat_concurrent.ui @@ -1,10 +1,8 @@ { "widgettype": "VBox", "options": { - "bgcolor": "#1E293B", "padding": "20px", "borderRadius": "12px", - "border": "1px solid #334155", "flex": "1", "minHeight": "110px" }, @@ -32,10 +30,10 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_concurrent_users(request)}}", "fontSize": "32px", "fontWeight": "700", - "color": "#F1F5F9", "lineHeight": "1.1" } }, @@ -43,7 +41,6 @@ "widgettype": "Text", "options": { "fontSize": "14px", - "color": "#94A3B8", "marginTop": "4px", "otext": "在线用户", "i18n": true diff --git a/wwwroot/stat_errors.ui b/wwwroot/stat_errors.ui index 7f785de..1dcb2ac 100644 --- a/wwwroot/stat_errors.ui +++ b/wwwroot/stat_errors.ui @@ -1,6 +1,7 @@ { "widgettype": "VBox", "options": { + "css": "stat-card", "padding": "20px", "borderRadius": "12px", "flex": "1", @@ -30,6 +31,7 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_accounting_errors(request)}}", "fontSize": "32px", "fontWeight": "700", diff --git a/wwwroot/stat_new_users_month.ui b/wwwroot/stat_new_users_month.ui index d64b797..57390fc 100644 --- a/wwwroot/stat_new_users_month.ui +++ b/wwwroot/stat_new_users_month.ui @@ -1,10 +1,8 @@ { "widgettype": "VBox", "options": { - "bgcolor": "#1E293B", "padding": "20px", "borderRadius": "12px", - "border": "1px solid #334155", "flex": "1", "minHeight": "110px" }, @@ -32,10 +30,10 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_new_users_month(request)}}", "fontSize": "32px", "fontWeight": "700", - "color": "#F1F5F9", "lineHeight": "1.1" } }, @@ -43,7 +41,6 @@ "widgettype": "Text", "options": { "fontSize": "14px", - "color": "#94A3B8", "marginTop": "4px", "otext": "本月新增用户", "i18n": true diff --git a/wwwroot/stat_today_amount.ui b/wwwroot/stat_today_amount.ui index 95d42a2..8eaa019 100644 --- a/wwwroot/stat_today_amount.ui +++ b/wwwroot/stat_today_amount.ui @@ -1,10 +1,9 @@ { "widgettype": "VBox", "options": { - "bgcolor": "#1E293B", + "css": "stat-card", "padding": "20px", "borderRadius": "12px", - "border": "1px solid #334155", "flex": "1", "minHeight": "110px" }, @@ -19,7 +18,7 @@ { "widgettype": "Svg", "options": { - "svg": "", + "svg": "", "width": "24px", "height": "24px" } @@ -32,22 +31,22 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "¥{{get_today_amount(request)|round(2)}}", "fontSize": "32px", "fontWeight": "700", - "color": "#F1F5F9", "lineHeight": "1.1" } }, { "widgettype": "Text", "options": { + "css": "stat-label", "fontSize": "14px", - "color": "#94A3B8", "marginTop": "4px", - "otext": "今日消费金额", + "otext": "今日交易金额", "i18n": true } } ] -} \ No newline at end of file +} diff --git a/wwwroot/stat_today_usage.ui b/wwwroot/stat_today_usage.ui index 64bb7ac..2b99454 100644 --- a/wwwroot/stat_today_usage.ui +++ b/wwwroot/stat_today_usage.ui @@ -1,6 +1,7 @@ { "widgettype": "VBox", "options": { + "css": "stat-card", "padding": "20px", "borderRadius": "12px", "flex": "1", @@ -18,7 +19,7 @@ { "widgettype": "Svg", "options": { - "svg": "", + "svg": "", "width": "24px", "height": "24px" } @@ -31,6 +32,7 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_today_usage(request)}}", "fontSize": "32px", "fontWeight": "700", @@ -40,6 +42,7 @@ { "widgettype": "Text", "options": { + "css": "stat-label", "fontSize": "14px", "marginTop": "4px", "otext": "今日调用笔数", diff --git a/wwwroot/stat_total_orgs.ui b/wwwroot/stat_total_orgs.ui index 410a756..f074316 100644 --- a/wwwroot/stat_total_orgs.ui +++ b/wwwroot/stat_total_orgs.ui @@ -1,10 +1,8 @@ { "widgettype": "VBox", "options": { - "bgcolor": "#1E293B", "padding": "20px", "borderRadius": "12px", - "border": "1px solid #334155", "flex": "1", "minHeight": "110px" }, @@ -32,10 +30,10 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_total_orgs(request)}}", "fontSize": "32px", "fontWeight": "700", - "color": "#F1F5F9", "lineHeight": "1.1" } }, @@ -43,7 +41,6 @@ "widgettype": "Text", "options": { "fontSize": "14px", - "color": "#94A3B8", "marginTop": "4px", "otext": "组织机构数", "i18n": true diff --git a/wwwroot/stat_total_users.ui b/wwwroot/stat_total_users.ui index f0a9898..6b7dcc4 100644 --- a/wwwroot/stat_total_users.ui +++ b/wwwroot/stat_total_users.ui @@ -1,6 +1,7 @@ { "widgettype": "VBox", "options": { + "css": "stat-card", "padding": "20px", "borderRadius": "12px", "flex": "1", @@ -17,7 +18,7 @@ { "widgettype": "Svg", "options": { - "svg": "", + "svg": "", "width": "24px", "height": "24px" } @@ -30,6 +31,7 @@ { "widgettype": "Text", "options": { + "css": "stat-value", "text": "{{get_total_users(request)}}", "fontSize": "32px", "fontWeight": "700", @@ -39,6 +41,7 @@ { "widgettype": "Text", "options": { + "css": "stat-label", "fontSize": "14px", "marginTop": "4px", "otext": "用户总数", @@ -46,4 +49,4 @@ } } ] -} \ No newline at end of file +} diff --git a/wwwroot/table_top_providers_amount.ui b/wwwroot/table_top_providers_amount.ui index 0c928c0..40472c2 100644 --- a/wwwroot/table_top_providers_amount.ui +++ b/wwwroot/table_top_providers_amount.ui @@ -48,7 +48,6 @@ "options": { "text": "¥{{p.total_amount}}", "width": "100px", - "color": "#22C55E", "fontSize": "14px", "fontWeight": "600", "textAlign": "right" diff --git a/wwwroot/table_top_providers_count.ui b/wwwroot/table_top_providers_count.ui index e94d51c..da5f7dc 100644 --- a/wwwroot/table_top_providers_count.ui +++ b/wwwroot/table_top_providers_count.ui @@ -49,7 +49,6 @@ "options": { "text": "¥{{p.total_amount}}", "width": "100px", - "color": "#22C55E", "fontSize": "13px", "textAlign": "right" } diff --git a/wwwroot/table_top_users.ui b/wwwroot/table_top_users.ui index 589dbe3..ec86c5d 100644 --- a/wwwroot/table_top_users.ui +++ b/wwwroot/table_top_users.ui @@ -1,16 +1,74 @@ +{% set users = get_top_users_by_amount(request) %} { "widgettype": "VBox", "options": { "width": "100%" }, "subwidgets": [ +{% for u in users %} { - "widgettype": "RefreshWidget", - "id": "table_top_users_amount", + "widgettype": "HBox", "options": { - "period_seconds": 30, - "url": "{{entire_url('table_top_users_amount.ui')}}" + "width": "100%", + "padding": "12px 0", +{% if not loop.first %} + "borderTop": "1px solid var(--sage-border-weak)", +{% endif %} + "alignItems": "center" + }, + "subwidgets": [ + { + "widgettype": "Text", + "options": { + "text": "{{loop.index}}", + "width": "30px", + "fontSize": "14px", + "textAlign": "center" + } + }, + { + "widgettype": "Text", + "options": { + "text": "{{u.user_name}}", + "flex": "1", + "fontSize": "14px", + "fontWeight": "500" + } + }, + { + "widgettype": "Text", + "options": { + "text": "{{u.cnt}} 笔", + "width": "80px", + "fontSize": "13px", + "textAlign": "right" + } + }, + { + "widgettype": "Text", + "options": { + "text": "¥{{u.total_amount}}", + "width": "100px", + "fontSize": "14px", + "fontWeight": "600", + "textAlign": "right" + } + } + ] + }{% if not loop.last %},{% endif %} +{% endfor %} +{% if not users %} + { + "widgettype": "Text", + "options": { + "otext": "暂无数据", + + "i18n": true, + "fontSize": "14px", + "textAlign": "center", + "padding": "20px 0" } } +{% endif %} ] } diff --git a/wwwroot/table_top_users_amount.ui b/wwwroot/table_top_users_amount.ui index 5dcedd6..00b73f1 100644 --- a/wwwroot/table_top_users_amount.ui +++ b/wwwroot/table_top_users_amount.ui @@ -12,7 +12,7 @@ "width": "100%", "padding": "12px 0", {% if not loop.first %} - "borderTop": "1px solid #334155", + "borderTop": "1px solid var(--sage-border-weak)", {% endif %} "alignItems": "center" }, @@ -22,7 +22,6 @@ "options": { "text": "{{loop.index}}", "width": "30px", - "color": "#64748B", "fontSize": "14px", "textAlign": "center" } @@ -32,7 +31,6 @@ "options": { "text": "{{u.user_name}}", "flex": "1", - "color": "#F1F5F9", "fontSize": "14px", "fontWeight": "500" } @@ -42,7 +40,6 @@ "options": { "text": "{{u.cnt}} 笔", "width": "80px", - "color": "#94A3B8", "fontSize": "13px", "textAlign": "right" } @@ -52,7 +49,6 @@ "options": { "text": "¥{{u.total_amount}}", "width": "100px", - "color": "#22C55E", "fontSize": "14px", "fontWeight": "600", "textAlign": "right" diff --git a/wwwroot/table_top_users_count.ui b/wwwroot/table_top_users_count.ui index 8aec086..7ecbb5c 100644 --- a/wwwroot/table_top_users_count.ui +++ b/wwwroot/table_top_users_count.ui @@ -49,7 +49,6 @@ "options": { "text": "¥{{u.total_amount}}", "width": "100px", - "color": "#22C55E", "fontSize": "13px", "textAlign": "right" }