diff --git a/admin/dashboard/templates/api_docs.html b/admin/dashboard/templates/api_docs.html
index a593b18..8324b5b 100644
--- a/admin/dashboard/templates/api_docs.html
+++ b/admin/dashboard/templates/api_docs.html
@@ -63,23 +63,23 @@
.page-shell { display: flex; flex-direction: column; gap: 16px; }
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 24px 26px; border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16); box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-hero-actions { display: flex; align-items: center; gap: 12px; }
- .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6366f1; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #0b5e57; font-weight: 700; margin-bottom: 8px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.iframe-url {
max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px;
- color: #94a3b8; padding: 8px 12px; border-radius: 999px; background: rgba(248,250,252,0.9); border: 1px solid rgba(148,163,184,0.12);
+ color: #74897f; padding: 8px 12px; border-radius: 999px; background: rgba(247,251,248,0.9); border: 1px solid rgba(101,121,113,0.12);
}
.iframe-shell-card { height: calc(100vh - 230px); }
.iframe-shell-card .el-card__body { height: calc(100% - 73px); }
- .iframe-shell { height: 100%; border-radius: 18px; overflow: hidden; border: 1px solid rgba(148,163,184,0.12); background: rgba(248,250,252,0.82); }
+ .iframe-shell { height: 100%; border-radius: 18px; overflow: hidden; border: 1px solid rgba(101,121,113,0.12); background: rgba(247,251,248,0.82); }
.iframe-shell iframe { width: 100%; height: 100%; border: none; display: block; background: #fff; }
{% endblock %}
diff --git a/admin/dashboard/templates/base.html b/admin/dashboard/templates/base.html
index a4fddde..e168054 100644
--- a/admin/dashboard/templates/base.html
+++ b/admin/dashboard/templates/base.html
@@ -8,31 +8,33 @@
diff --git a/admin/dashboard/templates/contacts_management.html b/admin/dashboard/templates/contacts_management.html
index 5e3234c..4f5afa8 100644
--- a/admin/dashboard/templates/contacts_management.html
+++ b/admin/dashboard/templates/contacts_management.html
@@ -1098,7 +1098,7 @@
responsive: true,
maintainAspectRatio: false,
scales: {
- y: { beginAtZero: true, grid: { color: 'rgba(148,163,184,0.12)' } },
+ y: { beginAtZero: true, grid: { color: 'rgba(101,121,113,0.12)' } },
x: { grid: { display: false } }
},
plugins: { legend: { display: false } }
@@ -1151,7 +1151,7 @@
responsive: true,
maintainAspectRatio: false,
scales: {
- y: { beginAtZero: true, grid: { color: 'rgba(148,163,184,0.12)' } },
+ y: { beginAtZero: true, grid: { color: 'rgba(101,121,113,0.12)' } },
x: { grid: { display: false } }
},
plugins: { legend: { display: false } }
@@ -1429,44 +1429,44 @@
.page-shell { display: flex; flex-direction: column; gap: 16px; }
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 24px 26px; border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16); box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-hero-actions { display: flex; align-items: center; gap: 12px; }
.hero-search { width: 260px; }
- .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6366f1; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #0b5e57; font-weight: 700; margin-bottom: 8px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.overview-grid .el-col { margin-bottom: 16px; }
.overview-card { min-height: 112px; }
- .overview-card--primary { background: linear-gradient(180deg, rgba(79,70,229,0.10), rgba(255,255,255,0.94)) !important; }
- .overview-card--soft { background: linear-gradient(180deg, rgba(59,130,246,0.08), rgba(255,255,255,0.94)) !important; }
- .overview-label { font-size: 13px; color: #64748b; margin-bottom: 14px; }
- .overview-value { font-size: 30px; font-weight: 700; color: #0f172a; margin-bottom: 10px; }
- .overview-note { font-size: 12px; color: #94a3b8; }
+ .overview-card--primary { background: linear-gradient(180deg, rgba(15,118,110,0.10), rgba(255,255,255,0.94)) !important; }
+ .overview-card--soft { background: linear-gradient(180deg, rgba(14,165,233,0.08), rgba(255,255,255,0.94)) !important; }
+ .overview-label { font-size: 13px; color: #4f6258; margin-bottom: 14px; }
+ .overview-value { font-size: 30px; font-weight: 700; color: #15211b; margin-bottom: 10px; }
+ .overview-note { font-size: 12px; color: #74897f; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.entity-cell { display: flex; align-items: center; gap: 12px; }
.entity-avatar {
width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
- background: rgba(79,70,229,0.10); color: #4f46e5; font-size: 14px; flex-shrink: 0;
+ background: rgba(15,118,110,0.10); color: #0f766e; font-size: 14px; flex-shrink: 0;
}
.entity-avatar--group { background: rgba(16,185,129,0.12); color: #10b981; }
- .entity-title { font-size: 14px; font-weight: 600; color: #0f172a; }
- .entity-subtitle { margin-top: 4px; font-size: 12px; color: #94a3b8; }
+ .entity-title { font-size: 14px; font-weight: 600; color: #15211b; }
+ .entity-subtitle { margin-top: 4px; font-size: 12px; color: #74897f; }
.action-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pagination-container { margin-top: 20px; text-align: right; }
.group-insight-section { margin-top: 20px; }
.group-permission-section { margin-top: 20px; }
.group-members-section { margin-top: 20px; }
.section-title {
- margin: 20px 0 15px 0; border-bottom: 1px solid rgba(148,163,184,0.12); padding-bottom: 10px;
+ margin: 20px 0 15px 0; border-bottom: 1px solid rgba(101,121,113,0.12); padding-bottom: 10px;
display: flex; justify-content: space-between; align-items: center;
}
.section-actions { display: flex; align-items: center; gap: 10px; }
.inline-action-button { margin-left: 10px; }
- .section-title h3 { margin: 0; font-size: 18px; color: #0f172a; }
+ .section-title h3 { margin: 0; font-size: 18px; color: #15211b; }
.group-search { width: 220px; }
.detail-avatar-wrap { text-align: center; margin-bottom: 20px; }
.detail-avatar { width: 100px; height: 100px; }
@@ -1474,11 +1474,11 @@
display: flex; align-items: flex-start; justify-content: space-between; gap: 20px;
padding: 18px 20px; margin-bottom: 16px; border-radius: 22px;
background: linear-gradient(135deg, rgba(249,115,22,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.14);
+ border: 1px solid rgba(101,121,113,0.14);
}
.detail-health-label { font-size: 13px; color: #9a3412; margin-bottom: 8px; }
.detail-health-value { font-size: 38px; line-height: 1; font-weight: 700; color: #111827; margin-bottom: 10px; }
- .detail-health-note { font-size: 13px; color: #64748b; }
+ .detail-health-note { font-size: 13px; color: #4f6258; }
.detail-tags { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.detail-overview-grid { margin-bottom: 16px; }
.overview-value--detail { font-size: 24px; }
@@ -1489,11 +1489,11 @@
.detail-panels .el-col { margin-bottom: 16px; }
.detail-card { border-radius: 18px; }
.detail-card-header {
- display: flex; align-items: center; justify-content: space-between; font-weight: 600; color: #0f172a;
+ display: flex; align-items: center; justify-content: space-between; font-weight: 600; color: #15211b;
}
- .detail-card-sub { font-size: 12px; color: #94a3b8; font-weight: 500; }
+ .detail-card-sub { font-size: 12px; color: #74897f; font-weight: 500; }
.feature-chip-list { display: flex; gap: 8px; flex-wrap: wrap; min-height: 60px; align-items: flex-start; }
- .empty-inline, .detail-inline-note { font-size: 12px; color: #64748b; }
+ .empty-inline, .detail-inline-note { font-size: 12px; color: #4f6258; }
.detail-inline-note { margin-top: 12px; line-height: 1.6; }
.suggestion-list { display: flex; flex-direction: column; gap: 12px; }
.suggestion-item { border-radius: 14px; }
@@ -1501,33 +1501,33 @@
.peak-hour-item {
min-width: 132px; padding: 12px 14px; border-radius: 14px;
background: linear-gradient(180deg, rgba(14,165,233,0.08), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.12);
+ border: 1px solid rgba(101,121,113,0.12);
}
- .peak-hour-rank { font-size: 13px; color: #0f172a; font-weight: 600; margin-bottom: 6px; }
- .peak-hour-count { font-size: 12px; color: #64748b; }
+ .peak-hour-rank { font-size: 13px; color: #15211b; font-weight: 600; margin-bottom: 6px; }
+ .peak-hour-count { font-size: 12px; color: #4f6258; }
.chart-shell {
padding: 16px; border-radius: 18px;
- background: linear-gradient(180deg, rgba(248,250,252,0.78), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.12);
+ background: linear-gradient(180deg, rgba(247,251,248,0.78), rgba(255,255,255,0.96));
+ border: 1px solid rgba(101,121,113,0.12);
}
.chart-shell--compact { min-height: 260px; }
.chart-shell--mini { min-height: 220px; }
.member-context-toolbar {
display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 16px 0;
}
- .member-context-title { display: flex; flex-direction: column; gap: 4px; color: #475569; }
+ .member-context-title { display: flex; flex-direction: column; gap: 4px; color: #3f5148; }
.context-tag { margin-right: 8px; margin-bottom: 8px; }
.chat-container { display: flex; flex-direction: column; gap: 14px; min-height: 620px; }
.chat-header-card {
display: flex; align-items: center; justify-content: space-between; gap: 16px;
padding: 18px 20px; border-radius: 18px;
background: linear-gradient(135deg, rgba(14,165,233,0.10), rgba(16,185,129,0.08), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.14);
+ border: 1px solid rgba(101,121,113,0.14);
}
.chat-header-main { min-width: 0; }
- .chat-header-title { font-size: 20px; font-weight: 700; color: #0f172a; }
+ .chat-header-title { font-size: 20px; font-weight: 700; color: #15211b; }
.chat-header-subtitle {
- margin-top: 6px; font-size: 13px; color: #64748b;
+ margin-top: 6px; font-size: 13px; color: #4f6258;
display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.chat-header-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
@@ -1536,49 +1536,49 @@
background: rgba(20, 184, 166, 0.10); border: 1px solid rgba(20, 184, 166, 0.18);
}
.message-list {
- flex: 1; overflow-y: auto; padding: 20px; background: rgba(248,250,252,0.82); border: 1px solid rgba(148,163,184,0.12);
+ flex: 1; overflow-y: auto; padding: 20px; background: rgba(247,251,248,0.82); border: 1px solid rgba(101,121,113,0.12);
border-radius: 18px;
}
.chat-empty-state {
min-height: 280px; display: flex; flex-direction: column; align-items: center; justify-content: center;
- color: #94a3b8; text-align: center; gap: 10px;
+ color: #74897f; text-align: center; gap: 10px;
}
.chat-empty-state i { font-size: 34px; color: #38bdf8; }
- .chat-empty-state p { font-size: 16px; color: #334155; margin: 0; }
+ .chat-empty-state p { font-size: 16px; color: #27443a; margin: 0; }
.chat-empty-state span { max-width: 380px; line-height: 1.6; }
.message-item { margin-bottom: 18px; display: flex; flex-direction: column; gap: 6px; }
.message-self { align-items: flex-end; }
.message-system { align-items: center; }
- .message-meta { display: flex; align-items: center; gap: 8px; color: #94a3b8; font-size: 12px; }
- .message-sender { color: #475569; font-weight: 600; }
+ .message-meta { display: flex; align-items: center; gap: 8px; color: #74897f; font-size: 12px; }
+ .message-sender { color: #3f5148; font-weight: 600; }
.message-content {
- max-width: 75%; padding: 12px 14px; border-radius: 14px; background: rgba(255,255,255,0.92); color: #0f172a;
- border: 1px solid rgba(148,163,184,0.12); box-shadow: 0 8px 20px rgba(15, 23, 42, 0.05);
+ max-width: 75%; padding: 12px 14px; border-radius: 14px; background: rgba(255,255,255,0.92); color: #15211b;
+ border: 1px solid rgba(101,121,113,0.12); box-shadow: 0 8px 20px rgba(21, 33, 27, 0.05);
}
- .message-self .message-content { background: linear-gradient(135deg, #4f46e5, #6366f1); color: #ffffff; }
+ .message-self .message-content { background: linear-gradient(135deg, #0f766e, #0b5e57); color: #ffffff; }
.message-system .message-content {
- max-width: 90%; background: rgba(241,245,249,0.92); color: #475569; border-style: dashed;
+ max-width: 90%; background: rgba(241,245,249,0.92); color: #3f5148; border-style: dashed;
text-align: center; box-shadow: none;
}
.message-system-bubble { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.message-system-tags { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: center; }
.message-system-tag {
display: inline-flex; align-items: center; justify-content: center; min-height: 24px; padding: 0 10px;
- border-radius: 999px; font-size: 12px; font-weight: 700; color: #475569;
- background: rgba(255,255,255,0.76); border: 1px solid rgba(148,163,184,0.18);
+ border-radius: 999px; font-size: 12px; font-weight: 700; color: #3f5148;
+ background: rgba(255,255,255,0.76); border: 1px solid rgba(101,121,113,0.18);
}
.message-system-tag.is-revoke { color: #9f1239; background: rgba(255,241,242,0.92); border-color: rgba(244,114,182,0.2); }
.message-text, .message-system-text { white-space: pre-wrap; word-break: break-word; line-height: 1.7; }
.message-media { display: flex; flex-direction: column; gap: 10px; }
.message-image, .message-video {
max-width: 260px; max-height: 240px; border-radius: 14px;
- background: rgba(15,23,42,0.06); object-fit: cover;
+ background: rgba(21,33,27,0.06); object-fit: cover;
}
.message-audio { width: 260px; max-width: 100%; }
.message-caption { font-size: 12px; line-height: 1.6; opacity: 0.88; }
.message-file-chip {
display: inline-flex; align-items: center; width: fit-content; padding: 8px 12px;
- border-radius: 999px; background: rgba(148,163,184,0.12); font-size: 12px;
+ border-radius: 999px; background: rgba(101,121,113,0.12); font-size: 12px;
}
.message-link-card { display: flex; flex-direction: column; gap: 8px; }
.message-link-title { font-size: 14px; font-weight: 700; color: inherit; text-decoration: none; }
@@ -1594,13 +1594,13 @@
display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 12px;
}
.emoji-card {
- border: 1px solid rgba(148,163,184,0.16); border-radius: 12px; padding: 8px;
+ border: 1px solid rgba(101,121,113,0.16); border-radius: 12px; padding: 8px;
display: flex; flex-direction: column; gap: 8px; align-items: center; background: #fff;
}
- .emoji-thumb { width: 72px; height: 72px; object-fit: contain; border-radius: 8px; background: rgba(148,163,184,0.08); }
- .emoji-md5 { font-size: 11px; color: #64748b; word-break: break-all; text-align: center; min-height: 30px; }
+ .emoji-thumb { width: 72px; height: 72px; object-fit: contain; border-radius: 8px; background: rgba(101,121,113,0.08); }
+ .emoji-md5 { font-size: 11px; color: #4f6258; word-break: break-all; text-align: center; min-height: 30px; }
.emoji-actions { width: 100%; display: flex; justify-content: center; }
- .emoji-empty { color: #94a3b8; padding: 12px; }
+ .emoji-empty { color: #74897f; padding: 12px; }
@media (max-width: 1200px) {
.diagnosis-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
diff --git a/admin/dashboard/templates/errors.html b/admin/dashboard/templates/errors.html
index a01a50f..c703a89 100644
--- a/admin/dashboard/templates/errors.html
+++ b/admin/dashboard/templates/errors.html
@@ -42,6 +42,6 @@
new Vue({ el:'#app', mixins:[baseApp], data(){ return { errorLogs:[], errorDetail:{}, errorDetailVisible:false, currentPage:1, pageSize:20, totalErrors:0 } }, mounted(){ this.currentView='5'; this.loadData(); }, methods:{ loadData(){ this.loadErrorLogs(parseInt(this.timeRange)); }, loadErrorLogs(days){ axios.get(`/api/error_logs?days=${days}&limit=${this.pageSize}&offset=${(this.currentPage - 1) * this.pageSize}`).then(r=>{ if(r.data.success){ this.errorLogs=r.data.data.logs||[]; this.totalErrors=r.data.data.total||0; } }).catch(e=>{ console.error('加载错误日志出错:',e); this.$message.error('加载错误日志出错'); }); }, viewErrorDetail(error){ if(error.id){ this.loadErrorDetail(error.id);} else { this.errorDetail=error; this.errorDetailVisible=true; } }, loadErrorDetail(id){ axios.get(`/api/error_detail/${id}`).then(r=>{ if(r.data.success){ this.errorDetail=r.data.data||{}; this.errorDetailVisible=true; } }).catch(e=>{ console.error('加载错误详情出错:',e); this.$message.error('加载错误详情出错'); }); }, handleSizeChange(size){ this.pageSize=size; this.currentPage=1; this.loadData(); }, handleCurrentChange(page){ this.currentPage=page; this.loadData(); } } });
{% endblock %}
diff --git a/admin/dashboard/templates/file_browser.html b/admin/dashboard/templates/file_browser.html
index dbbb404..8a8f6a9 100644
--- a/admin/dashboard/templates/file_browser.html
+++ b/admin/dashboard/templates/file_browser.html
@@ -129,26 +129,26 @@
.page-shell { display: flex; flex-direction: column; gap: 16px; }
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 24px 26px; border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16); box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-hero-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
- .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6366f1; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #0b5e57; font-weight: 700; margin-bottom: 8px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.path-pill {
max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px;
- color: #475569; padding: 10px 14px; border-radius: 999px; background: rgba(255,255,255,0.82); border: 1px solid rgba(148,163,184,0.14);
+ color: #3f5148; padding: 10px 14px; border-radius: 999px; background: rgba(255,255,255,0.82); border: 1px solid rgba(101,121,113,0.14);
}
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.entity-cell { display: flex; align-items: center; gap: 12px; }
.entity-avatar {
width: 32px; height: 32px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
- color: #4f46e5; background: rgba(79,70,229,0.10);
+ color: #0f766e; background: rgba(15,118,110,0.10);
}
.entity-avatar--folder { color: #10b981; background: rgba(16,185,129,0.12); }
- .entity-avatar--file { color: #3b82f6; background: rgba(59,130,246,0.10); }
+ .entity-avatar--file { color: #3b82f6; background: rgba(14,165,233,0.10); }
{% endblock %}
diff --git a/admin/dashboard/templates/friend_circle.html b/admin/dashboard/templates/friend_circle.html
index 579169c..6a4a60d 100644
--- a/admin/dashboard/templates/friend_circle.html
+++ b/admin/dashboard/templates/friend_circle.html
@@ -445,26 +445,26 @@
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 24px 26px; border-radius: 24px;
background: linear-gradient(135deg, rgba(34,197,94,0.10), rgba(56,189,248,0.08), rgba(255,255,255,0.92));
- border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ border: 1px solid rgba(101, 121, 113, 0.16); box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #16a34a; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.page-hero-actions { display: flex; align-items: center; gap: 12px; }
.friend-circle-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(320px, 0.9fr); gap: 16px; align-items: start; }
.friend-circle-main, .friend-circle-side { display: flex; flex-direction: column; gap: 16px; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.filter-form { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; }
.post-list { display: flex; flex-direction: column; gap: 16px; }
.post-card { overflow: hidden; }
.post-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.post-author { display: flex; align-items: center; gap: 12px; }
- .post-author-name { font-size: 16px; font-weight: 700; color: #0f172a; }
- .post-meta { font-size: 12px; color: #64748b; margin-top: 3px; }
+ .post-author-name { font-size: 16px; font-weight: 700; color: #15211b; }
+ .post-meta { font-size: 12px; color: #4f6258; margin-top: 3px; }
.post-actions { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
- .post-content { color: #0f172a; line-height: 1.8; margin-bottom: 14px; white-space: pre-wrap; word-break: break-word; }
+ .post-content { color: #15211b; line-height: 1.8; margin-bottom: 14px; white-space: pre-wrap; word-break: break-word; }
.post-location {
display: inline-flex; align-items: center; gap: 8px; margin-bottom: 14px; padding: 8px 12px;
border-radius: 999px; background: rgba(14,165,233,0.08); color: #0369a1; font-size: 13px; font-weight: 600;
@@ -473,48 +473,48 @@
.post-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(108px, 1fr)); gap: 10px; margin-bottom: 14px; }
.post-media-item img, .upload-preview-item img {
width: 100%; height: 108px; object-fit: cover; border-radius: 16px; cursor: pointer;
- border: 1px solid rgba(148,163,184,0.14); box-shadow: 0 10px 24px rgba(15, 23, 42, 0.08);
+ border: 1px solid rgba(101,121,113,0.14); box-shadow: 0 10px 24px rgba(21, 33, 27, 0.08);
}
.post-media-item { position: relative; }
.post-media-item.is-video::after {
content: ''; position: absolute; inset: 0; border-radius: 16px;
- background: linear-gradient(180deg, rgba(15,23,42,0.02), rgba(15,23,42,0.3));
+ background: linear-gradient(180deg, rgba(21,33,27,0.02), rgba(21,33,27,0.3));
pointer-events: none;
}
.video-badge {
position: absolute; left: 10px; bottom: 10px; display: inline-flex; align-items: center; gap: 6px;
- padding: 6px 10px; border-radius: 999px; background: rgba(15,23,42,0.72); color: #fff;
+ padding: 6px 10px; border-radius: 999px; background: rgba(21,33,27,0.72); color: #fff;
font-size: 12px; font-weight: 600; z-index: 2;
- box-shadow: 0 8px 20px rgba(15, 23, 42, 0.18);
+ box-shadow: 0 8px 20px rgba(21, 33, 27, 0.18);
}
.post-feedback { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.feedback-block {
- padding: 14px; border-radius: 18px; background: rgba(248,250,252,0.88);
- border: 1px solid rgba(148,163,184,0.12);
+ padding: 14px; border-radius: 18px; background: rgba(247,251,248,0.88);
+ border: 1px solid rgba(101,121,113,0.12);
}
- .feedback-title { font-size: 13px; font-weight: 700; color: #0f172a; margin-bottom: 8px; }
+ .feedback-title { font-size: 13px; font-weight: 700; color: #15211b; margin-bottom: 8px; }
.feedback-list { display: flex; flex-wrap: wrap; gap: 8px; }
.feedback-chip {
display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 999px; font-size: 12px;
- color: #334155; background: rgba(255,255,255,0.95); border: 1px solid rgba(148,163,184,0.12);
+ color: #27443a; background: rgba(255,255,255,0.95); border: 1px solid rgba(101,121,113,0.12);
}
- .feedback-empty { color: #94a3b8; font-size: 12px; }
+ .feedback-empty { color: #74897f; font-size: 12px; }
.comment-list { display: flex; flex-direction: column; gap: 8px; }
- .comment-item { font-size: 13px; color: #334155; line-height: 1.6; }
- .comment-author { font-weight: 700; color: #0f172a; margin-right: 8px; }
+ .comment-item { font-size: 13px; color: #27443a; line-height: 1.6; }
+ .comment-author { font-weight: 700; color: #15211b; margin-right: 8px; }
.danger-text { color: #ef4444 !important; }
.upload-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.upload-trigger {
display: inline-flex; align-items: center; justify-content: center; min-height: 38px; padding: 0 14px;
- border-radius: 12px; background: rgba(255,255,255,0.92); border: 1px solid rgba(148,163,184,0.2);
- color: #0f172a; cursor: pointer; font-size: 13px; font-weight: 600;
+ border-radius: 12px; background: rgba(255,255,255,0.92); border: 1px solid rgba(101,121,113,0.2);
+ color: #15211b; cursor: pointer; font-size: 13px; font-weight: 600;
}
.upload-trigger input { display: none; }
.upload-preview-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px; }
.raw-json {
margin: 0; max-height: 520px; overflow: auto; white-space: pre-wrap; word-break: break-all;
- padding: 14px; border-radius: 16px; background: rgba(248,250,252,0.9); color: #334155;
- border: 1px solid rgba(148,163,184,0.12);
+ padding: 14px; border-radius: 16px; background: rgba(247,251,248,0.9); color: #27443a;
+ border: 1px solid rgba(101,121,113,0.12);
}
.large-preview { width: 100%; border-radius: 18px; }
.large-video { width: 100%; max-height: 75vh; border-radius: 18px; background: #000; }
diff --git a/admin/dashboard/templates/groups.html b/admin/dashboard/templates/groups.html
index 9e357f2..083af1e 100644
--- a/admin/dashboard/templates/groups.html
+++ b/admin/dashboard/templates/groups.html
@@ -123,6 +123,6 @@ new Vue({
});
{% endblock %}
diff --git a/admin/dashboard/templates/index.html b/admin/dashboard/templates/index.html
index 4fdbcef..ce73035 100644
--- a/admin/dashboard/templates/index.html
+++ b/admin/dashboard/templates/index.html
@@ -372,7 +372,7 @@
labels: ['已使用', '可用'],
datasets: [{
data: [usageValue, 100 - usageValue],
- backgroundColor: [color, 'rgba(226, 232, 240, 0.85)'],
+ backgroundColor: [color, 'rgba(214, 226, 219, 0.86)'],
borderWidth: 0
}]
},
@@ -485,8 +485,8 @@
datasets: [{
label: '调用次数',
data: data,
- backgroundColor: 'rgba(99, 102, 241, 0.72)',
- borderColor: 'rgba(79, 70, 229, 1)',
+ backgroundColor: 'rgba(15, 118, 110, 0.74)',
+ borderColor: 'rgba(11, 94, 87, 1)',
borderRadius: 10,
borderWidth: 0
}]
@@ -501,7 +501,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148, 163, 184, 0.12)'
+ color: 'rgba(101, 121, 113, 0.18)'
}
},
x: {
@@ -535,8 +535,8 @@
datasets: [{
label: '成功率(%)',
data: data,
- backgroundColor: 'rgba(16, 185, 129, 0.74)',
- borderColor: 'rgba(5, 150, 105, 1)',
+ backgroundColor: 'rgba(234, 88, 12, 0.64)',
+ borderColor: 'rgba(194, 65, 12, 1)',
borderRadius: 10,
borderWidth: 0
}]
@@ -552,7 +552,7 @@
beginAtZero: true,
max: 100,
grid: {
- color: 'rgba(148, 163, 184, 0.12)'
+ color: 'rgba(101, 121, 113, 0.18)'
}
},
x: {
@@ -589,8 +589,8 @@
label: '总调用',
data: totalData,
fill: false,
- backgroundColor: 'rgba(79, 70, 229, 0.2)',
- borderColor: 'rgba(79, 70, 229, 1)',
+ backgroundColor: 'rgba(15, 118, 110, 0.18)',
+ borderColor: 'rgba(15, 118, 110, 1)',
tension: 0.32,
borderWidth: 3,
pointRadius: 2
@@ -599,8 +599,8 @@
label: '成功调用',
data: successData,
fill: false,
- backgroundColor: 'rgba(16, 185, 129, 0.2)',
- borderColor: 'rgba(16, 185, 129, 1)',
+ backgroundColor: 'rgba(14, 165, 233, 0.16)',
+ borderColor: 'rgba(14, 165, 233, 1)',
tension: 0.32,
borderWidth: 3,
pointRadius: 2
@@ -609,8 +609,8 @@
label: '失败调用',
data: errorData,
fill: false,
- backgroundColor: 'rgba(239, 68, 68, 0.2)',
- borderColor: 'rgba(239, 68, 68, 1)',
+ backgroundColor: 'rgba(234, 88, 12, 0.20)',
+ borderColor: 'rgba(234, 88, 12, 1)',
tension: 0.32,
borderWidth: 3,
pointRadius: 2
@@ -628,7 +628,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148, 163, 184, 0.12)'
+ color: 'rgba(101, 121, 113, 0.18)'
}
},
x: {
@@ -698,8 +698,8 @@
label: '消息数量',
data: this.hourlyMessageTrendData.counts,
fill: true,
- backgroundColor: 'rgba(59, 130, 246, 0.10)',
- borderColor: 'rgba(59, 130, 246, 1)',
+ backgroundColor: 'rgba(15, 118, 110, 0.12)',
+ borderColor: 'rgba(15, 118, 110, 1)',
tension: 0.32,
borderWidth: 3,
pointRadius: 2
@@ -712,7 +712,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148, 163, 184, 0.12)'
+ color: 'rgba(101, 121, 113, 0.18)'
}
},
x: {
@@ -745,7 +745,7 @@
{% block styles %}
{% endblock %}
diff --git a/admin/dashboard/templates/login.html b/admin/dashboard/templates/login.html
index 2566c53..d03018f 100644
--- a/admin/dashboard/templates/login.html
+++ b/admin/dashboard/templates/login.html
@@ -13,25 +13,26 @@
{% endblock %}
diff --git a/admin/dashboard/templates/message_push_management.html b/admin/dashboard/templates/message_push_management.html
index 1ea7ba7..78bc030 100644
--- a/admin/dashboard/templates/message_push_management.html
+++ b/admin/dashboard/templates/message_push_management.html
@@ -150,6 +150,6 @@ new Vue({
});
{% endblock %}
diff --git a/admin/dashboard/templates/plugins.html b/admin/dashboard/templates/plugins.html
index 9176d02..d129c18 100644
--- a/admin/dashboard/templates/plugins.html
+++ b/admin/dashboard/templates/plugins.html
@@ -28,9 +28,9 @@
{% block scripts %}
{% endblock %}
diff --git a/admin/dashboard/templates/plugins_manage.html b/admin/dashboard/templates/plugins_manage.html
index 3613d5a..b6688d5 100644
--- a/admin/dashboard/templates/plugins_manage.html
+++ b/admin/dashboard/templates/plugins_manage.html
@@ -361,15 +361,15 @@
gap: 18px;
padding: 24px 26px;
border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16);
- box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16);
+ box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-eyebrow {
font-size: 12px;
text-transform: uppercase;
letter-spacing: .08em;
- color: #6366f1;
+ color: #0b5e57;
font-weight: 700;
margin-bottom: 8px;
}
@@ -377,43 +377,43 @@
font-size: 30px;
line-height: 1.1;
margin-bottom: 10px;
- color: #0f172a;
+ color: #15211b;
}
.page-hero-copy p {
- color: #64748b;
+ color: #4f6258;
font-size: 14px;
}
.overview-grid .el-col { margin-bottom: 16px; }
.overview-card { min-height: 112px; }
.overview-card--primary {
- background: linear-gradient(180deg, rgba(79,70,229,0.10), rgba(255,255,255,0.94)) !important;
+ background: linear-gradient(180deg, rgba(15,118,110,0.10), rgba(255,255,255,0.94)) !important;
}
.overview-card--soft {
- background: linear-gradient(180deg, rgba(59,130,246,0.08), rgba(255,255,255,0.94)) !important;
+ background: linear-gradient(180deg, rgba(14,165,233,0.08), rgba(255,255,255,0.94)) !important;
}
- .overview-label { font-size: 13px; color: #64748b; margin-bottom: 14px; }
- .overview-value { font-size: 30px; font-weight: 700; color: #0f172a; margin-bottom: 10px; }
- .overview-note { font-size: 12px; color: #94a3b8; }
+ .overview-label { font-size: 13px; color: #4f6258; margin-bottom: 14px; }
+ .overview-value { font-size: 30px; font-weight: 700; color: #15211b; margin-bottom: 10px; }
+ .overview-note { font-size: 12px; color: #74897f; }
.workspace-header {
display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.entity-cell { display: flex; align-items: center; gap: 12px; }
.entity-badge {
width: 30px; height: 30px; border-radius: 50%; display: inline-flex; align-items: center;
- justify-content: center; background: rgba(79,70,229,0.10); color: #4f46e5; font-size: 12px;
+ justify-content: center; background: rgba(15,118,110,0.10); color: #0f766e; font-size: 12px;
font-weight: 700; flex-shrink: 0;
}
- .entity-title { font-size: 14px; font-weight: 600; color: #0f172a; }
- .entity-subtitle { margin-top: 4px; font-size: 12px; color: #94a3b8; }
+ .entity-title { font-size: 14px; font-weight: 600; color: #15211b; }
+ .entity-subtitle { margin-top: 4px; font-size: 12px; color: #74897f; }
.action-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.plugin-detail-container { max-height: 70vh; overflow-y: auto; }
.plugin-descriptions { width: 100%; }
- .dialog-intro { margin-bottom: 14px; color: #64748b; font-size: 13px; }
+ .dialog-intro { margin-bottom: 14px; color: #4f6258; font-size: 13px; }
.config-container {
- max-height: 320px; overflow-y: auto; background: rgba(248,250,252,0.82); border: 1px solid rgba(148,163,184,0.12);
- border-radius: 14px; padding: 12px; font-size: 12px; color: #334155;
+ max-height: 320px; overflow-y: auto; background: rgba(247,251,248,0.82); border: 1px solid rgba(101,121,113,0.12);
+ border-radius: 14px; padding: 12px; font-size: 12px; color: #27443a;
}
.config-container pre { margin: 0; white-space: pre-wrap; word-break: break-word; }
.command-tags { display: flex; flex-wrap: wrap; gap: 6px; }
diff --git a/admin/dashboard/templates/robot_management.html b/admin/dashboard/templates/robot_management.html
index 1142a70..b5477dc 100644
--- a/admin/dashboard/templates/robot_management.html
+++ b/admin/dashboard/templates/robot_management.html
@@ -689,8 +689,8 @@
label: '消息数量',
data: this.messageTrendData.counts,
fill: true,
- backgroundColor: 'rgba(79, 70, 229, 0.10)',
- borderColor: 'rgba(79, 70, 229, 1)',
+ backgroundColor: 'rgba(15, 118, 110, 0.10)',
+ borderColor: 'rgba(15, 118, 110, 1)',
tension: 0.28,
borderWidth: 3,
pointRadius: 2
@@ -704,7 +704,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148,163,184,0.12)'
+ color: 'rgba(101,121,113,0.12)'
}
},
x: {
@@ -756,7 +756,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148,163,184,0.12)'
+ color: 'rgba(101,121,113,0.12)'
}
},
x: {
@@ -824,7 +824,7 @@
y: {
beginAtZero: true,
grid: {
- color: 'rgba(148,163,184,0.12)'
+ color: 'rgba(101,121,113,0.12)'
}
},
x: {
@@ -868,16 +868,16 @@
gap: 18px;
padding: 24px 26px;
border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16);
- box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16);
+ box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-eyebrow {
font-size: 12px;
text-transform: uppercase;
letter-spacing: .08em;
- color: #6366f1;
+ color: #0b5e57;
font-weight: 700;
margin-bottom: 8px;
}
@@ -886,11 +886,11 @@
font-size: 30px;
line-height: 1.1;
margin-bottom: 10px;
- color: #0f172a;
+ color: #15211b;
}
.page-hero-copy p {
- color: #64748b;
+ color: #4f6258;
font-size: 14px;
}
@@ -913,29 +913,29 @@
}
.overview-card--primary {
- background: linear-gradient(180deg, rgba(79,70,229,0.10), rgba(255,255,255,0.94)) !important;
+ background: linear-gradient(180deg, rgba(15,118,110,0.10), rgba(255,255,255,0.94)) !important;
}
.overview-card--soft {
- background: linear-gradient(180deg, rgba(59,130,246,0.08), rgba(255,255,255,0.94)) !important;
+ background: linear-gradient(180deg, rgba(14,165,233,0.08), rgba(255,255,255,0.94)) !important;
}
.overview-label {
font-size: 13px;
- color: #64748b;
+ color: #4f6258;
margin-bottom: 14px;
}
.overview-value {
font-size: 30px;
font-weight: 700;
- color: #0f172a;
+ color: #15211b;
margin-bottom: 10px;
}
.overview-note {
font-size: 12px;
- color: #94a3b8;
+ color: #74897f;
}
.workspace-header {
@@ -952,7 +952,7 @@
.workspace-header p {
font-size: 13px;
- color: #64748b;
+ color: #4f6258;
}
.workspace-actions {
@@ -964,7 +964,7 @@
.selection-summary {
font-size: 13px;
- color: #475569;
+ color: #3f5148;
margin-right: 4px;
}
@@ -981,8 +981,8 @@
display: inline-flex;
align-items: center;
justify-content: center;
- background: rgba(79,70,229,0.10);
- color: #4f46e5;
+ background: rgba(15,118,110,0.10);
+ color: #0f766e;
font-size: 12px;
font-weight: 700;
flex-shrink: 0;
@@ -991,13 +991,13 @@
.entity-title {
font-size: 14px;
font-weight: 600;
- color: #0f172a;
+ color: #15211b;
}
.entity-subtitle {
margin-top: 4px;
font-size: 12px;
- color: #94a3b8;
+ color: #74897f;
}
.action-row {
@@ -1009,7 +1009,7 @@
.dialog-intro {
margin-bottom: 14px;
- color: #64748b;
+ color: #4f6258;
font-size: 13px;
}
@@ -1023,15 +1023,15 @@
.chart-shell {
padding: 16px;
border-radius: 18px;
- background: linear-gradient(180deg, rgba(248,250,252,0.78), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.12);
+ background: linear-gradient(180deg, rgba(247,251,248,0.78), rgba(255,255,255,0.96));
+ border: 1px solid rgba(101,121,113,0.12);
}
.chart-heading {
margin-bottom: 12px;
font-size: 14px;
font-weight: 600;
- color: #334155;
+ color: #27443a;
}
.detail-hero {
@@ -1043,7 +1043,7 @@
margin-bottom: 16px;
border-radius: 22px;
background: linear-gradient(135deg, rgba(249,115,22,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.14);
+ border: 1px solid rgba(101,121,113,0.14);
}
.detail-health-label {
@@ -1062,7 +1062,7 @@
.detail-health-note {
font-size: 13px;
- color: #64748b;
+ color: #4f6258;
}
.detail-tags {
@@ -1087,7 +1087,7 @@
.section-title {
font-size: 15px;
font-weight: 600;
- color: #0f172a;
+ color: #15211b;
margin-bottom: 12px;
}
@@ -1103,20 +1103,20 @@
.diagnosis-title {
font-size: 13px;
- color: #64748b;
+ color: #4f6258;
margin-bottom: 10px;
}
.diagnosis-value {
font-size: 24px;
font-weight: 700;
- color: #0f172a;
+ color: #15211b;
margin-bottom: 8px;
}
.diagnosis-desc {
font-size: 12px;
- color: #94a3b8;
+ color: #74897f;
line-height: 1.5;
}
@@ -1133,12 +1133,12 @@
align-items: center;
justify-content: space-between;
font-weight: 600;
- color: #0f172a;
+ color: #15211b;
}
.detail-card-sub {
font-size: 12px;
- color: #94a3b8;
+ color: #74897f;
font-weight: 500;
}
@@ -1153,7 +1153,7 @@
.empty-inline,
.detail-inline-note {
font-size: 12px;
- color: #64748b;
+ color: #4f6258;
}
.detail-inline-note {
@@ -1183,19 +1183,19 @@
padding: 12px 14px;
border-radius: 14px;
background: linear-gradient(180deg, rgba(14,165,233,0.08), rgba(255,255,255,0.96));
- border: 1px solid rgba(148,163,184,0.12);
+ border: 1px solid rgba(101,121,113,0.12);
}
.peak-hour-rank {
font-size: 13px;
- color: #0f172a;
+ color: #15211b;
font-weight: 600;
margin-bottom: 6px;
}
.peak-hour-count {
font-size: 12px;
- color: #64748b;
+ color: #4f6258;
}
.chart-shell--compact {
diff --git a/admin/dashboard/templates/system_llm.html b/admin/dashboard/templates/system_llm.html
index ffb5a26..3223bb0 100644
--- a/admin/dashboard/templates/system_llm.html
+++ b/admin/dashboard/templates/system_llm.html
@@ -260,20 +260,20 @@
.system-page { display: flex; flex-direction: column; gap: 24px; }
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 24px;
- background: linear-gradient(135deg, rgba(248,250,252,0.96), rgba(226,232,240,0.88));
- border: 1px solid rgba(148,163,184,0.16);
- border-radius: 24px; padding: 28px 32px; box-shadow: 0 18px 48px rgba(15,23,42,0.06);
+ background: linear-gradient(135deg, rgba(247,251,248,0.96), rgba(214,226,219,0.88));
+ border: 1px solid rgba(101,121,113,0.16);
+ border-radius: 24px; padding: 28px 32px; box-shadow: 0 18px 48px rgba(21,33,27,0.06);
}
- .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6366f1; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #0b5e57; font-weight: 700; margin-bottom: 8px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.workspace-card .el-card__body { display: flex; flex-direction: column; gap: 16px; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
- .config-meta { display: flex; gap: 12px; color: #64748b; font-size: 12px; flex-wrap: wrap; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
+ .config-meta { display: flex; gap: 12px; color: #4f6258; font-size: 12px; flex-wrap: wrap; }
.backend-list { display: flex; flex-direction: column; gap: 16px; }
- .backend-card { border-radius: 18px; border: 1px solid rgba(148,163,184,0.16); }
+ .backend-card { border-radius: 18px; border: 1px solid rgba(101,121,113,0.16); }
.backend-card-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.backend-grid {
display: grid;
diff --git a/admin/dashboard/templates/system_status.html b/admin/dashboard/templates/system_status.html
index 7202584..3cea5c0 100644
--- a/admin/dashboard/templates/system_status.html
+++ b/admin/dashboard/templates/system_status.html
@@ -89,23 +89,23 @@
.page-shell { display: flex; flex-direction: column; gap: 16px; }
.page-hero {
display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; padding: 24px 26px; border-radius: 24px;
- background: linear-gradient(135deg, rgba(79,70,229,0.10), rgba(59,130,246,0.08), rgba(255,255,255,0.9));
- border: 1px solid rgba(148, 163, 184, 0.16); box-shadow: 0 18px 40px rgba(15, 23, 42, 0.06);
+ background: linear-gradient(135deg, rgba(15,118,110,0.10), rgba(14,165,233,0.08), rgba(255,255,255,0.9));
+ border: 1px solid rgba(101, 121, 113, 0.16); box-shadow: 0 18px 40px rgba(21, 33, 27, 0.06);
}
.page-hero-actions { display: flex; align-items: center; gap: 12px; }
- .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #6366f1; font-weight: 700; margin-bottom: 8px; }
- .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #0f172a; }
- .page-hero-copy p { color: #64748b; font-size: 14px; }
+ .page-eyebrow { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: #0b5e57; font-weight: 700; margin-bottom: 8px; }
+ .page-hero-copy h1 { font-size: 30px; line-height: 1.1; margin-bottom: 10px; color: #15211b; }
+ .page-hero-copy p { color: #4f6258; font-size: 14px; }
.workspace-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.workspace-header h3 { font-size: 18px; margin-bottom: 4px; }
- .workspace-header p { font-size: 13px; color: #64748b; }
+ .workspace-header p { font-size: 13px; color: #4f6258; }
.iframe-url {
max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px;
- color: #94a3b8; padding: 8px 12px; border-radius: 999px; background: rgba(248,250,252,0.9); border: 1px solid rgba(148,163,184,0.12);
+ color: #74897f; padding: 8px 12px; border-radius: 999px; background: rgba(247,251,248,0.9); border: 1px solid rgba(101,121,113,0.12);
}
.iframe-shell-card { height: calc(100vh - 230px); }
.iframe-shell-card .el-card__body { height: calc(100% - 73px); }
- .iframe-shell { height: 100%; border-radius: 18px; overflow: hidden; border: 1px solid rgba(148,163,184,0.12); background: rgba(248,250,252,0.82); }
+ .iframe-shell { height: 100%; border-radius: 18px; overflow: hidden; border: 1px solid rgba(101,121,113,0.12); background: rgba(247,251,248,0.82); }
.iframe-shell iframe { width: 100%; height: 100%; border: none; display: block; background: #fff; }
@media (max-width: 960px) {
.page-hero { flex-direction: column; align-items: flex-start; }
diff --git a/admin/dashboard/templates/users.html b/admin/dashboard/templates/users.html
index b821608..da9c568 100644
--- a/admin/dashboard/templates/users.html
+++ b/admin/dashboard/templates/users.html
@@ -57,6 +57,6 @@
new Vue({ el:'#app', mixins:[baseApp], data(){return{userStats:[],detailDialogVisible:false,detailLoading:false,detailData:null}}, computed:{ totalCalls(){return this.userStats.reduce((s,i)=>s+(parseInt(i.total_calls)||0),0)}, averageSuccessRate(){ if(!this.userStats.length) return '0.00'; const sum=this.userStats.reduce((s,i)=>s+(i.total_calls?((i.success_calls/i.total_calls)*100):0),0); return (sum/this.userStats.length).toFixed(2)} }, mounted(){ this.currentView='3'; this.loadData(); }, methods:{ loadData(){ this.loadUserStats(parseInt(this.timeRange)); }, loadUserStats(days){ axios.get(`/api/user_stats?days=${days}&limit=20`).then(r=>{ if(r.data.success) this.userStats=r.data.data||[]; }).catch(e=>{ console.error('加载用户统计数据出错:',e); this.$message.error('加载用户统计数据出错'); }); }, viewUserDetail(user){ if(!user||!user.user_id)return; this.detailDialogVisible=true; this.detailLoading=true; this.detailData=null; axios.get(`/api/user_stats/${encodeURIComponent(user.user_id)}?days=30`).then(r=>{ if(r.data.success){ this.detailData=r.data.data||null; } else { this.$message.error(r.data.error||'加载用户详情失败'); } }).catch(e=>{ console.error('加载用户详情出错:',e); this.$message.error('加载用户详情出错'); }).finally(()=>{ this.detailLoading=false; }); } } });
{% endblock %}
diff --git a/admin/dashboard/templates/virtual_group_management.html b/admin/dashboard/templates/virtual_group_management.html
index 35eeb7a..6909696 100644
--- a/admin/dashboard/templates/virtual_group_management.html
+++ b/admin/dashboard/templates/virtual_group_management.html
@@ -66,7 +66,7 @@
- {% raw %}{{ group.name }}{% endraw %}{% raw %}{{ group.wxid }}{% endraw %}
+ {% raw %}{{ group.name }}{% endraw %}{% raw %}{{ group.wxid }}{% endraw %}
@@ -97,6 +97,6 @@ new Vue({
});
{% endblock %}
diff --git a/admin/dashboard/templates/wx_logs.html b/admin/dashboard/templates/wx_logs.html
index 21146d0..fa8233a 100644
--- a/admin/dashboard/templates/wx_logs.html
+++ b/admin/dashboard/templates/wx_logs.html
@@ -28,6 +28,6 @@
new Vue({ el:'#app', mixins:[baseApp], data(){ return { loading:false, logType:'info', logLines:100, logContent:[], logText:'', refreshInterval:0, refreshTimer:null, currentView:'9', showTimeRangeSelector:false, cancelSource:null, isAutoScroll:true } }, mounted(){ this.loadLogs(); this.$nextTick(()=>{ const logDiv=this.$el.querySelector('.log-content'); if(logDiv){ logDiv.addEventListener('scroll',()=>{ const nearBottom=(logDiv.scrollHeight-logDiv.scrollTop-logDiv.clientHeight)<50; this.isAutoScroll=nearBottom; }); } }); }, beforeDestroy(){ this.clearRefreshTimer(); if(this.cancelSource){ this.cancelSource.cancel('component destroyed'); this.cancelSource=null; } }, methods:{ loadLogs(){ this.loading=true; if(this.cancelSource){ this.cancelSource.cancel('new request'); } this.cancelSource=axios.CancelToken.source(); axios.get(`/api/wx_logs`,{ params:{ type:this.logType, lines:this.logLines }, cancelToken:this.cancelSource.token }).then(response=>{ if(response.data.success){ this.logContent=response.data.data.content||[]; this.logText=this.logContent.join('\n'); this.$nextTick(()=>{ const logDiv=this.$el.querySelector('.log-content'); const pre=this.$refs.logPre; if(pre) pre.textContent=this.logText; if(logDiv&&this.isAutoScroll) logDiv.scrollTop=logDiv.scrollHeight; }); } else { this.$message.error('加载日志失败'); } }).catch(error=>{ if(!axios.isCancel(error)){ console.error('加载日志出错:',error); this.$message.error('加载日志出错'); } }).finally(()=>{ this.loading=false; }); }, handleRefreshInterval(){ this.clearRefreshTimer(); if(this.refreshInterval>0){ this.refreshTimer=setInterval(()=>this.loadLogs(), this.refreshInterval*1000); } }, clearRefreshTimer(){ if(this.refreshTimer){ clearInterval(this.refreshTimer); this.refreshTimer=null; } } } });
{% endblock %}