Эх сурвалжийг харах

style(admin): C-16 TeacherDashboard/TeacherMessages/ProductPicker/HealthEnergyConfig/knowledge-index/PurchaseManagement/Recipes/ActivityAudit/WithdrawAudit/ActivityReview/ArticleCategory/ArticleEdit/AssessmentOrders/CategoryManage/CommentReview/KnowledgeTag 内联 style 归零

zxyj-web 3 долоо хоног өмнө
parent
commit
f94f4b9985

+ 10 - 5
cfc-web/src/views/TeacherDashboard.vue

@@ -25,31 +25,31 @@
           </div>
           </div>
           <div class="td-quick-actions">
           <div class="td-quick-actions">
             <div class="td-action-item" @click="$router.push('/teacher-families')">
             <div class="td-action-item" @click="$router.push('/teacher-families')">
-              <div class="td-action-icon" style="background: #EBF5FF">
+              <div class="td-action-icon td-action-icon-bg-blue">
                 <i class="el-icon-user td-action-icon-color-primary"></i>
                 <i class="el-icon-user td-action-icon-color-primary"></i>
               </div>
               </div>
               <span>管理家庭</span>
               <span>管理家庭</span>
             </div>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-messages')">
             <div class="td-action-item" @click="$router.push('/teacher-messages')">
-              <div class="td-action-icon" style="background: #ECFDF5">
+              <div class="td-action-icon td-action-icon-bg-green">
                 <i class="el-icon-chat-line-round td-action-icon-color-success"></i>
                 <i class="el-icon-chat-line-round td-action-icon-color-success"></i>
               </div>
               </div>
               <span>消息中心</span>
               <span>消息中心</span>
             </div>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-orders')">
             <div class="td-action-item" @click="$router.push('/teacher-orders')">
-              <div class="td-action-icon" style="background: #FFFBEB">
+              <div class="td-action-icon td-action-icon-bg-amber">
                 <i class="el-icon-document td-action-icon-color-warning"></i>
                 <i class="el-icon-document td-action-icon-color-warning"></i>
               </div>
               </div>
               <span>查看订单</span>
               <span>查看订单</span>
             </div>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-assessment')">
             <div class="td-action-item" @click="$router.push('/teacher-assessment')">
-              <div class="td-action-icon" style="background: #F5F3FF">
+              <div class="td-action-icon td-action-icon-bg-violet">
                 <i class="el-icon-edit-outline td-action-icon-color-primary"></i>
                 <i class="el-icon-edit-outline td-action-icon-color-primary"></i>
               </div>
               </div>
               <span>DAN测评</span>
               <span>DAN测评</span>
             </div>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-health-plan-review')">
             <div class="td-action-item" @click="$router.push('/teacher-health-plan-review')">
-              <div class="td-action-icon" style="background: #FEF3C7">
+              <div class="td-action-icon td-action-icon-bg-gold">
                 <i class="el-icon-document-checked td-action-icon-color-warning-strong"></i>
                 <i class="el-icon-document-checked td-action-icon-color-warning-strong"></i>
               </div>
               </div>
               <span>健康方案审核</span>
               <span>健康方案审核</span>
