Просмотр исходного кода

style: 清理 Phase3 残留渐变与装饰性 emoji(企业级 UI 规范)

- 7 个文件 linear-gradient 改为 Ant 扁平实色(#1677FF/#52C41A/#FAAD14 等)
- 8 个文件移除装饰性 emoji(标题/卡片前缀),LangGraphAdmin 改为 el-icon,ReviewCenter 移除图标位
- TeacherOrders 重命名 gradient-* 类名、TeacherTeam 重命名 gradients 变量(均已为实色)
- 功能性箭头与用户可配置 icon 数据字段(ArticleCategory/gates/ProblemDomainManage)保留
liaoxg 1 неделя назад
Родитель
Сommit
74ca0948c5

+ 4 - 4
cfc-web/src/views/TeacherDashboard.vue

@@ -4,7 +4,7 @@
     <el-row :gutter="24" class="td-stat-row">
     <el-row :gutter="24" class="td-stat-row">
       <el-col :span="6">
       <el-col :span="6">
         <div class="td-stat-card">
         <div class="td-stat-card">
-          <div class="td-stat-icon" style="background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%)">
+          <div class="td-stat-icon" style="background: #1677FF">
             <i class="el-icon-user-solid"></i>
             <i class="el-icon-user-solid"></i>
           </div>
           </div>
           <div class="td-stat-content">
           <div class="td-stat-content">
@@ -15,7 +15,7 @@
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
         <div class="td-stat-card">
         <div class="td-stat-card">
-          <div class="td-stat-icon" style="background: linear-gradient(135deg, #10B981 0%, #34D399 100%)">
+          <div class="td-stat-icon" style="background: #52C41A">
             <i class="el-icon-s-data"></i>
             <i class="el-icon-s-data"></i>
           </div>
           </div>
           <div class="td-stat-content">
           <div class="td-stat-content">
@@ -26,7 +26,7 @@
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
         <div class="td-stat-card">
         <div class="td-stat-card">
-          <div class="td-stat-icon" style="background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%)">
+          <div class="td-stat-icon" style="background: #FAAD14">
             <i class="el-icon-coin"></i>
             <i class="el-icon-coin"></i>
           </div>
           </div>
           <div class="td-stat-content">
           <div class="td-stat-content">
@@ -37,7 +37,7 @@
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
         <div class="td-stat-card">
         <div class="td-stat-card">
-          <div class="td-stat-icon" style="background: linear-gradient(135deg, #1677FF 0%, #4096FF 100%)">
+          <div class="td-stat-icon" style="background: #1677FF">
             <i class="el-icon-wallet"></i>
             <i class="el-icon-wallet"></i>
           </div>
           </div>
           <div class="td-stat-content">
           <div class="td-stat-content">

+ 3 - 3
cfc-web/src/views/Wishes.vue

@@ -47,7 +47,7 @@
 
 
           <!-- 待定价列表 -->
           <!-- 待定价列表 -->
           <div v-if="draftWishes.length > 0" class="wish-section">
           <div v-if="draftWishes.length > 0" class="wish-section">
-            <div class="section-title">📝 待定价</div>
+            <div class="section-title">待定价</div>
 <div class="adm-table-wrap">
 <div class="adm-table-wrap">
 <el-table style="width: 100%" height="100%" :data="draftWishes" border v-loading="loading">
 <el-table style="width: 100%" height="100%" :data="draftWishes" border v-loading="loading">
               <el-table-column prop="id" label="ID" width="80"></el-table-column>
               <el-table-column prop="id" label="ID" width="80"></el-table-column>
@@ -113,7 +113,7 @@
 
 
           <!-- 待兑现列表 -->
           <!-- 待兑现列表 -->
           <div v-if="approvedWishes.length > 0" class="wish-section">
           <div v-if="approvedWishes.length > 0" class="wish-section">
-            <div class="section-title">📦 待兑现</div>
+            <div class="section-title">待兑现</div>
                         <div class="adm-table-wrap">
                         <div class="adm-table-wrap">
 <el-table :data="approvedWishes" border v-loading="loading" style="width: 100%" height="100%">
 <el-table :data="approvedWishes" border v-loading="loading" style="width: 100%" height="100%">
               <el-table-column prop="id" label="ID" width="80"></el-table-column>
               <el-table-column prop="id" label="ID" width="80"></el-table-column>
@@ -140,7 +140,7 @@
 
 
           <!-- 待收货列表 -->
           <!-- 待收货列表 -->
           <div v-if="exchangingWishes.length > 0" class="wish-section">
           <div v-if="exchangingWishes.length > 0" class="wish-section">
-            <div class="section-title">🎁 待收货确认</div>
+            <div class="section-title">待收货确认</div>
                         <div class="adm-table-wrap">
                         <div class="adm-table-wrap">
 <el-table :data="exchangingWishes" border v-loading="loading" style="width: 100%" height="100%">
 <el-table :data="exchangingWishes" border v-loading="loading" style="width: 100%" height="100%">
               <el-table-column prop="id" label="ID" width="80"></el-table-column>
               <el-table-column prop="id" label="ID" width="80"></el-table-column>

+ 2 - 2
cfc-web/src/views/admin/Assessment.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="assessment-admin admin-page">
   <div class="assessment-admin admin-page">
     <el-card class="config-card">
     <el-card class="config-card">
-      <PageHeader slot="header" title="💰 积分配置"></PageHeader>
+      <PageHeader slot="header" title="积分配置"></PageHeader>
       <el-form :model="pointsConfig" label-width="120px">
       <el-form :model="pointsConfig" label-width="120px">
         <el-form-item label="完成获得积分">
         <el-form-item label="完成获得积分">
           <el-input-number v-model="pointsConfig.pointsValue" :min="1" :max="1000" />
           <el-input-number v-model="pointsConfig.pointsValue" :min="1" :max="1000" />
@@ -18,7 +18,7 @@
     </el-card>
     </el-card>
 
 
     <el-card class="materials-card">
     <el-card class="materials-card">
-      <PageHeader slot="header" title="📚 测评资料">
+      <PageHeader slot="header" title="测评资料">
         
         
         <el-input v-model="keyword" placeholder="搜索测评资料..." prefix-icon="el-icon-search" style="width:200px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <el-input v-model="keyword" placeholder="搜索测评资料..." prefix-icon="el-icon-search" style="width:200px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <div class="admin-page-actions">
         <div class="admin-page-actions">

+ 3 - 3
cfc-web/src/views/admin/DanSettlement.vue

@@ -394,15 +394,15 @@ export default {
 }
 }
 
 
 .stat-icon-wrap.total {
 .stat-icon-wrap.total {
-  background: linear-gradient(135deg, #409EFF, #2d8cf0);
+  background: #1677FF;
 }
 }
 
 
 .stat-icon-wrap.pending {
 .stat-icon-wrap.pending {
-  background: linear-gradient(135deg, #e6a23c, #d4941c);
+  background: #FAAD14;
 }
 }
 
 
 .stat-icon-wrap.settled {
 .stat-icon-wrap.settled {
-  background: linear-gradient(135deg, #67c23a, #4fa62c);
+  background: #52C41A;
 }
 }
 
 
 .stat-info {
 .stat-info {

+ 15 - 11
cfc-web/src/views/admin/LangGraphAdmin.vue

@@ -2,7 +2,7 @@
   <div class="lg-admin">
   <div class="lg-admin">
     <div class="lg-top-bar">
     <div class="lg-top-bar">
       <div class="lg-stat" :class="statusClass">
       <div class="lg-stat" :class="statusClass">
-        <span class="lg-stat-icon">{{ statusIcon }}</span>
+        <i class="lg-stat-icon" :class="statusIcon"></i>
         <div class="lg-stat-info">
         <div class="lg-stat-info">
           <div class="lg-stat-label">服务状态</div>
           <div class="lg-stat-label">服务状态</div>
           <div class="lg-stat-value">{{ statusText }}</div>
           <div class="lg-stat-value">{{ statusText }}</div>
@@ -10,7 +10,7 @@
         </div>
         </div>
       </div>
       </div>
       <div class="lg-stat">
       <div class="lg-stat">
-        <span class="lg-stat-icon">🔗</span>
+        <i class="lg-stat-icon el-icon-share"></i>
         <div class="lg-stat-info">
         <div class="lg-stat-info">
           <div class="lg-stat-label">服务地址</div>
           <div class="lg-stat-label">服务地址</div>
           <div class="lg-stat-value" style="font-size:12px">{{ langgraphUrl }}</div>
           <div class="lg-stat-value" style="font-size:12px">{{ langgraphUrl }}</div>
@@ -18,7 +18,7 @@
         </div>
         </div>
       </div>
       </div>
       <div class="lg-stat">
       <div class="lg-stat">
-        <span class="lg-stat-icon">📡</span>
+        <i class="lg-stat-icon el-icon-s-data"></i>
         <div class="lg-stat-info">
         <div class="lg-stat-info">
           <div class="lg-stat-label">API 端点数</div>
           <div class="lg-stat-label">API 端点数</div>
           <div class="lg-stat-value">{{ apiCount }}</div>
           <div class="lg-stat-value">{{ apiCount }}</div>
@@ -26,7 +26,7 @@
         </div>
         </div>
       </div>
       </div>
       <div class="lg-stat">
       <div class="lg-stat">
-        <span class="lg-stat-icon">📋</span>
+        <i class="lg-stat-icon el-icon-document"></i>
         <div class="lg-stat-info">
         <div class="lg-stat-info">
           <div class="lg-stat-label">请求日志</div>
           <div class="lg-stat-label">请求日志</div>
           <div class="lg-stat-value">{{ totalLogs }}</div>
           <div class="lg-stat-value">{{ totalLogs }}</div>
@@ -193,7 +193,7 @@ export default {
       serviceVersion: '0.3.0',
       serviceVersion: '0.3.0',
       statusText: '检测中...',
       statusText: '检测中...',
       statusClass: 'status-checking',
       statusClass: 'status-checking',
-      statusIcon: '🔄',
+      statusIcon: 'el-icon-loading',
       statusTime: '',
       statusTime: '',
       apiCount: 0,
       apiCount: 0,
       apiEndpoints: [],
       apiEndpoints: [],
@@ -268,9 +268,9 @@ export default {
           img.onerror = function() { resolve(false) }
           img.onerror = function() { resolve(false) }
           img.src = BASE + '/health?t=' + Date.now()
           img.src = BASE + '/health?t=' + Date.now()
         })
         })
-        if (healthy) { this.statusText = '运行中'; this.statusClass = 'status-healthy'; this.statusIcon = '✅' }
-        else { this.statusText = '未响应'; this.statusClass = 'status-unhealthy'; this.statusIcon = '❌' }
-      } catch (e) { this.statusText = '异常'; this.statusClass = 'status-unhealthy'; this.statusIcon = '❌' }
+        if (healthy) { this.statusText = '运行中'; this.statusClass = 'status-healthy'; this.statusIcon = 'el-icon-success' }
+        else { this.statusText = '未响应'; this.statusClass = 'status-unhealthy'; this.statusIcon = 'el-icon-error' }
+      } catch (e) { this.statusText = '异常'; this.statusClass = 'status-unhealthy'; this.statusIcon = 'el-icon-error' }
       this.statusTime = new Date().toLocaleTimeString()
       this.statusTime = new Date().toLocaleTimeString()
     },
     },
     async fetchSpec() {
     async fetchSpec() {
@@ -309,15 +309,15 @@ export default {
         if (llmOk && chromaOk) {
         if (llmOk && chromaOk) {
           this.statusText = '运行中'
           this.statusText = '运行中'
           this.statusClass = 'status-healthy'
           this.statusClass = 'status-healthy'
-          this.statusIcon = '✅'
+          this.statusIcon = 'el-icon-success'
         } else if (!llmOk) {
         } else if (!llmOk) {
           this.statusText = 'LLM 异常'
           this.statusText = 'LLM 异常'
           this.statusClass = 'status-unhealthy'
           this.statusClass = 'status-unhealthy'
-          this.statusIcon = '❌'
+          this.statusIcon = 'el-icon-error'
         } else {
         } else {
           this.statusText = '运行中'
           this.statusText = '运行中'
           this.statusClass = 'status-degraded'
           this.statusClass = 'status-degraded'
-          this.statusIcon = '⚠️'
+          this.statusIcon = 'el-icon-warning'
         }
         }
         this.statusTime = new Date().toLocaleTimeString()
         this.statusTime = new Date().toLocaleTimeString()
       } catch (e) {
       } catch (e) {
@@ -405,6 +405,10 @@ export default {
 .lg-stat.status-unhealthy { border-left-color: #f56c6c; }
 .lg-stat.status-unhealthy { border-left-color: #f56c6c; }
 .lg-stat.status-degraded  { border-left-color: #e6a23c; }
 .lg-stat.status-degraded  { border-left-color: #e6a23c; }
 .lg-stat-icon { font-size: 22px; flex-shrink: 0; }
 .lg-stat-icon { font-size: 22px; flex-shrink: 0; }
+.lg-stat.status-checking .lg-stat-icon { color: #409EFF; }
+.lg-stat.status-healthy .lg-stat-icon { color: #67c23a; }
+.lg-stat.status-unhealthy .lg-stat-icon { color: #f56c6c; }
+.lg-stat.status-degraded .lg-stat-icon { color: #e6a23c; }
 .lg-stat-label { font-size: 11px; color: #909399; }
 .lg-stat-label { font-size: 11px; color: #909399; }
 .lg-stat-value { font-size: 16px; font-weight: bold; color: #303133; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .lg-stat-value { font-size: 16px; font-weight: bold; color: #303133; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
 .lg-stat-sub { font-size: 11px; color: #bbb; }
 .lg-stat-sub { font-size: 11px; color: #bbb; }

+ 4 - 4
cfc-web/src/views/admin/ProxyReportUpload.vue

@@ -2,7 +2,7 @@
   <div class="proxy-report-upload">
   <div class="proxy-report-upload">
     <el-card>
     <el-card>
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📤 代传报告上传</span>
+        <span class="card-title">代传报告上传</span>
       </div>
       </div>
       <el-form ref="uploadForm" :model="uploadForm" label-width="100px" class="upload-form">
       <el-form ref="uploadForm" :model="uploadForm" label-width="100px" class="upload-form">
         <el-form-item label="选择家庭" prop="familyId" required>
         <el-form-item label="选择家庭" prop="familyId" required>
@@ -33,7 +33,7 @@
     <!-- 解析结果预览 -->
     <!-- 解析结果预览 -->
     <el-card v-if="previewResult" style="margin-top:20px">
     <el-card v-if="previewResult" style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📊 解析结果预览</span>
+        <span class="card-title">解析结果预览</span>
         <el-tag :type="previewResult.needBind ? 'warning' : 'success'" size="small">
         <el-tag :type="previewResult.needBind ? 'warning' : 'success'" size="small">
           {{ previewResult.needBind ? '待绑定成员' : '已匹配成员' }}
           {{ previewResult.needBind ? '待绑定成员' : '已匹配成员' }}
         </el-tag>
         </el-tag>
@@ -55,7 +55,7 @@
     <!-- AI解读结果 -->
     <!-- AI解读结果 -->
     <el-card v-if="analysisResult" style="margin-top:20px">
     <el-card v-if="analysisResult" style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">🤖 AI解读结果</span>
+        <span class="card-title">AI解读结果</span>
         <StatusTag type="success" size="small" text="已完成" />
         <StatusTag type="success" size="small" text="已完成" />
       </div>
       </div>
       <div v-html="analysisResult" class="analysis-content"></div>
       <div v-html="analysisResult" class="analysis-content"></div>
@@ -64,7 +64,7 @@
     <!-- 代传历史 -->
     <!-- 代传历史 -->
     <el-card style="margin-top:20px">
     <el-card style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📁 代上传历史记录</span>
+        <span class="card-title">代上传历史记录</span>
       </div>
       </div>
       <div class="filter-bar">
       <div class="filter-bar">
         <el-select v-model="query.type" placeholder="报告类型" clearable style="width:140px">
         <el-select v-model="query.type" placeholder="报告类型" clearable style="width:140px">

+ 12 - 14
cfc-web/src/views/admin/ReviewCenter.vue

@@ -5,7 +5,6 @@
       <el-col v-for="card in summaryCards" :key="card.key" :span="4">
       <el-col v-for="card in summaryCards" :key="card.key" :span="4">
         <el-card :class="['summary-card', { active: activeTab === card.key }]" shadow="hover" @click.native="activeTab = card.key">
         <el-card :class="['summary-card', { active: activeTab === card.key }]" shadow="hover" @click.native="activeTab = card.key">
           <div class="summary-inner">
           <div class="summary-inner">
-            <span class="summary-icon">{{ card.icon }}</span>
             <span class="summary-count">{{ card.count }}</span>
             <span class="summary-count">{{ card.count }}</span>
             <span class="summary-label">{{ card.label }}</span>
             <span class="summary-label">{{ card.label }}</span>
           </div>
           </div>
@@ -84,18 +83,18 @@ export default {
       activeTab: 'article',
       activeTab: 'article',
       summaryData: {},
       summaryData: {},
       summaryCards: [
       summaryCards: [
-        { key: 'article', label: '文章审核', icon: '📄', count: 0 },
-        { key: 'product', label: '商品审核', icon: '📦', count: 0 },
-        { key: 'guide', label: '规划师审核', icon: '👤', count: 0 },
-        { key: 'vendor', label: '服务商审核', icon: '🏪', count: 0 },
-        { key: 'butler', label: '管家审核', icon: '🤵', count: 0 },
-        { key: 'package', label: '任务模板审核', icon: '📋', count: 0 },
-        { key: 'activity', label: '活动审核', icon: '🎯', count: 0 },
-        { key: 'activityRegistration', label: '报名审核', icon: '📝', count: 0 },
-        { key: 'withdraw', label: '提现审核', icon: '💰', count: 0 },
-        { key: 'refund', label: '待退款审核', icon: '💸', count: 0 },
-        { key: 'hierarchy', label: '更换上级', icon: '🔗', count: 0 },
-        { key: 'nutritionist', label: '营养师审核', icon: '🥗', count: 0 },
+        { key: 'article', label: '文章审核', count: 0 },
+        { key: 'product', label: '商品审核', count: 0 },
+        { key: 'guide', label: '规划师审核', count: 0 },
+        { key: 'vendor', label: '服务商审核', count: 0 },
+        { key: 'butler', label: '管家审核', count: 0 },
+        { key: 'package', label: '任务模板审核', count: 0 },
+        { key: 'activity', label: '活动审核', count: 0 },
+        { key: 'activityRegistration', label: '报名审核', count: 0 },
+        { key: 'withdraw', label: '提现审核', count: 0 },
+        { key: 'refund', label: '待退款审核', count: 0 },
+        { key: 'hierarchy', label: '更换上级', count: 0 },
+        { key: 'nutritionist', label: '营养师审核', count: 0 },
       ]
       ]
     }
     }
   },
   },
@@ -143,7 +142,6 @@ export default {
 .summary-card { cursor: pointer; text-align: center; }
 .summary-card { cursor: pointer; text-align: center; }
 .summary-card.active { border-color: #409EFF; }
 .summary-card.active { border-color: #409EFF; }
 .summary-inner { display: flex; flex-direction: column; align-items: center; gap: 4px; }
 .summary-inner { display: flex; flex-direction: column; align-items: center; gap: 4px; }
-.summary-icon { font-size: 28px; }
 .summary-count { font-size: 24px; font-weight: bold; color: #409EFF; }
 .summary-count { font-size: 24px; font-weight: bold; color: #409EFF; }
 .summary-label { font-size: 12px; color: #666; }
 .summary-label { font-size: 12px; color: #666; }
 .detail-card { min-height: 400px; }
 .detail-card { min-height: 400px; }

+ 4 - 4
cfc-web/src/views/teacher/ProxyReport.vue

@@ -2,7 +2,7 @@
   <div class="proxy-report admin-page">
   <div class="proxy-report admin-page">
     <el-card>
     <el-card>
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📋 代上传健康报告</span>
+        <span class="card-title">代上传健康报告</span>
       </div>
       </div>
 
 
       <!-- 上传区域 -->
       <!-- 上传区域 -->
@@ -47,7 +47,7 @@
     <!-- 解析结果预览 -->
     <!-- 解析结果预览 -->
     <el-card v-if="previewResult" style="margin-top:20px">
     <el-card v-if="previewResult" style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📊 解析结果预览</span>
+        <span class="card-title">解析结果预览</span>
         <el-tag :type="previewResult.needBind ? 'warning' : 'success'" size="small">
         <el-tag :type="previewResult.needBind ? 'warning' : 'success'" size="small">
           {{ previewResult.needBind ? '待绑定成员' : '已匹配成员' }}
           {{ previewResult.needBind ? '待绑定成员' : '已匹配成员' }}
         </el-tag>
         </el-tag>
@@ -71,7 +71,7 @@
     <!-- AI解读结果 -->
     <!-- AI解读结果 -->
     <el-card v-if="analysisResult" style="margin-top:20px">
     <el-card v-if="analysisResult" style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">🤖 AI解读结果</span>
+        <span class="card-title">AI解读结果</span>
         <StatusTag type="success" size="small" text="已完成" />
         <StatusTag type="success" size="small" text="已完成" />
       </div>
       </div>
       <div v-html="analysisResult" class="analysis-content"></div>
       <div v-html="analysisResult" class="analysis-content"></div>
@@ -80,7 +80,7 @@
     <!-- 历史报告列表 -->
     <!-- 历史报告列表 -->
     <el-card style="margin-top:20px">
     <el-card style="margin-top:20px">
       <div slot="header" class="card-header">
       <div slot="header" class="card-header">
-        <span class="card-title">📁 代上传历史记录</span>
+        <span class="card-title">代上传历史记录</span>
       </div>
       </div>
             <div class="adm-table-wrap">
             <div class="adm-table-wrap">
 <el-table :data="reportList" border stripe v-loading="listLoading" height="100%">
 <el-table :data="reportList" border stripe v-loading="listLoading" height="100%">

+ 1 - 1
cfc-web/src/views/teacher/TeacherAssessment.vue

@@ -2,7 +2,7 @@
   <div class="family-assessment admin-page">
   <div class="family-assessment admin-page">
     <el-card>
     <el-card>
       <div slot="header" style="display:flex;justify-content:space-between;align-items:center">
       <div slot="header" style="display:flex;justify-content:space-between;align-items:center">
-        <span class="card-title">🏠 家庭DAN测评管理</span>
+        <span class="card-title">家庭DAN测评管理</span>
         <el-input v-model="keyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" style="width:200px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <el-input v-model="keyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" style="width:200px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
       </div>
       </div>
 
 

+ 8 - 8
cfc-web/src/views/teacher/TeacherFamilies.vue

@@ -368,7 +368,7 @@ export default {
 }
 }
 
 
 .primary-btn {
 .primary-btn {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border: none;
   border: none;
   padding: 12px 24px;
   padding: 12px 24px;
   border-radius: 10px;
   border-radius: 10px;
@@ -376,7 +376,7 @@ export default {
 }
 }
 
 
 .primary-btn:hover {
 .primary-btn:hover {
-  background: linear-gradient(135deg, #2563EB 0%, #3B82F6 100%);
+  background: #0958D9;
 }
 }
 
 
 /* 统计卡片 */
 /* 统计卡片 */
@@ -406,19 +406,19 @@ export default {
 }
 }
 
 
 .stat-icon.blue {
 .stat-icon.blue {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-icon.green {
 .stat-icon.green {
-  background: linear-gradient(135deg, #10B981 0%, #34D399 100%);
+  background: #52C41A;
 }
 }
 
 
 .stat-icon.orange {
 .stat-icon.orange {
-  background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);
+  background: #FAAD14;
 }
 }
 
 
 .stat-icon.purple {
 .stat-icon.purple {
-  background: linear-gradient(135deg, #1677FF 0%, #4096FF 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-value {
 .stat-value {
@@ -456,7 +456,7 @@ export default {
 .family-avatar {
 .family-avatar {
   width: 40px;
   width: 40px;
   height: 40px;
   height: 40px;
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border-radius: 10px;
   border-radius: 10px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
@@ -538,7 +538,7 @@ export default {
 .member-avatar {
 .member-avatar {
   width: 40px;
   width: 40px;
   height: 40px;
   height: 40px;
-  background: linear-gradient(135deg, #FF6B9D 0%, #FF8C6B 100%);
+  background: #F56CA0;
   border-radius: 50%;
   border-radius: 50%;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;

+ 5 - 5
cfc-web/src/views/teacher/TeacherMessages.vue

@@ -114,7 +114,7 @@
         <el-divider content-position="left">家庭成员</el-divider>
         <el-divider content-position="left">家庭成员</el-divider>
         <el-row :gutter="20" style="margin-bottom: 16px;">
         <el-row :gutter="20" style="margin-bottom: 16px;">
           <el-col :span="12">
           <el-col :span="12">
-            <div class="info-section-title">👤 家长</div>
+            <div class="info-section-title">家长</div>
             <div v-if="familyMembers.parents && familyMembers.parents.length > 0">
             <div v-if="familyMembers.parents && familyMembers.parents.length > 0">
               <div class="member-item" v-for="parent in familyMembers.parents" :key="parent.id">
               <div class="member-item" v-for="parent in familyMembers.parents" :key="parent.id">
                 <span class="member-name">{{ parent.nickname || parent.realName || parent.phone }}</span>
                 <span class="member-name">{{ parent.nickname || parent.realName || parent.phone }}</span>
@@ -124,7 +124,7 @@
             <div v-else class="no-data">暂无家长信息</div>
             <div v-else class="no-data">暂无家长信息</div>
           </el-col>
           </el-col>
           <el-col :span="12">
           <el-col :span="12">
-            <div class="info-section-title">👶 孩子</div>
+            <div class="info-section-title">孩子</div>
             <div v-if="familyMembers.children && familyMembers.children.length > 0">
             <div v-if="familyMembers.children && familyMembers.children.length > 0">
               <div class="member-item" v-for="child in familyMembers.children" :key="child.id">
               <div class="member-item" v-for="child in familyMembers.children" :key="child.id">
                 <span class="member-name">{{ child.nickname || child.realName }}</span>
                 <span class="member-name">{{ child.nickname || child.realName }}</span>
@@ -467,7 +467,7 @@ export default {
   position: relative;
   position: relative;
   width: 44px;
   width: 44px;
   height: 44px;
   height: 44px;
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border-radius: 12px;
   border-radius: 12px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
@@ -604,7 +604,7 @@ export default {
 }
 }
 
 
 .chat-message.mine .message-bubble {
 .chat-message.mine .message-bubble {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   color: #FFFFFF;
   color: #FFFFFF;
 }
 }
 
 
@@ -644,7 +644,7 @@ export default {
 
 
 .message-input ::v-deep .el-button {
 .message-input ::v-deep .el-button {
   border-radius: 0 20px 20px 0;
   border-radius: 0 20px 20px 0;
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border: none;
   border: none;
   color: #FFFFFF;
   color: #FFFFFF;
 }
 }

+ 12 - 12
cfc-web/src/views/teacher/TeacherOrders.vue

@@ -16,7 +16,7 @@
     <!-- 佣金概览卡片 -->
     <!-- 佣金概览卡片 -->
     <el-row :gutter="24" class="stats-row">
     <el-row :gutter="24" class="stats-row">
       <el-col :span="6">
       <el-col :span="6">
-        <div class="stat-card gradient-blue">
+        <div class="stat-card accent-blue">
           <div class="stat-icon-bg">
           <div class="stat-icon-bg">
             <i class="el-icon-document"></i>
             <i class="el-icon-document"></i>
           </div>
           </div>
@@ -27,7 +27,7 @@
         </div>
         </div>
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
-        <div class="stat-card gradient-green">
+        <div class="stat-card accent-green">
           <div class="stat-icon-bg">
           <div class="stat-icon-bg">
             <i class="el-icon-circle-check"></i>
             <i class="el-icon-circle-check"></i>
           </div>
           </div>
@@ -38,7 +38,7 @@
         </div>
         </div>
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
-        <div class="stat-card gradient-orange">
+        <div class="stat-card accent-orange">
           <div class="stat-icon-bg">
           <div class="stat-icon-bg">
             <i class="el-icon-time"></i>
             <i class="el-icon-time"></i>
           </div>
           </div>
@@ -49,7 +49,7 @@
         </div>
         </div>
       </el-col>
       </el-col>
       <el-col :span="6">
       <el-col :span="6">
-        <div class="stat-card gradient-purple">
+        <div class="stat-card accent-purple">
           <div class="stat-icon-bg">
           <div class="stat-icon-bg">
             <i class="el-icon-wallet"></i>
             <i class="el-icon-wallet"></i>
           </div>
           </div>
@@ -421,20 +421,20 @@ export default {
   overflow: hidden;
   overflow: hidden;
 }
 }
 
 
-.stat-card.gradient-blue {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+.stat-card.accent-blue {
+  background: #1677FF;
 }
 }
 
 
-.stat-card.gradient-green {
-  background: linear-gradient(135deg, #10B981 0%, #34D399 100%);
+.stat-card.accent-green {
+  background: #52C41A;
 }
 }
 
 
-.stat-card.gradient-orange {
-  background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);
+.stat-card.accent-orange {
+  background: #FAAD14;
 }
 }
 
 
-.stat-card.gradient-purple {
-  background: linear-gradient(135deg, #1677FF 0%, #4096FF 100%);
+.stat-card.accent-purple {
+  background: #1677FF;
 }
 }
 
 
 .stat-icon-bg {
 .stat-icon-bg {

+ 7 - 7
cfc-web/src/views/teacher/TeacherPackages.vue

@@ -419,14 +419,14 @@ export default {
 }
 }
 
 
 .primary-btn {
 .primary-btn {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border: none;
   border: none;
   padding: 12px 24px;
   padding: 12px 24px;
   border-radius: 10px;
   border-radius: 10px;
 }
 }
 
 
 .primary-btn:hover {
 .primary-btn:hover {
-  background: linear-gradient(135deg, #2563EB 0%, #3B82F6 100%);
+  background: #0958D9;
 }
 }
 
 
 /* 统计卡片 */
 /* 统计卡片 */
@@ -456,19 +456,19 @@ export default {
 }
 }
 
 
 .stat-icon.blue {
 .stat-icon.blue {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-icon.green {
 .stat-icon.green {
-  background: linear-gradient(135deg, #10B981 0%, #34D399 100%);
+  background: #52C41A;
 }
 }
 
 
 .stat-icon.orange {
 .stat-icon.orange {
-  background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);
+  background: #FAAD14;
 }
 }
 
 
 .stat-icon.purple {
 .stat-icon.purple {
-  background: linear-gradient(135deg, #1677FF 0%, #4096FF 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-value {
 .stat-value {
@@ -498,7 +498,7 @@ export default {
 .package-icon {
 .package-icon {
   width: 40px;
   width: 40px;
   height: 40px;
   height: 40px;
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border-radius: 10px;
   border-radius: 10px;
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;

+ 14 - 14
cfc-web/src/views/teacher/TeacherTeam.vue

@@ -91,7 +91,7 @@
           </template>
           </template>
           <template slot-scope="scope">
           <template slot-scope="scope">
             <div class="member-cell">
             <div class="member-cell">
-              <div class="member-avatar" :style="{ background: getAvatarGradient(scope.row.level) }">
+              <div class="member-avatar" :style="{ background: getAvatarColor(scope.row.level) }">
                 <i class="el-icon-user"></i>
                 <i class="el-icon-user"></i>
               </div>
               </div>
               <div class="member-detail">
               <div class="member-detail">
@@ -343,13 +343,13 @@ export default {
       }
       }
       return map[level] || ''
       return map[level] || ''
     },
     },
-    getAvatarGradient(level) {
-      const gradients = {
-        '初级': 'linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%)',
-        '中级': 'linear-gradient(135deg, #10B981 0%, #34D399 100%)',
-        '高级': 'linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%)'
+    getAvatarColor(level) {
+      const colors = {
+        '初级': '#1677FF',
+        '中级': '#52C41A',
+        '高级': '#FAAD14'
       }
       }
-      return gradients[level] || gradients['初级']
+      return colors[level] || colors['初级']
     }
     }
   }
   }
 }
 }
@@ -383,14 +383,14 @@ export default {
 }
 }
 
 
 .primary-btn {
 .primary-btn {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
   border: none;
   border: none;
   padding: 12px 24px;
   padding: 12px 24px;
   border-radius: 10px;
   border-radius: 10px;
 }
 }
 
 
 .primary-btn:hover {
 .primary-btn:hover {
-  background: linear-gradient(135deg, #2563EB 0%, #3B82F6 100%);
+  background: #0958D9;
 }
 }
 
 
 /* 统计卡片 */
 /* 统计卡片 */
@@ -420,19 +420,19 @@ export default {
 }
 }
 
 
 .stat-icon.blue {
 .stat-icon.blue {
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-icon.green {
 .stat-icon.green {
-  background: linear-gradient(135deg, #10B981 0%, #34D399 100%);
+  background: #52C41A;
 }
 }
 
 
 .stat-icon.orange {
 .stat-icon.orange {
-  background: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);
+  background: #FAAD14;
 }
 }
 
 
 .stat-icon.purple {
 .stat-icon.purple {
-  background: linear-gradient(135deg, #1677FF 0%, #4096FF 100%);
+  background: #1677FF;
 }
 }
 
 
 .stat-value {
 .stat-value {
@@ -453,7 +453,7 @@ export default {
   margin-bottom: 24px;
   margin-bottom: 24px;
   border: none;
   border: none;
   box-shadow: 0 2px 12px rgba(59, 130, 246, 0.06);
   box-shadow: 0 2px 12px rgba(59, 130, 246, 0.06);
-  background: linear-gradient(135deg, #3B82F6 0%, #60A5FA 100%);
+  background: #1677FF;
 }
 }
 
 
 .invite-code-content {
 .invite-code-content {