@@ -326,6 +326,11 @@ export default {
 .td-action-icon-color-success { color: var(--adm-success); }
 .td-action-icon-color-success { color: var(--adm-success); }
 .td-action-icon-color-warning { color: var(--adm-warning); }
 .td-action-icon-color-warning { color: var(--adm-warning); }
 .td-action-icon-color-warning-strong { color: #D97706; }
 .td-action-icon-color-warning-strong { color: #D97706; }
+.td-action-icon-bg-blue { background: #EBF5FF; }
+.td-action-icon-bg-green { background: #ECFDF5; }
+.td-action-icon-bg-amber { background: #FFFBEB; }
+.td-action-icon-bg-violet { background: #F5F3FF; }
+.td-action-icon-bg-gold { background: #FEF3C7; }
 .td-stat-primary { color: var(--adm-primary); }
 .td-stat-primary { color: var(--adm-primary); }
 .td-stat-success { color: var(--adm-success); }
 .td-stat-success { color: var(--adm-success); }
 .td-stat-warning { color: var(--adm-warning); }
 .td-stat-warning { color: var(--adm-warning); }

+ 12 - 5
cfc-web/src/views/admin/ActivityReview.vue

@@ -3,15 +3,15 @@
     <el-card>
     <el-card>
       <PageHeader  title="活动审核">
       <PageHeader  title="活动审核">
         
         
-        <div class="admin-page-actions" style="gap:12px;">
-          <el-input v-model="filter.keyword" placeholder="搜索活动..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" style="width:200px;margin-right:8px;" />
-          <el-select v-model="filter.status" placeholder="活动状态" clearable @change="handleSearch" style="width:130px;">
+        <div class="admin-page-actions actions-gap">
+          <el-input v-model="filter.keyword" placeholder="搜索活动..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" class="filter-input-200mr8" />
+          <el-select v-model="filter.status" placeholder="活动状态" clearable @change="handleSearch" class="filter-select-130">
             <el-option label="全部状态" value="" />
             <el-option label="全部状态" value="" />
             <el-option label="待审核" value="draft" />
             <el-option label="待审核" value="draft" />
             <el-option label="已发布" value="published" />
             <el-option label="已发布" value="published" />
             <el-option label="已结束" value="ended" />
             <el-option label="已结束" value="ended" />
           </el-select>
           </el-select>
-          <el-select v-model="filter.dimensionCode" placeholder="所属维度" clearable @change="handleSearch" style="width:120px;">
+          <el-select v-model="filter.dimensionCode" placeholder="所属维度" clearable @change="handleSearch" class="filter-select-120">
             <el-option label="全部维度" value="" />
             <el-option label="全部维度" value="" />
             <el-option label="身" value="body" />
             <el-option label="身" value="body" />
             <el-option label="心" value="mind" />
             <el-option label="心" value="mind" />
@@ -25,7 +25,7 @@
       
       
 </PageHeader>
 </PageHeader>
                 <div class="adm-table-wrap">
                 <div class="adm-table-wrap">
-<el-table :data="pendingActivities" v-loading="loading" border stripe style="min-width:900px;" height="100%">
+<el-table :data="pendingActivities" v-loading="loading" border stripe class="wide-table" height="100%">
       <el-table-column prop="id" label="ID" width="80">
       <el-table-column prop="id" label="ID" width="80">
         <template slot="header">
         <template slot="header">
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
@@ -200,4 +200,11 @@ export default {
 .no-op {
 .no-op {
   color: #ccc;
   color: #ccc;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.actions-gap { gap: 12px; }
+.filter-input-200mr8 { width: 200px; margin-right: 8px; }
+.filter-select-130 { width: 130px; }
+.filter-select-120 { width: 120px; }
+.wide-table { min-width: 900px; }
 </style>
 </style>

+ 12 - 5
cfc-web/src/views/admin/ArticleCategory.vue

@@ -18,7 +18,7 @@
         </el-table-column>
         </el-table-column>
         <el-table-column label="图标" width="80">
         <el-table-column label="图标" width="80">
           <template slot-scope="{ row }">
           <template slot-scope="{ row }">
-            <span style="font-size: 22px">{{ row.icon || '📄' }}</span>
+            <span class="icon-cell">{{ row.icon || '📄' }}</span>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
         <el-table-column prop="name" label="名称" min-width="140">
         <el-table-column prop="name" label="名称" min-width="140">
@@ -29,7 +29,7 @@
         <el-table-column label="颜色" width="100">
         <el-table-column label="颜色" width="100">
           <template slot-scope="{ row }">
           <template slot-scope="{ row }">
             <span v-if="row.color" :style="{ display: 'inline-block', width: '20px', height: '20px', backgroundColor: row.color, borderRadius: '4px', verticalAlign: 'middle', border: '1px solid var(--adm-border-base)' }"></span>
             <span v-if="row.color" :style="{ display: 'inline-block', width: '20px', height: '20px', backgroundColor: row.color, borderRadius: '4px', verticalAlign: 'middle', border: '1px solid var(--adm-border-base)' }"></span>
-            <span style="margin-left: 6px; color: var(--adm-text-45);">{{ row.color || '-' }}</span>
+            <span class="color-txt">{{ row.color || '-' }}</span>
           </template>
           </template>
         </el-table-column>
         </el-table-column>
         <el-table-column prop="sortOrder" label="排序" width="70">
         <el-table-column prop="sortOrder" label="排序" width="70">
@@ -82,9 +82,9 @@
     </el-dialog>
     </el-dialog>
 
 
     <el-dialog title="操作成功" :visible.sync="successDialogVisible" width="400px" :close-on-click-modal="false">
     <el-dialog title="操作成功" :visible.sync="successDialogVisible" width="400px" :close-on-click-modal="false">
-      <div style="text-align:center;padding:10px 0">
-        <i class="el-icon-success" style="color:var(--adm-success);font-size:32px"></i>
-        <p style="margin:12px 0 0;font-size:16px;color:var(--adm-text-88)">保存成功</p>
+      <div class="success-body">
+        <i class="el-icon-success success-icon"></i>
+        <p class="success-text">保存成功</p>
       </div>
       </div>
       <div slot="footer">
       <div slot="footer">
         <el-button type="primary" @click="handleContinue">继续添加</el-button>
         <el-button type="primary" @click="handleContinue">继续添加</el-button>
@@ -247,4 +247,11 @@ export default {
 .article-category {
 .article-category {
   padding: 20px;
   padding: 20px;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.icon-cell { font-size: 22px; }
+.color-txt { margin-left: 6px; color: var(--adm-text-45); }
+.success-body { text-align: center; padding: 10px 0; }
+.success-icon { color: var(--adm-success); font-size: 32px; }
+.success-text { margin: 12px 0 0; font-size: 16px; color: var(--adm-text-88); }
 </style>
 </style>

+ 12 - 5
cfc-web/src/views/admin/ArticleEdit.vue

@@ -28,7 +28,7 @@
         :description="statusDescription"
         :description="statusDescription"
         show-icon
         show-icon
         :closable="false"
         :closable="false"
-        style="margin-bottom: 16px;"
+        class="alert-mb16"
       />
       />
 
 
       <div class="article-edit-form-wrap">
       <div class="article-edit-form-wrap">
@@ -54,7 +54,7 @@
         </el-form-item>
         </el-form-item>
 
 
         <el-form-item label="难度等级">
         <el-form-item label="难度等级">
-          <el-rate v-model="form.difficultyLevel" :max="5" :disabled="readonly" show-text :texts="['入门', '简单', '中等', '较难', '深入']" style="margin-top: 6px;" />
+          <el-rate v-model="form.difficultyLevel" :max="5" :disabled="readonly" show-text :texts="['入门', '简单', '中等', '较难', '深入']" class="rate-mt6" />
         </el-form-item>
         </el-form-item>
 
 
         <el-form-item label="摘要">
         <el-form-item label="摘要">
@@ -80,7 +80,7 @@
               <img v-if="form.coverImage" :src="form.coverImage" class="cover-preview" />
               <img v-if="form.coverImage" :src="form.coverImage" class="cover-preview" />
               <el-button v-else type="primary" plain>+ 上传封面</el-button>
               <el-button v-else type="primary" plain>+ 上传封面</el-button>
             </el-upload>
             </el-upload>
-            <el-button v-if="form.coverImage" size="mini" type="text" style="margin-left: 10px;" @click="form.coverImage = ''">清除</el-button>
+            <el-button v-if="form.coverImage" size="mini" type="text" class="btn-ml10" @click="form.coverImage = ''">清除</el-button>
           </template>
           </template>
           <img v-else-if="form.coverImage" :src="form.coverImage" class="cover-preview" />
           <img v-else-if="form.coverImage" :src="form.coverImage" class="cover-preview" />
           <span v-else class="text-muted">无封面图</span>
           <span v-else class="text-muted">无封面图</span>
@@ -89,7 +89,7 @@
         <el-form-item label="内容">
         <el-form-item label="内容">
           <div class="rich-editor" :class="{ 'is-disabled': readonly }">
           <div class="rich-editor" :class="{ 'is-disabled': readonly }">
             <Toolbar
             <Toolbar
-              style="border-bottom: 1px solid #ccc"
+              class="toolbar-border"
               :editor="editorInstance"
               :editor="editorInstance"
               :defaultConfig="toolbarConfig"
               :defaultConfig="toolbarConfig"
               :mode="editorMode"
               :mode="editorMode"
@@ -100,7 +100,7 @@
               v-model="form.content"
               v-model="form.content"
               @onCreated="handleEditorCreated"
               @onCreated="handleEditorCreated"
               :disabled="readonly"
               :disabled="readonly"
-              style="height: 400px; overflow-y: hidden;"
+              class="editor-body"
             />
             />
           </div>
           </div>
         </el-form-item>
         </el-form-item>
@@ -1017,4 +1017,11 @@ onError: (file, err, res) => {
   padding-right: 8px;
   padding-right: 8px;
   margin-right: -8px;
   margin-right: -8px;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.alert-mb16 { margin-bottom: 16px; }
+.rate-mt6 { margin-top: 6px; }
+.btn-ml10 { margin-left: 10px; }
+.toolbar-border { border-bottom: 1px solid #ccc; }
+.editor-body { height: 400px; overflow-y: hidden; }
 </style>
 </style>

+ 12 - 5
cfc-web/src/views/admin/AssessmentOrders.vue

@@ -9,11 +9,11 @@
             placeholder="搜索用户/规划师..."
             placeholder="搜索用户/规划师..."
             prefix-icon="el-icon-search"
             prefix-icon="el-icon-search"
             clearable
             clearable
-            style="width: 200px; margin-right: 10px;"
+            class="filter-input-200mr10"
             @keyup.enter.native="handleSearch"
             @keyup.enter.native="handleSearch"
             @clear="handleSearch"
             @clear="handleSearch"
           />
           />
-          <el-select v-model="statusFilter" placeholder="预约状态" clearable @change="handleSearch" style="width: 140px; margin-right: 10px;">
+          <el-select v-model="statusFilter" placeholder="预约状态" clearable @change="handleSearch" class="filter-select-140mr10">
             <el-option label="全部状态" value="" />
             <el-option label="全部状态" value="" />
             <el-option label="待确认" :value="0" />
             <el-option label="待确认" :value="0" />
             <el-option label="已确认" :value="1" />
             <el-option label="已确认" :value="1" />
@@ -92,14 +92,14 @@
     <!-- 修改规划师 Dialog -->
     <!-- 修改规划师 Dialog -->
     <el-dialog title="修改规划师" :visible.sync="changeGuideDialogVisible" width="500px">
     <el-dialog title="修改规划师" :visible.sync="changeGuideDialogVisible" width="500px">
       <div v-if="currentOrder" v-loading="guidesLoading">
       <div v-if="currentOrder" v-loading="guidesLoading">
-        <el-descriptions :column="1" border size="small" style="margin-bottom: 20px;">
+        <el-descriptions :column="1" border size="small" class="descriptions-mb20">
           <el-descriptions-item label="用户">{{ currentOrder.userName }}</el-descriptions-item>
           <el-descriptions-item label="用户">{{ currentOrder.userName }}</el-descriptions-item>
           <el-descriptions-item label="孩子">{{ currentOrder.childName }}</el-descriptions-item>
           <el-descriptions-item label="孩子">{{ currentOrder.childName }}</el-descriptions-item>
           <el-descriptions-item label="测评方案">{{ currentOrder.packageName || '-' }}</el-descriptions-item>
           <el-descriptions-item label="测评方案">{{ currentOrder.packageName || '-' }}</el-descriptions-item>
           <el-descriptions-item label="预约日期">{{ currentOrder.appointmentDate || '-' }}</el-descriptions-item>
           <el-descriptions-item label="预约日期">{{ currentOrder.appointmentDate || '-' }}</el-descriptions-item>
           <el-descriptions-item label="当前规划师">
           <el-descriptions-item label="当前规划师">
             <span v-if="currentOrder.guideName">{{ currentOrder.guideName }}</span>
             <span v-if="currentOrder.guideName">{{ currentOrder.guideName }}</span>
-            <span v-else style="color: var(--adm-text-45);">未分配</span>
+            <span v-else class="text-muted">未分配</span>
           </el-descriptions-item>
           </el-descriptions-item>
         </el-descriptions>
         </el-descriptions>
 
 
@@ -108,7 +108,7 @@
             <el-select
             <el-select
               v-model="selectedGuideId"
               v-model="selectedGuideId"
               placeholder="请选择规划师"
               placeholder="请选择规划师"
-              style="width: 100%;"
+              class="select-full"
               filterable
               filterable
             >
             >
               <el-option
               <el-option
@@ -256,4 +256,11 @@ export default {
   margin-top: 20px;
   margin-top: 20px;
   text-align: right;
   text-align: right;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200mr10 { width: 200px; margin-right: 10px; }
+.filter-select-140mr10 { width: 140px; margin-right: 10px; }
+.descriptions-mb20 { margin-bottom: 20px; }
+.text-muted { color: var(--adm-text-45); }
+.select-full { width: 100%; }
 </style>
 </style>

+ 11 - 5
cfc-web/src/views/admin/CategoryManage.vue

@@ -2,7 +2,7 @@
   <div class="category-manage admin-page">
   <div class="category-manage admin-page">
     <el-card>
     <el-card>
       <PageHeader slot="header" title="商品分类管理">
       <PageHeader slot="header" title="商品分类管理">
-        <el-input v-model="keyword" placeholder="搜索分类名称..." prefix-icon="el-icon-search" size="small" clearable style="width: 200px;" />
+        <el-input v-model="keyword" placeholder="搜索分类名称..." prefix-icon="el-icon-search" size="small" clearable class="filter-input-200" />
         <el-button type="primary" size="mini" icon="el-icon-plus" @click="handleCreate">新增分类</el-button>
         <el-button type="primary" size="mini" icon="el-icon-plus" @click="handleCreate">新增分类</el-button>
       </PageHeader>
       </PageHeader>
 
 
@@ -40,7 +40,7 @@
             </el-form-item>
             </el-form-item>
 
 
             <el-form-item label="上级分类">
             <el-form-item label="上级分类">
-              <el-select v-model="form.parentId" placeholder="顶级分类(无上级)" clearable style="width: 100%;">
+              <el-select v-model="form.parentId" placeholder="顶级分类(无上级)" clearable class="select-full">
                 <el-option label="顶级分类" :value="0" />
                 <el-option label="顶级分类" :value="0" />
                 <el-option
                 <el-option
                   v-for="cat in flatCategories"
                   v-for="cat in flatCategories"
@@ -52,7 +52,7 @@
             </el-form-item>
             </el-form-item>
 
 
             <el-form-item label="排序">
             <el-form-item label="排序">
-              <el-input-number v-model="form.sort" :min="0" :max="9999" style="width: 100%;" />
+              <el-input-number v-model="form.sort" :min="0" :max="9999" class="input-number-full" />
             </el-form-item>
             </el-form-item>
 
 
             <el-form-item label="关联维度">
             <el-form-item label="关联维度">
@@ -78,7 +78,7 @@
             </el-form-item>
             </el-form-item>
 
 
             <el-form-item label="最低可见级别">
             <el-form-item label="最低可见级别">
-              <el-select v-model="form.minVisibleLevel" placeholder="所有用户(含未登录)" clearable style="width: 100%;">
+              <el-select v-model="form.minVisibleLevel" placeholder="所有用户(含未登录)" clearable class="select-full">
                 <el-option
                 <el-option
                   v-for="opt in visibleLevelOptions"
                   v-for="opt in visibleLevelOptions"
                   :key="opt.value"
                   :key="opt.value"
@@ -86,7 +86,7 @@
                   :value="opt.value"
                   :value="opt.value"
                 />
                 />
               </el-select>
               </el-select>
-              <div style="font-size: 12px; color: var(--adm-text-45); line-height: 1.5; margin-top: 4px;">所有用户(含未登录)=游客及全部会员可见;选择级别后仅该级别及更高级别会员可见</div>
+              <div class="form-tip">所有用户(含未登录)=游客及全部会员可见;选择级别后仅该级别及更高级别会员可见</div>
             </el-form-item>
             </el-form-item>
 
 
             <el-form-item>
             <el-form-item>
@@ -338,4 +338,10 @@ export default {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.select-full { width: 100%; }
+.input-number-full { width: 100%; }
+.form-tip { font-size: 12px; color: var(--adm-text-45); line-height: 1.5; margin-top: 4px; }
 </style>
 </style>

+ 12 - 5
cfc-web/src/views/admin/CommentReview.vue

@@ -2,13 +2,13 @@
   <div class="comment-review admin-page">
   <div class="comment-review admin-page">
     <PageHeader title="评论审核">
     <PageHeader title="评论审核">
       <div class="filters">
       <div class="filters">
-        <el-select v-model="listQuery.status" @change="loadList" placeholder="审核状态" style="width:140px" clearable>
+        <el-select v-model="listQuery.status" @change="loadList" placeholder="审核状态" class="filter-select-140" clearable>
           <el-option label="全部" value="" />
           <el-option label="全部" value="" />
           <el-option label="待审核" value="pending" />
           <el-option label="待审核" value="pending" />
           <el-option label="已通过" value="approved" />
           <el-option label="已通过" value="approved" />
           <el-option label="已驳回" value="rejected" />
           <el-option label="已驳回" value="rejected" />
         </el-select>
         </el-select>
-        <el-input v-model="listQuery.articleId" placeholder="文章ID" style="width:160px" clearable @keyup.enter.native="loadList" />
+        <el-input v-model="listQuery.articleId" placeholder="文章ID" class="filter-input-160" clearable @keyup.enter.native="loadList" />
         <el-button type="primary" @click="loadList">查询</el-button>
         <el-button type="primary" @click="loadList">查询</el-button>
       </div>
       </div>
     </PageHeader>
     </PageHeader>
@@ -26,12 +26,12 @@
       </el-table-column>
       </el-table-column>
       <el-table-column label="文章" min-width="200">
       <el-table-column label="文章" min-width="200">
         <template slot-scope="{ row }">
         <template slot-scope="{ row }">
-          <span style="font-size:13px">{{ row.articleTitle || ('文章#' + row.articleId) }}</span>
+          <span class="article-title">{{ row.articleTitle || ('文章#' + row.articleId) }}</span>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="评论内容" min-width="300">
       <el-table-column label="评论内容" min-width="300">
         <template slot-scope="{ row }">
         <template slot-scope="{ row }">
-          <span v-if="row.parentId" style="color:var(--adm-text-45)">[回复] </span>{{ row.content }}
+          <span v-if="row.parentId" class="reply-tag">[回复] </span>{{ row.content }}
         </template>
         </template>
       </el-table-column>
       </el-table-column>
       <el-table-column label="状态" width="100">
       <el-table-column label="状态" width="100">
@@ -62,7 +62,7 @@
       :page-size="listQuery.size"
       :page-size="listQuery.size"
       layout="total, prev, pager, next"
       layout="total, prev, pager, next"
       :total="total"
       :total="total"
-      style="margin-top:20px;text-align:right"
+      class="pagination-right"
     />
     />
     <el-dialog title="驳回原因" :visible.sync="rejectDialogVisible" width="400px">
     <el-dialog title="驳回原因" :visible.sync="rejectDialogVisible" width="400px">
       <el-input type="textarea" v-model="rejectReason" :rows="3" placeholder="请输入驳回原因" />
       <el-input type="textarea" v-model="rejectReason" :rows="3" placeholder="请输入驳回原因" />
@@ -145,4 +145,11 @@ export default {
 </script>
 </script>
 <style scoped>
 <style scoped>
 .filters { display: flex; gap: 10px; align-items: center; }
 .filters { display: flex; gap: 10px; align-items: center; }
+
+/* == C 批内联清理工具类 == */
+.filter-select-140 { width: 140px; }
+.filter-input-160 { width: 160px; }
+.article-title { font-size: 13px; }
+.reply-tag { color: var(--adm-text-45); }
+.pagination-right { margin-top: 20px; text-align: right; }
 </style>
 </style>

+ 13 - 6
cfc-web/src/views/admin/HealthEnergyConfig.vue

@@ -29,14 +29,14 @@
           :title="'权重总和不等于 100%(当前: ' + weightSum + '%)'"
           :title="'权重总和不等于 100%(当前: ' + weightSum + '%)'"
           type="warning"
           type="warning"
           :closable="false"
           :closable="false"
-          style="margin-bottom: 20px;"
+          class="alert-mb20"
         />
         />
         <el-alert
         <el-alert
           v-else
           v-else
           title="权重总和 = 100%,配置有效"
           title="权重总和 = 100%,配置有效"
           type="success"
           type="success"
           :closable="false"
           :closable="false"
-          style="margin-bottom: 20px;"
+          class="alert-mb20"
         />
         />
 
 
         <SectionTitle title="同步系数配置" />
         <SectionTitle title="同步系数配置" />
@@ -48,9 +48,9 @@
             :step="1"
             :step="1"
             show-input
             show-input
             :format-tooltip="val => (val / 100).toFixed(2)"
             :format-tooltip="val => (val / 100).toFixed(2)"
-            style="max-width: 400px;"
+            class="slider-maxw400"
           />
           />
-          <div style="color: var(--adm-text-45); font-size: 12px; margin-top: 4px;">
+          <div class="config-tip">
             系数决定七维评分转换为身能量的比例(当前: {{ (form.syncFactor / 100).toFixed(2) }})
             系数决定七维评分转换为身能量的比例(当前: {{ (form.syncFactor / 100).toFixed(2) }})
             公式: 身能量 = 加权评分 × 系数
             公式: 身能量 = 加权评分 × 系数
           </div>
           </div>
@@ -61,10 +61,10 @@
           title="计算逻辑"
           title="计算逻辑"
           type="info"
           type="info"
           :closable="false"
           :closable="false"
-          style="margin-bottom: 10px;"
+          class="alert-mb10"
         >
         >
           <template slot>
           <template slot>
-            <ul style="margin: 8px 0 0 0; padding-left: 20px; font-size: 13px; color: var(--adm-text-65); line-height: 1.8;">
+            <ul class="config-ul">
               <li>每次录入七维健康评分后,系统计算加权评分:<code>加权评分 = Σ(各维度评分 × 权重) / 权重总和</code></li>
               <li>每次录入七维健康评分后,系统计算加权评分:<code>加权评分 = Σ(各维度评分 × 权重) / 权重总和</code></li>
               <li>然后转换为身能量值:<code>身能量 = 加权评分 × 同步系数</code></li>
               <li>然后转换为身能量值:<code>身能量 = 加权评分 × 同步系数</code></li>
               <li>权重越高,该维度评分对身能量的影响越大</li>
               <li>权重越高,该维度评分对身能量的影响越大</li>
@@ -212,4 +212,11 @@ export default {
 .health-energy-config .el-col {
 .health-energy-config .el-col {
   margin-bottom: 0;
   margin-bottom: 0;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.alert-mb20 { margin-bottom: 20px; }
+.slider-maxw400 { max-width: 400px; }
+.config-tip { color: var(--adm-text-45); font-size: 12px; margin-top: 4px; }
+.alert-mb10 { margin-bottom: 10px; }
+.config-ul { margin: 8px 0 0 0; padding-left: 20px; font-size: 13px; color: var(--adm-text-65); line-height: 1.8; }
 </style>
 </style>

+ 12 - 5
cfc-web/src/views/admin/KnowledgeTag.vue

@@ -2,7 +2,7 @@
   <div class="knowledge-tag admin-page">
   <div class="knowledge-tag admin-page">
     <el-card>
     <el-card>
       <PageHeader slot="header" title="知识标签">
       <PageHeader slot="header" title="知识标签">
-        <el-input v-model="keyword" placeholder="搜索标签名称..." prefix-icon="el-icon-search" size="small" clearable style="width: 200px;" />
+        <el-input v-model="keyword" placeholder="搜索标签名称..." prefix-icon="el-icon-search" size="small" clearable class="filter-input-200" />
         <el-button type="primary" size="small" @click="handleCreate">+ 新增标签</el-button>
         <el-button type="primary" size="small" @click="handleCreate">+ 新增标签</el-button>
       </PageHeader>
       </PageHeader>
             <div class="adm-table-wrap">
             <div class="adm-table-wrap">
@@ -50,7 +50,7 @@
           <el-input v-model="form.tagName" placeholder="请输入标签名称" />
           <el-input v-model="form.tagName" placeholder="请输入标签名称" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="类型">
         <el-form-item label="类型">
-          <el-select v-model="form.tagType" placeholder="选择类型" style="width: 200px;">
+          <el-select v-model="form.tagType" placeholder="选择类型" class="select-200">
             <el-option label="通用标签" value="general" />
             <el-option label="通用标签" value="general" />
             <el-option label="分类标签" value="category" />
             <el-option label="分类标签" value="category" />
           </el-select>
           </el-select>
@@ -63,9 +63,9 @@
     </el-dialog>
     </el-dialog>
 
 
     <el-dialog title="操作成功" :visible.sync="successDialogVisible" width="400px" :close-on-click-modal="false">
     <el-dialog title="操作成功" :visible.sync="successDialogVisible" width="400px" :close-on-click-modal="false">
-      <div style="text-align:center;padding:10px 0">
-        <i class="el-icon-success" style="color:var(--adm-success);font-size:32px"></i>
-        <p style="margin:12px 0 0;font-size:16px;color:var(--adm-text-88)">保存成功</p>
+      <div class="success-body">
+        <i class="el-icon-success success-icon"></i>
+        <p class="success-text">保存成功</p>
       </div>
       </div>
       <div slot="footer">
       <div slot="footer">
         <el-button type="primary" @click="handleContinue">继续添加</el-button>
         <el-button type="primary" @click="handleContinue">继续添加</el-button>
@@ -198,4 +198,11 @@ export default {
 .knowledge-tag {
 .knowledge-tag {
   padding: 20px;
   padding: 20px;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.select-200 { width: 200px; }
+.success-body { text-align: center; padding: 10px 0; }
+.success-icon { color: var(--adm-success); font-size: 32px; }
+.success-text { margin: 12px 0 0; font-size: 16px; color: var(--adm-text-88); }
 </style>
 </style>

+ 14 - 6
cfc-web/src/views/admin/PurchaseManagement.vue

@@ -8,7 +8,7 @@
 </PageHeader>
 </PageHeader>
 
 
       <!-- 统计卡片 -->
       <!-- 统计卡片 -->
-      <el-row :gutter="16" style="margin-bottom: 16px;">
+      <el-row :gutter="16" class="row-mb16">
         <el-col :span="6">
         <el-col :span="6">
           <StatCard :value="stats.totalOrders" label="总订单数" />
           <StatCard :value="stats.totalOrders" label="总订单数" />
         </el-col>
         </el-col>
@@ -24,16 +24,16 @@
       </el-row>
       </el-row>
 
 
       <!-- 筛选 -->
       <!-- 筛选 -->
-      <el-form :inline="true" size="small" style="margin-bottom: 16px;">
+      <el-form :inline="true" size="small" class="form-mb16">
         <el-form-item label="状态">
         <el-form-item label="状态">
-          <el-select v-model="filter.status" placeholder="全部" clearable style="width: 120px;">
+          <el-select v-model="filter.status" placeholder="全部" clearable class="select-120">
             <el-option label="待支付" value="pending" />
             <el-option label="待支付" value="pending" />
             <el-option label="已支付" value="paid" />
             <el-option label="已支付" value="paid" />
             <el-option label="已取消" value="cancelled" />
             <el-option label="已取消" value="cancelled" />
           </el-select>
           </el-select>
         </el-form-item>
         </el-form-item>
         <el-form-item label="搜索">
         <el-form-item label="搜索">
-          <el-input v-model="filter.keyword" placeholder="用户ID/订单号" clearable style="width: 200px;" @keyup.enter.native="loadList" />
+          <el-input v-model="filter.keyword" placeholder="用户ID/订单号" clearable class="input-200" @keyup.enter.native="loadList" />
         </el-form-item>
         </el-form-item>
         <el-form-item>
         <el-form-item>
           <el-button type="primary" size="small" @click="loadList">查询</el-button>
           <el-button type="primary" size="small" @click="loadList">查询</el-button>
@@ -42,7 +42,7 @@
 
 
       <!-- 列表 -->
       <!-- 列表 -->
             <div class="adm-table-wrap">
             <div class="adm-table-wrap">
-<el-table :data="list" v-loading="loading" border stripe style="width: 100%;" height="100%">
+<el-table :data="list" v-loading="loading" border stripe class="table-full" height="100%">
         <el-table-column prop="orderNo" label="订单号" width="180">
         <el-table-column prop="orderNo" label="订单号" width="180">
           <template slot="header">
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('orderNo', $event)">订单号<span v-if="sortIndex('orderNo') !== null" class="sort-index" :class="sortClass('orderNo') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('orderNo') }}</span>{{ sortIcon('orderNo') }}</span>
             <span class="sort-header" @click.stop="onSortClick('orderNo', $event)">订单号<span v-if="sortIndex('orderNo') !== null" class="sort-index" :class="sortClass('orderNo') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('orderNo') }}</span>{{ sortIcon('orderNo') }}</span>
@@ -108,7 +108,7 @@
 
 
       <!-- 分页 -->
       <!-- 分页 -->
       <el-pagination
       <el-pagination
-        style="margin-top: 16px; text-align: right;"
+        class="pagination-right"
         layout="total, prev, pager, next"
         layout="total, prev, pager, next"
         :total="total"
         :total="total"
         :current-page="page"
         :current-page="page"
@@ -227,4 +227,12 @@ export default {
 
 
 <style scoped>
 <style scoped>
 .admin-page { padding: 16px; }
 .admin-page { padding: 16px; }
+
+/* == C 批内联清理工具类 == */
+.row-mb16 { margin-bottom: 16px; }
+.form-mb16 { margin-bottom: 16px; }
+.select-120 { width: 120px; }
+.input-200 { width: 200px; }
+.table-full { width: 100%; }
+.pagination-right { margin-top: 16px; text-align: right; }
 </style>
 </style>

+ 11 - 6
cfc-web/src/views/admin/Recipes.vue

@@ -80,7 +80,7 @@
           <el-input v-model="form.name" />
           <el-input v-model="form.name" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="餐次">
         <el-form-item label="餐次">
-          <el-select v-model="form.mealType" style="width:100%">
+          <el-select v-model="form.mealType" class="form-full">
             <el-option label="早餐" value="早餐" />
             <el-option label="早餐" value="早餐" />
             <el-option label="午餐" value="午餐" />
             <el-option label="午餐" value="午餐" />
             <el-option label="晚餐" value="晚餐" />
             <el-option label="晚餐" value="晚餐" />
@@ -97,22 +97,22 @@
           <el-input v-model="form.instructions" type="textarea" :rows="4" />
           <el-input v-model="form.instructions" type="textarea" :rows="4" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="热量(kcal)">
         <el-form-item label="热量(kcal)">
-          <el-input-number v-model="form.calories" :min="0" style="width:100%" />
+          <el-input-number v-model="form.calories" :min="0" class="form-full" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="蛋白质(g)">
         <el-form-item label="蛋白质(g)">
-          <el-input-number v-model="form.protein" :min="0" :precision="1" style="width:100%" />
+          <el-input-number v-model="form.protein" :min="0" :precision="1" class="form-full" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="碳水(g)">
         <el-form-item label="碳水(g)">
-          <el-input-number v-model="form.carbs" :min="0" :precision="1" style="width:100%" />
+          <el-input-number v-model="form.carbs" :min="0" :precision="1" class="form-full" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="脂肪(g)">
         <el-form-item label="脂肪(g)">
-          <el-input-number v-model="form.fat" :min="0" :precision="1" style="width:100%" />
+          <el-input-number v-model="form.fat" :min="0" :precision="1" class="form-full" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="图片URL">
         <el-form-item label="图片URL">
           <el-input v-model="form.imageUrl" placeholder="可选" />
           <el-input v-model="form.imageUrl" placeholder="可选" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="状态">
         <el-form-item label="状态">
-          <el-select v-model="form.status" style="width:100%">
+          <el-select v-model="form.status" class="form-full">
             <el-option label="启用" value="active" />
             <el-option label="启用" value="active" />
             <el-option label="停用" value="inactive" />
             <el-option label="停用" value="inactive" />
           </el-select>
           </el-select>
@@ -266,3 +266,8 @@ export default {
   }
   }
 }
 }
 </script>
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.form-full { width: 100%; }
+</style>

+ 16 - 6
cfc-web/src/views/admin/components/ProductPicker.vue

@@ -2,7 +2,7 @@
   <el-dialog :visible.sync="visible" title="选择关联商品" width="600px" @close="handleClose">
   <el-dialog :visible.sync="visible" title="选择关联商品" width="600px" @close="handleClose">
     <el-form :inline="true" size="small">
     <el-form :inline="true" size="small">
       <el-form-item label="搜索">
       <el-form-item label="搜索">
-        <el-input v-model="query.keyword" placeholder="商品名称" clearable @keyup.enter.native="search" style="width:200px;" />
+        <el-input v-model="query.keyword" placeholder="商品名称" clearable @keyup.enter.native="search" class="pp-search-input" />
       </el-form-item>
       </el-form-item>
       <el-form-item>
       <el-form-item>
         <el-button type="primary" @click="search">搜索</el-button>
         <el-button type="primary" @click="search">搜索</el-button>
@@ -17,12 +17,12 @@
       </el-table-column>
       </el-table-column>
       <el-table-column label="商品" min-width="300">
       <el-table-column label="商品" min-width="300">
         <template slot-scope="{ row }">
         <template slot-scope="{ row }">
-          <div style="display:flex;align-items:center;gap:10px;">
-            <img v-if="row.coverImage" :src="row.coverImage" style="width:50px;height:50px;object-fit:cover;border-radius:4px;" />
-            <span v-else style="width:50px;height:50px;background:#f0f0f0;display:inline-block;border-radius:4px;"></span>
+          <div class="pp-product-cell">
+            <img v-if="row.coverImage" :src="row.coverImage" class="pp-product-cover" />
+            <span v-else class="pp-product-placeholder"></span>
             <div>
             <div>
               <div>{{ row.name }}</div>
               <div>{{ row.name }}</div>
-              <div style="font-size:12px;color:#999;">¥{{ row.price ? (row.price/100).toFixed(2) : '0.00' }}</div>
+              <div class="pp-product-price">¥{{ row.price ? (row.price/100).toFixed(2) : '0.00' }}</div>
             </div>
             </div>
           </div>
           </div>
         </template>
         </template>
@@ -36,7 +36,7 @@
       :total="total"
       :total="total"
       layout="prev, pager, next"
       layout="prev, pager, next"
       @current-change="onPageChange"
       @current-change="onPageChange"
-      style="margin-top:10px;text-align:right;"
+      class="pp-pagination-right"
     />
     />
 
 
     <span slot="footer">
     <span slot="footer">
@@ -111,3 +111,13 @@ export default {
   }
   }
 }
 }
 </script>
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.pp-search-input { width: 200px; }
+.pp-product-cell { display: flex; align-items: center; gap: 10px; }
+.pp-product-cover { width: 50px; height: 50px; object-fit: cover; border-radius: 4px; }
+.pp-product-placeholder { width: 50px; height: 50px; background: #f0f0f0; display: inline-block; border-radius: 4px; }
+.pp-product-price { font-size: 12px; color: #999; }
+.pp-pagination-right { margin-top: 10px; text-align: right; }
+</style>

+ 14 - 6
cfc-web/src/views/admin/knowledge/index.vue

@@ -18,17 +18,17 @@
               @node-click="handleDimensionClick"
               @node-click="handleDimensionClick"
             />
             />
           </el-card>
           </el-card>
-          <el-card style="margin-top: 12px">
+          <el-card class="card-mt12">
             <div slot="header">
             <div slot="header">
               <SectionTitle title="标签筛选" />
               <SectionTitle title="标签筛选" />
             </div>
             </div>
-            <div style="padding: 4px 0">
+            <div class="tag-filter-list">
               <StatusTag
               <StatusTag
                 v-for="tag in tags"
                 v-for="tag in tags"
                 :key="tag.id"
                 :key="tag.id"
                 :type="selectedTagId === tag.id ? 'primary' : 'info'"
                 :type="selectedTagId === tag.id ? 'primary' : 'info'"
                 :text="tag.tagName"
                 :text="tag.tagName"
-                style="cursor: pointer; margin: 2px"
+                class="tag-chip"
                 @click="handleTagClick(tag)"
                 @click="handleTagClick(tag)"
               />
               />
             </div>
             </div>
@@ -42,7 +42,7 @@
             <PageHeader slot="header" title="知识库管理">
             <PageHeader slot="header" title="知识库管理">
               
               
               <div class="admin-page-actions">
               <div class="admin-page-actions">
-                <el-select v-model="filterSourceType" placeholder="全部来源" clearable size="mini" style="width:140px" @change="handleSearch">
+                <el-select v-model="filterSourceType" placeholder="全部来源" clearable size="mini" class="filter-select-140" @change="handleSearch">
                   <el-option label="案例报告" value="file" />
                   <el-option label="案例报告" value="file" />
                   <el-option label="菌群文章" value="article" />
                   <el-option label="菌群文章" value="article" />
                 </el-select>
                 </el-select>
@@ -51,7 +51,7 @@
                   <el-option label="启用" value="1" />
                   <el-option label="启用" value="1" />
                   <el-option label="禁用" value="0" />
                   <el-option label="禁用" value="0" />
                 </el-select>
                 </el-select>
-                <el-input v-model="searchKeyword" placeholder="搜索标题/内容" prefix-icon="el-icon-search" style="width: 220px" size="mini" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
+                <el-input v-model="searchKeyword" placeholder="搜索标题/内容" prefix-icon="el-icon-search" class="filter-input-220" size="mini" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
                 <el-button type="primary" size="mini" @click="handleSearch">搜索</el-button>
                 <el-button type="primary" size="mini" @click="handleSearch">搜索</el-button>
                 <el-button size="mini" @click="resetSearch">重置</el-button>
                 <el-button size="mini" @click="resetSearch">重置</el-button>
                 <el-button size="mini" type="primary" @click="handleCreate">+ 新增知识</el-button>
                 <el-button size="mini" type="primary" @click="handleCreate">+ 新增知识</el-button>
@@ -70,7 +70,7 @@
             />
             />
 
 
             <el-pagination
             <el-pagination
-              style="margin-top: 16px; text-align: right"
+              class="pagination-right"
               :current-page="page"
               :current-page="page"
               :page-size="size"
               :page-size="size"
               :total="knowledgeTotal"
               :total="knowledgeTotal"
@@ -332,4 +332,12 @@ export default {
   line-height: 1.7;
   line-height: 1.7;
   margin-top: 8px;
   margin-top: 8px;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.card-mt12 { margin-top: 12px; }
+.tag-filter-list { padding: 4px 0; }
+.tag-chip { cursor: pointer; margin: 2px; }
+.filter-select-140 { width: 140px; }
+.filter-input-220 { width: 220px; }
+.pagination-right { margin-top: 16px; text-align: right; }
 </style>
 </style>

+ 14 - 6
cfc-web/src/views/admin/review/ActivityAudit.vue

@@ -7,11 +7,11 @@
         <el-option label="已通过" value="approved" />
         <el-option label="已通过" value="approved" />
         <el-option label="已拒绝" value="rejected" />
         <el-option label="已拒绝" value="rejected" />
       </el-select>
       </el-select>
-      <el-input v-model="keyword" placeholder="搜索..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" style="width:200px" />
+      <el-input v-model="keyword" placeholder="搜索..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" class="filter-input-200" />
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
     </div>
     </div>
         <div class="adm-table-wrap">
         <div class="adm-table-wrap">
-<el-table :data="list" v-loading="loading" border stripe style="min-width:900px;" height="100%">
+<el-table :data="list" v-loading="loading" border stripe class="wide-table" height="100%">
       <el-table-column prop="id" label="ID" width="60">
       <el-table-column prop="id" label="ID" width="60">
         <template slot="header">
         <template slot="header">
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
@@ -51,23 +51,23 @@
         <el-form-item label="ID">{{ currentRow.id }}</el-form-item>
         <el-form-item label="ID">{{ currentRow.id }}</el-form-item>
         <el-form-item label="活动名称">{{ currentRow.title }}</el-form-item>
         <el-form-item label="活动名称">{{ currentRow.title }}</el-form-item>
         <el-form-item label="活动封面" v-if="currentRow.coverImage || currentRow.cover">
         <el-form-item label="活动封面" v-if="currentRow.coverImage || currentRow.cover">
-          <img :src="currentRow.coverImage || currentRow.cover" style="max-width:220px;border-radius:4px;" />
+          <img :src="currentRow.coverImage || currentRow.cover" class="detail-img" />
         </el-form-item>
         </el-form-item>
         <el-form-item label="开始时间">{{ currentRow.startTime || currentRow.activityStartTime || '-' }}</el-form-item>
         <el-form-item label="开始时间">{{ currentRow.startTime || currentRow.activityStartTime || '-' }}</el-form-item>
         <el-form-item label="结束时间">{{ currentRow.endTime || currentRow.activityEndTime || '-' }}</el-form-item>
         <el-form-item label="结束时间">{{ currentRow.endTime || currentRow.activityEndTime || '-' }}</el-form-item>
         <el-form-item label="活动地点">{{ currentRow.location || currentRow.address || '-' }}</el-form-item>
         <el-form-item label="活动地点">{{ currentRow.location || currentRow.address || '-' }}</el-form-item>
         <el-form-item label="主办方">{{ currentRow.organizer || currentRow.vendorName || '-' }}</el-form-item>
         <el-form-item label="主办方">{{ currentRow.organizer || currentRow.vendorName || '-' }}</el-form-item>
         <el-form-item label="活动内容">
         <el-form-item label="活动内容">
-          <div style="white-space:pre-wrap;">{{ currentRow.description || currentRow.content || '-' }}</div>
+          <div class="pre-wrap-cell">{{ currentRow.description || currentRow.content || '-' }}</div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="活动标签" v-if="currentRow && currentRow.tags">
         <el-form-item label="活动标签" v-if="currentRow && currentRow.tags">
-          <el-tag v-for="tag in tagList(currentRow.tags)" :key="tag" size="small" style="margin-right:6px;">{{ tag }}</el-tag>
+          <el-tag v-for="tag in tagList(currentRow.tags)" :key="tag" size="small" class="tag-mr">{{ tag }}</el-tag>
         </el-form-item>
         </el-form-item>
         <el-form-item label="五维权重" v-if="currentRow && currentRow.auditStatus === 'pending'">
         <el-form-item label="五维权重" v-if="currentRow && currentRow.auditStatus === 'pending'">
           <dimension-weight-picker v-model="auditWeights" :show-presets="true" />
           <dimension-weight-picker v-model="auditWeights" :show-presets="true" />
           <div class="weights-tip">审核通过前请补充五维权重,合计需为 100%</div>
           <div class="weights-tip">审核通过前请补充五维权重,合计需为 100%</div>
         </el-form-item>
         </el-form-item>
-        <el-form-item label="驳回原因" v-if="currentRow.auditReason" style="color:var(--adm-error-text);">
+        <el-form-item label="驳回原因" v-if="currentRow.auditReason" class="text-error">
           {{ currentRow.auditReason }}
           {{ currentRow.auditReason }}
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
@@ -175,4 +175,12 @@ export default {
 .filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; padding: 12px; background: var(--adm-bg-container); border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.08); }
 .filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; padding: 12px; background: var(--adm-bg-container); border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.08); }
 .no-op { color: var(--adm-text-25); }
 .no-op { color: var(--adm-text-25); }
 .weights-tip { font-size: 12px; color: var(--adm-text-45); margin-top: 6px; }
 .weights-tip { font-size: 12px; color: var(--adm-text-45); margin-top: 6px; }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.wide-table { min-width: 900px; }
+.detail-img { max-width: 220px; border-radius: 4px; }
+.pre-wrap-cell { white-space: pre-wrap; }
+.tag-mr { margin-right: 6px; }
+.text-error { color: var(--adm-error-text); }
 </style>
 </style>

+ 14 - 6
cfc-web/src/views/admin/review/WithdrawAudit.vue

@@ -7,11 +7,11 @@
         <el-option label="已通过" value="approved" />
         <el-option label="已通过" value="approved" />
         <el-option label="已拒绝" value="rejected" />
         <el-option label="已拒绝" value="rejected" />
       </el-select>
       </el-select>
-      <el-input v-model="keyword" placeholder="搜索..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" style="width:200px" />
+      <el-input v-model="keyword" placeholder="搜索..." prefix-icon="el-icon-search" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" class="filter-input-200" />
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
     </div>
     </div>
         <div class="adm-table-wrap">
         <div class="adm-table-wrap">
-<el-table :data="list" v-loading="loading" border stripe style="min-width:900px;" height="100%">
+<el-table :data="list" v-loading="loading" border stripe class="wide-table" height="100%">
       <el-table-column prop="id" label="ID" width="60">
       <el-table-column prop="id" label="ID" width="60">
         <template slot="header">
         <template slot="header">
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
           <span class="sort-header" @click.stop="onSortClick('id', $event)">ID<span v-if="sortIndex('id') !== null" class="sort-index" :class="sortClass('id') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('id') }}</span>{{ sortIcon('id') }}</span>
@@ -51,7 +51,7 @@
       :total="total"
       :total="total"
       layout="total, prev, pager, next"
       layout="total, prev, pager, next"
       @current-change="loadData"
       @current-change="loadData"
-      style="margin-top:12px;text-align:right;"
+      class="pagination-right"
     />
     />
 
 
     <audit-detail-drawer
     <audit-detail-drawer
@@ -64,15 +64,15 @@
       <el-form v-if="currentRow" label-width="100px" size="small">
       <el-form v-if="currentRow" label-width="100px" size="small">
         <el-form-item label="申请ID">{{ currentRow.id }}</el-form-item>
         <el-form-item label="申请ID">{{ currentRow.id }}</el-form-item>
         <el-form-item label="用户">{{ currentRow.nickname || currentRow.userName || '-' }}</el-form-item>
         <el-form-item label="用户">{{ currentRow.nickname || currentRow.userName || '-' }}</el-form-item>
-        <el-form-item label="提现金额" style="font-weight:bold;color:var(--adm-error-text);">{{ formatPrice(currentRow.amount) }}</el-form-item>
+        <el-form-item label="提现金额" class="text-amount">{{ formatPrice(currentRow.amount) }}</el-form-item>
         <el-form-item label="账户信息">
         <el-form-item label="账户信息">
-          <div style="white-space:pre-wrap;word-break:break-all;">{{ currentRow.accountInfo || '-' }}</div>
+          <div class="pre-wrap-cell">{{ currentRow.accountInfo || '-' }}</div>
         </el-form-item>
         </el-form-item>
         <el-form-item label="申请时间">{{ currentRow.createdAt || '-' }}</el-form-item>
         <el-form-item label="申请时间">{{ currentRow.createdAt || '-' }}</el-form-item>
         <el-form-item label="审核状态">
         <el-form-item label="审核状态">
           <StatusTag :type="statusType(currentRow.status)" :text="statusLabel(currentRow.status)" />
           <StatusTag :type="statusType(currentRow.status)" :text="statusLabel(currentRow.status)" />
         </el-form-item>
         </el-form-item>
-        <el-form-item label="驳回原因" v-if="currentRow.remark || currentRow.rejectReason" style="color:var(--adm-error-text);">
+        <el-form-item label="驳回原因" v-if="currentRow.remark || currentRow.rejectReason" class="text-error">
           {{ currentRow.remark || currentRow.rejectReason }}
           {{ currentRow.remark || currentRow.rejectReason }}
         </el-form-item>
         </el-form-item>
       </el-form>
       </el-form>
@@ -183,4 +183,12 @@ export default {
 
 
 <style scoped>
 <style scoped>
 .filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; padding: 12px; background: var(--adm-bg-container); border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.08); }
 .filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; padding: 12px; background: var(--adm-bg-container); border-radius: 4px; box-shadow: 0 2px 4px rgba(0,0,0,0.08); }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.wide-table { min-width: 900px; }
+.pagination-right { margin-top: 12px; text-align: right; }
+.text-amount { font-weight: bold; color: var(--adm-error-text); }
+.pre-wrap-cell { white-space: pre-wrap; word-break: break-all; }
+.text-error { color: var(--adm-error-text); }
 </style>
 </style>

+ 13 - 6
cfc-web/src/views/teacher/TeacherMessages.vue

@@ -3,7 +3,7 @@
     <!-- 页面标题区 -->
     <!-- 页面标题区 -->
     <PageHeader title="消息中心" subtitle="与家长的沟通渠道">
     <PageHeader title="消息中心" subtitle="与家长的沟通渠道">
       <div class="header-actions">
       <div class="header-actions">
-        <el-input v-model="keyword" placeholder="搜索消息..." prefix-icon="el-icon-search" style="width:200px; margin-right:12px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
+        <el-input v-model="keyword" placeholder="搜索消息..." prefix-icon="el-icon-search" class="search-input" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <el-button class="mark-read-btn" @click="markAllRead">
         <el-button class="mark-read-btn" @click="markAllRead">
           <i class="el-icon-check"></i> 全部已读
           <i class="el-icon-check"></i> 全部已读
         </el-button>
         </el-button>
@@ -104,11 +104,11 @@
       :close-on-click-modal="false"
       :close-on-click-modal="false"
       v-loading="familyInfoLoading"
       v-loading="familyInfoLoading"
     >
     >
-      <div v-if="familyInfoLoading" style="min-height: 200px;"></div>
+      <div v-if="familyInfoLoading" class="dialog-loading"></div>
       <template v-if="!familyInfoLoading && familyMembers">
       <template v-if="!familyInfoLoading && familyMembers">
         <!-- 家庭成员信息 -->
         <!-- 家庭成员信息 -->
         <SectionTitle title="家庭成员" :plain="true" />
         <SectionTitle title="家庭成员" :plain="true" />
-        <el-row :gutter="20" style="margin-bottom: 16px;">
+        <el-row :gutter="20" class="row-mb16">
           <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">
@@ -134,7 +134,7 @@
         <!-- 任务概览 -->
         <!-- 任务概览 -->
         <template v-if="familyTaskOverview">
         <template v-if="familyTaskOverview">
           <SectionTitle title="任务概览" :plain="true" />
           <SectionTitle title="任务概览" :plain="true" />
-          <el-row :gutter="16" style="margin-bottom: 16px;">
+          <el-row :gutter="16" class="row-mb16">
             <el-col :span="6">
             <el-col :span="6">
               <StatCard label="孩子数量" :value="familyTaskOverview.totalChildren || 0" color="primary" />
               <StatCard label="孩子数量" :value="familyTaskOverview.totalChildren || 0" color="primary" />
             </el-col>
             </el-col>
@@ -154,11 +154,11 @@
             <div class="child-task-section" v-for="child in familyTaskOverview.children" :key="child.memberId">
             <div class="child-task-section" v-for="child in familyTaskOverview.children" :key="child.memberId">
               <div class="child-header">
               <div class="child-header">
                 <strong>{{ child.childName || '孩子' }}</strong>
                 <strong>{{ child.childName || '孩子' }}</strong>
-                <span style="margin-left: 12px; color: var(--adm-text-45); font-size: 12px;">
+                <span class="child-score">
                   积分: {{ child.totalPoints || 0 }} | 连续: {{ child.streakDays || 0 }}天
                   积分: {{ child.totalPoints || 0 }} | 连续: {{ child.streakDays || 0 }}天
                 </span>
                 </span>
               </div>
               </div>
-              <el-row :gutter="12" style="margin: 8px 0;">
+              <el-row :gutter="12" class="row-my8">
                 <el-col :span="6">
                 <el-col :span="6">
                   <el-tag size="mini" type="primary">今日任务: {{ child.todayTaskCount || 0 }}</el-tag>
                   <el-tag size="mini" type="primary">今日任务: {{ child.todayTaskCount || 0 }}</el-tag>
                 </el-col>
                 </el-col>
@@ -660,4 +660,11 @@ export default {
   font-size: 11px;
   font-size: 11px;
   margin-left: 8px;
   margin-left: 8px;
 }
 }
+
+/* == C 批内联清理工具类 == */
+.search-input { width: 200px; margin-right: 12px; }
+.dialog-loading { min-height: 200px; }
+.row-mb16 { margin-bottom: 16px; }
+.row-my8 { margin: 8px 0; }
+.child-score { margin-left: 12px; color: var(--adm-text-45); font-size: 12px; }
 </style>
 </style>