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

style(admin): C-17 全站静态内联 style 清理至零率极限(68→4,仅剩 JS 字符串 HTML 豁免)

zxyj-web 2 недель назад
Родитель
Сommit
74da6601f1
52 измененных файлов с 322 добавлено и 103 удалено
  1. 4 1
      cfc-web/src/components/DimensionSelector/index.vue
  2. 8 2
      cfc-web/src/components/KnowledgeDialog/index.vue
  3. 8 2
      cfc-web/src/components/KnowledgeTable/index.vue
  4. 4 1
      cfc-web/src/components/TagSelector/index.vue
  5. 10 3
      cfc-web/src/views/Children.vue
  6. 4 1
      cfc-web/src/views/Dashboard.vue
  7. 6 2
      cfc-web/src/views/TeacherConsult.vue
  8. 11 5
      cfc-web/src/views/admin/ActivityCheckinManage.vue
  9. 4 1
      cfc-web/src/views/admin/Assessment.vue
  10. 4 1
      cfc-web/src/views/admin/AssessmentAssign.vue
  11. 6 1
      cfc-web/src/views/admin/AssessmentPlanRules.vue
  12. 4 1
      cfc-web/src/views/admin/AssessmentProducts.vue
  13. 6 1
      cfc-web/src/views/admin/ButlerAssignments.vue
  14. 5 2
      cfc-web/src/views/admin/CfValueManage.vue
  15. 5 2
      cfc-web/src/views/admin/CouponGrantLog.vue
  16. 4 1
      cfc-web/src/views/admin/EcomSupplierManage.vue
  17. 6 2
      cfc-web/src/views/admin/EmotionAlertManage.vue
  18. 6 2
      cfc-web/src/views/admin/EnergySandbox.vue
  19. 6 2
      cfc-web/src/views/admin/FamilyEarnings.vue
  20. 4 1
      cfc-web/src/views/admin/FamilyEarningsWithdraw.vue
  21. 5 2
      cfc-web/src/views/admin/GuidePopupStats.vue
  22. 6 2
      cfc-web/src/views/admin/HealthCheckinManage.vue
  23. 6 2
      cfc-web/src/views/admin/HealthReportReassign.vue
  24. 9 3
      cfc-web/src/views/admin/InnatePortraitConfig.vue
  25. 9 3
      cfc-web/src/views/admin/NumSoulDetailConfig.vue
  26. 4 1
      cfc-web/src/views/admin/PointsLog.vue
  27. 6 2
      cfc-web/src/views/admin/PosterTemplateManage.vue
  28. 6 2
      cfc-web/src/views/admin/ReportParseStatus.vue
  29. 4 1
      cfc-web/src/views/admin/ReportUnknownCluster.vue
  30. 8 3
      cfc-web/src/views/admin/SeasonalFoods.vue
  31. 4 1
      cfc-web/src/views/admin/SupplierProductManage.vue
  32. 4 1
      cfc-web/src/views/admin/SysConfig.vue
  33. 8 3
      cfc-web/src/views/admin/VectorKnowledgeBase.vue
  34. 7 3
      cfc-web/src/views/admin/indicators/index.vue
  35. 15 8
      cfc-web/src/views/admin/org/Dashboard.vue
  36. 6 2
      cfc-web/src/views/admin/org/Detail.vue
  37. 6 2
      cfc-web/src/views/admin/review/ActivityRegistrationAudit.vue
  38. 8 3
      cfc-web/src/views/admin/review/HierarchyAudit.vue
  39. 6 2
      cfc-web/src/views/admin/review/KnowledgeAdminAudit.vue
  40. 6 2
      cfc-web/src/views/admin/supply-manage/Detail.vue
  41. 8 3
      cfc-web/src/views/admin/supply-manage/List.vue
  42. 8 3
      cfc-web/src/views/admin/supply-system/List.vue
  43. 4 1
      cfc-web/src/views/admin/unified-knowledge.vue
  44. 8 2
      cfc-web/src/views/nutritionist/HealthIndicators.vue
  45. 5 1
      cfc-web/src/views/nutritionist/HealthReports.vue
  46. 6 2
      cfc-web/src/views/orchestration/ExecutionDetail.vue
  47. 8 3
      cfc-web/src/views/orchestration/OrchestrationFlow.vue
  48. 6 1
      cfc-web/src/views/teacher/FamilyList.vue
  49. 5 1
      cfc-web/src/views/teacher/GrowthPlans.vue
  50. 8 2
      cfc-web/src/views/teacher/GrowthRecords.vue
  51. 4 1
      cfc-web/src/views/teacher/TeacherAssessment.vue
  52. 4 1
      cfc-web/src/views/teacher/TeacherOrders.vue

+ 4 - 1
cfc-web/src/components/DimensionSelector/index.vue

@@ -5,7 +5,7 @@
     :placeholder="placeholder"
     :clearable="clearable"
     :disabled="disabled"
-    style="width: 100%"
+    class="sel-full"
     @change="$emit('change', selectedValue)"
   >
     <el-option
@@ -58,4 +58,7 @@ export default {
   font-size: 12px;
   margin-left: 6px;
 }
+
+/* == C 批内联清理工具类 == */
+.sel-full { width: 100%; }
 </style>

+ 8 - 2
cfc-web/src/components/KnowledgeDialog/index.vue

@@ -42,7 +42,7 @@
             :on-remove="handleFileRemove"
           >
             <el-button size="small" type="primary">选择文件</el-button>
-            <div slot="tip" style="color:#999;font-size:12px;margin-top:4px">支持 .txt .pdf .doc .docx .md 文件</div>
+            <div slot="tip" class="upload-tip">支持 .txt .pdf .doc .docx .md 文件</div>
           </el-upload>
         </el-form-item>
         <el-form-item v-if="form.fileName" label="已选文件">
@@ -55,7 +55,7 @@
 
       <template v-else-if="form.sourceType === 'url'">
         <el-form-item label="网址">
-          <el-input v-model="form.sourceUrl" placeholder="请输入网址,如 https://..." style="margin-bottom:8px">
+          <el-input v-model="form.sourceUrl" placeholder="请输入网址,如 https://..." class="url-input">
             <el-button slot="append" :loading="fetching" @click="handleFetchUrl">获取内容</el-button>
           </el-input>
         </el-form-item>
@@ -257,3 +257,9 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.upload-tip { color: #999; font-size: 12px; margin-top: 4px; }
+.url-input { margin-bottom: 8px; }
+</style>

+ 8 - 2
cfc-web/src/components/KnowledgeTable/index.vue

@@ -4,7 +4,7 @@
     v-loading="loading"
     stripe
     border
-    style="width: 100%"
+    class="table-full"
     @selection-change="$emit('selection-change', $event)"
   >
     <el-table-column type="selection" width="55" />
@@ -35,7 +35,7 @@
         <el-button size="small" type="text" @click="$emit('bind-dimension', scope.row)">维度</el-button>
         <el-button size="small" type="text" @click="$emit('bind-tag', scope.row)">标签</el-button>
         <el-button size="small" type="text" @click="$emit('view-full', scope.row)">查看全文</el-button>
-        <el-button size="small" type="text" style="color: #f56c6c" @click="$emit('delete', scope.row)">删除</el-button>
+        <el-button size="small" type="text" class="btn-danger-text" @click="$emit('delete', scope.row)">删除</el-button>
       </template>
     </el-table-column>
   </el-table>
@@ -56,3 +56,9 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.table-full { width: 100%; }
+.btn-danger-text { color: #f56c6c; }
+</style>

+ 4 - 1
cfc-web/src/components/TagSelector/index.vue

@@ -8,7 +8,7 @@
       default-first-option
       :placeholder="placeholder"
       :clearable="clearable"
-      style="width: 100%"
+      class="sel-full"
       @change="handleChange"
       @remove-tag="handleRemove"
     >
@@ -67,4 +67,7 @@ export default {
   font-size: 12px;
   margin-left: 6px;
 }
+
+/* == C 批内联清理工具类 == */
+.sel-full { width: 100%; }
 </style>

+ 10 - 3
cfc-web/src/views/Children.vue

@@ -6,7 +6,7 @@
       </PageHeader>
 
       <!-- 搜索筛选 -->
-      <el-form :inline="true" :model="searchForm" style="margin-bottom: 20px">
+      <el-form :inline="true" :model="searchForm" class="form-mb20">
         <el-form-item label="昵称">
           <el-input
             v-model="searchForm.nickname"
@@ -31,7 +31,7 @@
 
         <!-- 孩子列表 -->
                 <div class="adm-table-wrap">
-<el-table :data="tableData" border v-loading="loading" style="width: 100%" height="100%">
+<el-table :data="tableData" border v-loading="loading" class="table-full" height="100%">
         <el-table-column prop="id" label="ID" width="80">
           <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>
@@ -100,7 +100,7 @@
 
         <!-- 分页 -->
       <el-pagination
-        style="margin-top: 20px; text-align: right"
+        class="pagination-right-20"
         @size-change="handleSizeChange"
         @current-change="handleCurrentChange"
         :current-page="pagination.current"
@@ -330,4 +330,11 @@ export default {
 }
 </script>
 
+<style scoped>
+/* == C 批内联清理工具类 == */
+.form-mb20 { margin-bottom: 20px; }
+.table-full { width: 100%; }
+.pagination-right-20 { margin-top: 20px; text-align: right; }
+</style>
+
 

+ 4 - 1
cfc-web/src/views/Dashboard.vue

@@ -190,7 +190,7 @@
       <div class="health-label">系统版本</div>
       <div class="health-value">
         {{ version }}
-        <button type="button" style="font-size:12px;border:none;background:none;color:var(--adm-primary);cursor:pointer;padding:0;margin-left:6px" @click="showChangelog()">查看变更日志</button>
+        <button type="button" class="changelog-link" @click="showChangelog()">查看变更日志</button>
       </div>
     </div>
   </div>
@@ -1002,6 +1002,9 @@ initMemberPieChart() {
   padding: 20px 0;
   font-size: 13px;
 }
+
+/* == C 批内联清理工具类 == */
+.changelog-link { font-size: 12px; border: none; background: none; color: var(--adm-primary); cursor: pointer; padding: 0; margin-left: 6px; }
 </style>
 
 <style>

+ 6 - 2
cfc-web/src/views/TeacherConsult.vue

@@ -6,7 +6,7 @@
       </PageHeader>
 
       <!-- 搜索筛选 -->
-      <el-form :inline="true" style="margin-bottom: 15px">
+      <el-form :inline="true" class="form-mb-15">
         <el-form-item label="状态">
           <el-select v-model="searchForm.status" placeholder="全部" clearable @change="loadMessages">
             <el-option label="待回复" value="pending"></el-option>
@@ -63,7 +63,7 @@
       <!-- 分页 -->
       <el-pagination
         v-if="total > 0"
-        style="margin-top: 20px; text-align: right"
+        class="pagination-right-20"
         :current-page="pagination.page"
         :page-size="pagination.size"
         :total="total"
@@ -201,4 +201,8 @@ export default {
   background: var(--adm-bg-header);
   border-radius: 4px;
 }
+
+/* == C 批内联清理工具类 == */
+.form-mb-15 { margin-bottom: 15px; }
+.pagination-right-20 { margin-top: 20px; text-align: right; }
 </style>

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

@@ -2,22 +2,22 @@
   <div class="activity-checkin-manage admin-page">
     <PageHeader title="活动签到审核">
       <div class="filters">
-        <el-select v-model="activityId" placeholder="选择活动" filterable clearable style="width: 220px;" @change="loadCheckinList">
+        <el-select v-model="activityId" placeholder="选择活动" filterable clearable class="filter-select-220" @change="loadCheckinList">
           <el-option v-for="a in activityList" :key="a.id" :label="a.title" :value="a.id" />
         </el-select>
-        <el-select v-model="checkInTypeFilter" placeholder="签到类型" clearable style="width: 130px;" @change="loadCheckinList">
+        <el-select v-model="checkInTypeFilter" placeholder="签到类型" clearable class="filter-select-130" @change="loadCheckinList">
           <el-option label="全部类型" value="" />
           <el-option label="扫码签到" value="qr" />
           <el-option label="手动补录" value="admin" />
           <el-option label="GPS签到" value="gps" />
         </el-select>
-        <el-select v-model="reviewStatusFilter" placeholder="审核状态" clearable style="width: 130px;" @change="loadCheckinList">
+        <el-select v-model="reviewStatusFilter" placeholder="审核状态" clearable class="filter-select-130" @change="loadCheckinList">
           <el-option label="全部状态" value="" />
           <el-option label="待审核" value="pending" />
           <el-option label="已通过" value="approved" />
           <el-option label="已拒绝" value="rejected" />
         </el-select>
-        <el-input v-model="keyword" placeholder="搜索姓名/手机号/用户ID" prefix-icon="el-icon-search" style="width: 220px;" clearable @keyup.enter.native="loadCheckinList" @clear="loadCheckinList" />
+        <el-input v-model="keyword" placeholder="搜索姓名/手机号/用户ID" prefix-icon="el-icon-search" class="filter-input-220" clearable @keyup.enter.native="loadCheckinList" @clear="loadCheckinList" />
         <el-button type="primary" size="mini" icon="el-icon-download" :disabled="!activityId || exporting" @click="handleExport">导出名单</el-button>
         <el-button type="success" size="mini" icon="el-icon-plus" :disabled="!activityId" @click="showAddDialog">手动补录</el-button>
       </div>
@@ -137,7 +137,7 @@
             placeholder="输入姓名/手机号/用户ID搜索"
             :remote-method="searchUsers"
             :loading="searchLoading"
-            style="width: 100%;"
+            class="form-full"
           >
             <el-option
               v-for="u in userOptions"
@@ -486,4 +486,10 @@ export default {
 .text-muted { color: var(--adm-text-45); }
 .readonly-field { color: var(--adm-text-65); }
 .dialog-tip { margin: 0 0 6px 90px; font-size: 12px; color: var(--adm-text-45); }
+
+/* == C 批内联清理工具类 == */
+.filter-select-220 { width: 220px; }
+.filter-select-130 { width: 130px; }
+.filter-input-220 { width: 220px; }
+.form-full { width: 100%; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/Assessment.vue

@@ -20,7 +20,7 @@
     <el-card class="materials-card">
       <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" class="filter-input-200" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <div class="admin-page-actions">
           <el-button type="primary" size="small" @click="showCreateDialog">添加资料</el-button>
         </div>
@@ -212,4 +212,7 @@ export default {
 .materials-card ::v-deep .el-card__body {
   padding: 0;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/AssessmentAssign.vue

@@ -73,7 +73,7 @@
             <el-input :value="currentChildName" disabled />
           </el-form-item>
           <el-form-item label="选择规划师">
-            <el-select v-model="selectedGuideId" placeholder="请选择规划师" style="width:100%" filterable>
+            <el-select v-model="selectedGuideId" placeholder="请选择规划师" class="form-full" filterable>
               <el-option
                 v-for="g in guides"
                 :key="g.id"
@@ -193,4 +193,7 @@ export default {
   margin-top: 20px;
   text-align: right;
 }
+
+/* == C 批内联清理工具类 == */
+.form-full { width: 100%; }
 </style>

+ 6 - 1
cfc-web/src/views/admin/AssessmentPlanRules.vue

@@ -5,7 +5,7 @@
     </PageHeader>
 
         <div class="adm-table-wrap">
-<el-table :data="rules" border stripe style="width: 100%" height="100%">
+<el-table :data="rules" border stripe class="table-full" height="100%">
       <el-table-column prop="dimension" label="维度" width="120" />
       <el-table-column label="分数区间" width="140">
         <template slot-scope="{ row }">{{ row.scoreMin }} - {{ row.scoreMax }}</template>
@@ -113,3 +113,8 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.table-full { width: 100%; }
+</style>

+ 4 - 1
cfc-web/src/views/admin/AssessmentProducts.vue

@@ -38,7 +38,7 @@
           <template slot-scope="{ row }">
             <img v-if="row.coverImage" :src="row.coverImage" class="product-thumb"
                  @click="previewImage(row.coverImage)" />
-            <span v-else style="color:var(--adm-text-45)">-</span>
+            <span v-else class="no-image">-</span>
           </template>
         </el-table-column>
         <el-table-column prop="name" label="商品名称" min-width="160" show-overflow-tooltip />
@@ -209,4 +209,7 @@ export default {
 .header-search { width: 200px; }
 .product-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; cursor: pointer; }
 .pagination-wrap { margin-top: 16px; text-align: right; }
+
+/* == C 批内联清理工具类 == */
+.no-image { color: var(--adm-text-45); }
 </style>

+ 6 - 1
cfc-web/src/views/admin/ButlerAssignments.vue

@@ -46,7 +46,7 @@
       </el-table>
       </div>
       <el-pagination
-        style="margin-top: 16px; text-align: right;"
+        class="pagination-right-16"
         layout="total, prev, pager, next"
         :total="total"
         :page-size="pageSize"
@@ -113,3 +113,8 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.pagination-right-16 { margin-top: 16px; text-align: right; }
+</style>

+ 5 - 2
cfc-web/src/views/admin/CfValueManage.vue

@@ -2,7 +2,7 @@
   <div class="cf-value admin-page">
     <PageHeader title="CF值(平台积分)管理">
       <div class="filters">
-        <el-input v-model="searchUserId" placeholder="用户ID/用户名搜索" style="width: 200px;" clearable @keyup.enter.native="searchBalance" />
+        <el-input v-model="searchUserId" placeholder="用户ID/用户名搜索" class="filter-input-200" clearable @keyup.enter.native="searchBalance" />
         <el-button type="primary" @click="searchBalance">查询余额</el-button>
       </div>
     </PageHeader>
@@ -61,7 +61,7 @@
 
       <el-tab-pane label="流水查询" name="logs">
         <div class="filters">
-          <el-input v-model="logUserId" placeholder="用户ID" style="width: 200px;" clearable @keyup.enter.native="searchLogs" />
+          <el-input v-model="logUserId" placeholder="用户ID" class="filter-input-200" clearable @keyup.enter.native="searchLogs" />
           <el-button type="primary" @click="searchLogs">查询流水</el-button>
         </div>
                 <div class="adm-table-wrap">
@@ -238,4 +238,7 @@ getCfValueBalance({ userId: this.searchUserId }).then(async res => {
 
 <style scoped>
 .cf-value { padding: 20px; }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
 </style>

+ 5 - 2
cfc-web/src/views/admin/CouponGrantLog.vue

@@ -4,8 +4,8 @@
       <PageHeader slot="header" title="发券记录">
         
         <div class="admin-page-actions">
-          <el-input v-model="familyId" placeholder="家庭ID" clearable style="width: 140px" @keyup.enter.native="handleSearch" @clear="handleSearch" />
-          <el-input v-model="couponId" placeholder="优惠券ID" clearable style="width: 140px" @keyup.enter.native="handleSearch" @clear="handleSearch" />
+          <el-input v-model="familyId" placeholder="家庭ID" clearable class="filter-input-140" @keyup.enter.native="handleSearch" @clear="handleSearch" />
+          <el-input v-model="couponId" placeholder="优惠券ID" clearable class="filter-input-140" @keyup.enter.native="handleSearch" @clear="handleSearch" />
           <el-button type="primary" size="small" icon="el-icon-search" @click="handleSearch">查询</el-button>
         </div>
       
@@ -166,4 +166,7 @@ export default {
 
 <style scoped>
 .coupon-grant-log { padding: 20px; }
+
+/* == C 批内联清理工具类 == */
+.filter-input-140 { width: 140px; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/EcomSupplierManage.vue

@@ -2,7 +2,7 @@
   <div class="ecom-supplier-manage admin-page">
     <PageHeader title="电商供应商管理">
       <div class="flex items-center gap-sm">
-        <el-input v-model="keyword" placeholder="搜索供应商名称..." prefix-icon="el-icon-search" clearable style="width: 220px;" @keyup.enter.native="handleSearch" @clear="handleSearch" />
+        <el-input v-model="keyword" placeholder="搜索供应商名称..." prefix-icon="el-icon-search" clearable class="filter-input-220" @keyup.enter.native="handleSearch" @clear="handleSearch" />
         <el-button type="primary" icon="el-icon-plus" @click="handleCreate">新增供应商</el-button>
       </div>
     </PageHeader>
@@ -231,4 +231,7 @@ export default {
 .ecom-supplier-manage {
   padding: 20px;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-220 { width: 220px; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/EmotionAlertManage.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="emotion-alert-manage admin-page">
     <PageHeader 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" class="filter-input-200" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
       <el-radio-group v-model="resolvedFilter" @change="onFilterChange">
         <el-radio-button label="">全部</el-radio-button>
         <el-radio-button label="false">未处理</el-radio-button>
@@ -82,7 +82,7 @@
       :page-size="size"
       :total="total"
       layout="total, prev, pager, next"
-      style="margin-top: 20px; text-align: right;"
+      class="pagination-right-20"
     />
   </div>
 </template>
@@ -197,4 +197,8 @@ export default {
 .resolved-text {
   color: var(--adm-text-45);
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.pagination-right-20 { margin-top: 20px; text-align: right; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/EnergySandbox.vue

@@ -37,11 +37,11 @@
     <el-card class="section-card" v-loading="loading">
       <div slot="header">
         <SectionTitle title="家庭成员数据">
-          <el-input v-model="memberKeyword" placeholder="搜索成员姓名..." prefix-icon="el-icon-search" size="small" clearable style="width: 200px;" />
+          <el-input v-model="memberKeyword" placeholder="搜索成员姓名..." prefix-icon="el-icon-search" size="small" clearable class="filter-input-200" />
         </SectionTitle>
       </div>
             <div class="adm-table-wrap">
-<el-table :data="filteredMembers" border style="width: 100%" height="100%">
+<el-table :data="filteredMembers" border class="table-full" height="100%">
         <el-table-column prop="memberType" label="成员类型" width="100"></el-table-column>
         <el-table-column prop="name" label="姓名" width="120"></el-table-column>
         <el-table-column prop="bodyScore" label="身" width="80" align="center">
@@ -182,4 +182,8 @@ export default {
   min-width: 48px;
   text-align: center;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.table-full { width: 100%; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/FamilyEarnings.vue

@@ -2,7 +2,7 @@
   <div class="family-earnings admin-page">
     <PageHeader title="家庭收益管理">
       <div class="flex items-center gap-sm">
-        <el-input v-model="searchKeyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" style="width:200px" clearable @keyup.enter.native="loadList" @clear="loadList" />
+        <el-input v-model="searchKeyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" class="filter-input-200" clearable @keyup.enter.native="loadList" @clear="loadList" />
         <el-button type="primary" @click="loadList">刷新</el-button>
       </div>
     </PageHeader>
@@ -66,7 +66,7 @@
           <el-descriptions-item label="已分配">{{ fenToYuan(detail.distributedAmount) }}</el-descriptions-item>
         </el-descriptions>
 
-        <h4 style="margin:20px 0 10px">成员贡献</h4>
+        <h4 class="members-title">成员贡献</h4>
         <el-table :data="detail.members || []" border stripe size="small" :max-height="300" v-if="detail && detail.members && detail.members.length > 0">
           <el-table-column label="昵称" prop="nickname" min-width="120" />
           <el-table-column label="已分配" width="120">
@@ -171,4 +171,8 @@ export default {
   font-weight: bold;
   color: var(--adm-success);
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.members-title { margin: 20px 0 10px; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/FamilyEarningsWithdraw.vue

@@ -2,7 +2,7 @@
   <div class="family-earnings-withdraw admin-page">
     <PageHeader title="家庭收益提现审核">
       <div class="flex items-center gap-sm">
-        <el-select v-model="typeFilter" placeholder="类型" @change="loadList" style="width:120px">
+        <el-select v-model="typeFilter" placeholder="类型" @change="loadList" class="filter-select-120">
           <el-option label="全部" value="" />
           <el-option label="提现" value="withdraw" />
           <el-option label="分配" value="distribute" />
@@ -133,4 +133,7 @@ export default {
   font-weight: bold;
   color: var(--adm-success);
 }
+
+/* == C 批内联清理工具类 == */
+.filter-select-120 { width: 120px; }
 </style>

+ 5 - 2
cfc-web/src/views/admin/GuidePopupStats.vue

@@ -2,7 +2,7 @@
   <div class="guide-popup-stats">
     <el-card>
       <PageHeader slot="header" title="引导弹窗数据看板">
-        <el-select v-model="popupId" placeholder="全部弹窗" clearable style="width:220px" @change="load">
+        <el-select v-model="popupId" placeholder="全部弹窗" clearable class="filter-select-220" @change="load">
           <el-option v-for="p in popups" :key="p.id" :label="p.slug" :value="p.id" />
         </el-select>
       </PageHeader>
@@ -12,7 +12,7 @@
         <el-col :span="6"><StatCard label="完成率" :value="stats.completionRate || '0.0%'" /></el-col>
       </el-row>
             <div class="adm-table-wrap">
-<el-table :data="trend" border style="margin-top:16px" height="100%">
+<el-table :data="trend" border class="table-mt-16" height="100%">
         <el-table-column prop="hour" label="时段" width="120" />
         <el-table-column prop="views" label="曝光" />
         <el-table-column prop="clicks" label="点击" />
@@ -47,4 +47,7 @@ export default {
 </script>
 
 <style scoped>
+/* == C 批内联清理工具类 == */
+.filter-select-220 { width: 220px; }
+.table-mt-16 { margin-top: 16px; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/HealthCheckinManage.vue

@@ -9,11 +9,11 @@
             placeholder="搜索孩子名..."
             prefix-icon="el-icon-search"
             clearable
-            style="width: 200px; margin-right: 10px;"
+            class="filter-input-200"
             @keyup.enter.native="loadList"
             @clear="loadList"
           />
-          <el-select v-model="moodFilter" placeholder="心情" clearable @change="loadList" style="width: 120px; margin-right: 10px;">
+          <el-select v-model="moodFilter" placeholder="心情" clearable @change="loadList" class="filter-select-120">
             <el-option label="全部心情" value="" />
             <el-option label="开心" value="happy" />
             <el-option label="平静" value="normal" />
@@ -124,4 +124,8 @@ export default {
   display: flex;
   align-items: center;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; margin-right: 10px; }
+.filter-select-120 { width: 120px; margin-right: 10px; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/HealthReportReassign.vue

@@ -7,7 +7,7 @@
     <!-- 家庭选择 -->
     <el-form :inline="true" class="filter-bar">
       <el-form-item label="选择家庭">
-        <el-select v-model="familyId" placeholder="请选择家庭" filterable clearable style="width: 260px" @change="loadData">
+        <el-select v-model="familyId" placeholder="请选择家庭" filterable clearable class="filter-select-260" @change="loadData">
           <el-option v-for="f in familyList" :key="f.id" :label="f.name" :value="f.id" />
         </el-select>
       </el-form-item>
@@ -57,7 +57,7 @@
           <span>{{ getMemberName(currentReport.subjectId) }}</span>
         </el-form-item>
         <el-form-item label="归属成员">
-          <el-select v-model="newSubjectId" placeholder="选择归属成员(留空表示解除归属)" filterable clearable style="width: 100%">
+          <el-select v-model="newSubjectId" placeholder="选择归属成员(留空表示解除归属)" filterable clearable class="form-full">
             <el-option v-for="m in memberList" :key="m.id" :label="m.nickname || m.realName || m.userId" :value="m.id" />
           </el-select>
         </el-form-item>
@@ -163,4 +163,8 @@ export default {
 .filter-bar {
   margin-bottom: 12px;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-select-260 { width: 260px; }
+.form-full { width: 100%; }
 </style>

+ 9 - 3
cfc-web/src/views/admin/InnatePortraitConfig.vue

@@ -14,7 +14,7 @@
               :min="0" :max="10000" :step="500"
               size="small"
             />
-            <span style="margin-left: 8px; color: #999">
+            <span class="weight-pct">
               {{ (scope.row.weight / 100).toFixed(1) }}%
             </span>
           </template>
@@ -41,7 +41,7 @@
         </el-table-column>
       </el-table>
       </div>
-      <div style="margin-top: 12px; color: #999; font-size: 12px">
+      <div class="config-tip">
         提示:权重按基点配置(2500=25%)。保存后自动清除所有成员先天分缓存并触发重算。启用来源权重之和不足100%时按比例归一化。
       </div>
     </el-card>
@@ -73,4 +73,10 @@ export default {
     }
   }
 }
-</script>
+</script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.weight-pct { margin-left: 8px; color: #999; }
+.config-tip { margin-top: 12px; color: #999; font-size: 12px; }
+</style>

+ 9 - 3
cfc-web/src/views/admin/NumSoulDetailConfig.vue

@@ -2,7 +2,7 @@
   <div class="app-container">
     <el-card shadow="never">
       <PageHeader slot="header" title="数字能量配置">
-        <el-select v-model="filterType" placeholder="筛选类型" clearable size="small" style="width: 160px" @change="load">
+        <el-select v-model="filterType" placeholder="筛选类型" clearable size="small" class="filter-select-160" @change="load">
           <el-option label="生命灵数" value="life_path" />
           <el-option label="天赋数" value="talent" />
           <el-option label="生日数" value="birthday" />
@@ -28,7 +28,7 @@
         <el-table-column label="操作" width="140">
           <template slot-scope="scope">
             <el-button type="text" @click="showEdit(scope.row)">编辑</el-button>
-            <el-button type="text" style="color: var(--adm-error)" @click="remove(scope.row)">删除</el-button>
+            <el-button type="text" class="btn-danger-text" @click="remove(scope.row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -111,4 +111,10 @@ export default {
     }
   }
 }
-</script>
+</script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.filter-select-160 { width: 160px; }
+.btn-danger-text { color: var(--adm-error); }
+</style>

+ 4 - 1
cfc-web/src/views/admin/PointsLog.vue

@@ -59,7 +59,7 @@
             <span v-if="row.expireAt" :style="{ color: row.expired ? 'var(--adm-text-45)' : 'var(--adm-warning-text)' }">
               {{ formatTime(row.expireAt) }}
             </span>
-            <span v-else style="color:var(--adm-text-45)">永久有效</span>
+            <span v-else class="no-image">永久有效</span>
           </template>
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('expireAt', $event)">过期时间<span v-if="sortIndex('expireAt') !== null" class="sort-index" :class="sortClass('expireAt') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('expireAt') }}</span>{{ sortIcon('expireAt') }}</span>
@@ -220,4 +220,7 @@ export default {
 <style scoped>
 .points-log { padding: 20px; }
 .detail-content { padding: 10px 0; }
+
+/* == C 批内联清理工具类 == */
+.no-image { color: var(--adm-text-45); }
 </style>

+ 6 - 2
cfc-web/src/views/admin/PosterTemplateManage.vue

@@ -77,7 +77,7 @@
           <el-input v-model="form.name" maxlength="50" placeholder="如:暖橙渐变(小程序端展示的名称,需唯一)"></el-input>
         </el-form-item>
         <el-form-item label="模板类型" required>
-          <el-select v-model="form.templateKey" placeholder="请选择绘制引擎" style="width: 100%">
+          <el-select v-model="form.templateKey" placeholder="请选择绘制引擎" class="form-full">
             <el-option label="gradient — 渐变背景" value="gradient"></el-option>
             <el-option label="minimal — 深色极简" value="minimal"></el-option>
             <el-option label="card — 白底卡片" value="card"></el-option>
@@ -116,7 +116,7 @@
         </el-form-item>
         <el-form-item label="状态">
           <el-switch v-model="form.status" :active-value="1" :inactive-value="0"></el-switch>
-          <span style="margin-left: 10px; color: var(--adm-text-45)">停用后小程序端不再展示该模板</span>
+          <span class="status-hint">停用后小程序端不再展示该模板</span>
         </el-form-item>
       </el-form>
       <div slot="footer">
@@ -353,4 +353,8 @@ export default {
   font-size: 12px;
   line-height: 1.6;
 }
+
+/* == C 批内联清理工具类 == */
+.form-full { width: 100%; }
+.status-hint { margin-left: 10px; color: var(--adm-text-45); }
 </style>

+ 6 - 2
cfc-web/src/views/admin/ReportParseStatus.vue

@@ -4,7 +4,7 @@
       <PageHeader slot="header" title="解析进度" />
 
       <div class="filter-bar">
-        <el-select v-model="query.parseStatus" placeholder="解析状态" clearable style="width: 140px">
+        <el-select v-model="query.parseStatus" placeholder="解析状态" clearable class="filter-select-140">
           <el-option label="全部" value="" />
           <el-option label="采集中" value="collecting" />
           <el-option label="成功" value="completed" />
@@ -13,7 +13,7 @@
         <el-input
           v-model="query.keyword"
           placeholder="关键词(文件名或用户ID)"
-          style="width: 220px"
+          class="filter-input-220"
           clearable
           @keyup.enter.native="handleSearch"
         />
@@ -153,4 +153,8 @@ export default {
   margin-top: 16px;
   text-align: right;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-select-140 { width: 140px; }
+.filter-input-220 { width: 220px; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/ReportUnknownCluster.vue

@@ -2,7 +2,7 @@
   <div class="report-unknown admin-page">
     <el-card>
       <PageHeader slot="header" title="未知报告审核">
-        <el-select v-model="statusFilter" size="small" style="width: 140px;" @change="fetchClusters">
+        <el-select v-model="statusFilter" size="small" class="filter-select-140" @change="fetchClusters">
           <el-option label="全部" value="" />
           <el-option label="收集" value="collecting" />
           <el-option label="可生成" value="ready" />
@@ -158,4 +158,7 @@ export default {
   white-space: pre-wrap;
   word-break: break-all;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-select-140 { width: 140px; }
 </style>

+ 8 - 3
cfc-web/src/views/admin/SeasonalFoods.vue

@@ -54,15 +54,15 @@
     <el-dialog title="新增应季映射" :visible.sync="dialogVisible" width="400px">
       <el-form label-width="100px">
         <el-form-item label="食材ID">
-          <el-input-number v-model="form.foodId" :min="1" style="width:100%" />
+          <el-input-number v-model="form.foodId" :min="1" class="form-full" />
         </el-form-item>
         <el-form-item label="月份">
-          <el-select v-model="form.month" style="width:100%">
+          <el-select v-model="form.month" class="form-full">
             <el-option v-for="m in 12" :key="m" :label="m + '月'" :value="m" />
           </el-select>
         </el-form-item>
         <el-form-item label="推荐等级">
-          <el-select v-model="form.peak" style="width:100%">
+          <el-select v-model="form.peak" class="form-full">
             <el-option label="1-普通" :value="1" />
             <el-option label="2-推荐" :value="2" />
             <el-option label="3-强烈推荐" :value="3" />
@@ -181,3 +181,8 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.form-full { width: 100%; }
+</style>

+ 4 - 1
cfc-web/src/views/admin/SupplierProductManage.vue

@@ -40,7 +40,7 @@
                 class="product-thumb"
                 @click="previewImage(row.coverImage)"
               />
-              <span v-else style="color:var(--adm-text-45)">-</span>
+              <span v-else class="no-image">-</span>
             </template>
           </el-table-column>
           <el-table-column prop="name" label="商品名称" min-width="150" show-overflow-tooltip>
@@ -255,4 +255,7 @@ export default {
 .header-search {
   width: 180px;
 }
+
+/* == C 批内联清理工具类 == */
+.no-image { color: var(--adm-text-45); }
 </style>

+ 4 - 1
cfc-web/src/views/admin/SysConfig.vue

@@ -60,7 +60,7 @@
           <el-input v-model="form.description" placeholder="配置项描述" />
         </el-form-item>
         <el-form-item label="值类型" prop="valueType">
-          <el-select v-model="form.valueType" style="width: 100%;">
+          <el-select v-model="form.valueType" class="form-full">
             <el-option label="字符串" value="string" />
             <el-option label="数字" value="number" />
             <el-option label="布尔值" value="boolean" />
@@ -203,4 +203,7 @@ export default {
 .sys-config {
   padding: 20px;
 }
+
+/* == C 批内联清理工具类 == */
+.form-full { width: 100%; }
 </style>

+ 8 - 3
cfc-web/src/views/admin/VectorKnowledgeBase.vue

@@ -20,12 +20,12 @@
     <el-card class="kb-toolbar">
       <div class="kb-toolbar-inner">
         <div class="kb-filters">
-          <el-select v-model="filterSource" placeholder="来源筛选" size="small" clearable style="width: 160px" @change="handleSearch">
+          <el-select v-model="filterSource" placeholder="来源筛选" size="small" clearable class="filter-select-160" @change="handleSearch">
             <el-option label="文章 (article)" value="article" />
             <el-option label="菌群 (microbiome)" value="microbiome" />
             <el-option label="知识库 (dan_knowledge)" value="dan_knowledge" />
           </el-select>
-          <el-input v-model="searchKeyword" placeholder="搜索标题/内容" prefix-icon="el-icon-search" size="small" style="width: 240px" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
+          <el-input v-model="searchKeyword" placeholder="搜索标题/内容" prefix-icon="el-icon-search" size="small" class="filter-input-240" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
           <el-button type="primary" size="small" @click="handleSearch">搜索</el-button>
           <el-button size="small" @click="resetSearch">重置</el-button>
         </div>
@@ -65,7 +65,7 @@
       </div>
 
       <el-pagination
-        style="margin-top: 16px; text-align: right"
+        class="pagination-right-16"
         :current-page="page"
         :page-size="size"
         :total="total"
@@ -289,4 +289,9 @@ export default {
 .danger-text {
   color: var(--adm-error);
 }
+
+/* == C 批内联清理工具类 == */
+.filter-select-160 { width: 160px; }
+.filter-input-240 { width: 240px; }
+.pagination-right-16 { margin-top: 16px; text-align: right; }
 </style>

+ 7 - 3
cfc-web/src/views/admin/indicators/index.vue

@@ -11,7 +11,7 @@
         <el-option label="心理健康" value="mental" />
         <el-option label="营养" value="nutrition" />
       </el-select>
-      <el-input v-model="filterKeyword" placeholder="搜索名称/编码" prefix-icon="el-icon-search" clearable style="width:200px;margin-left:12px" @keyup.enter.native="loadData" />
+      <el-input v-model="filterKeyword" placeholder="搜索名称/编码" prefix-icon="el-icon-search" clearable class="filter-input-200ml12" @keyup.enter.native="loadData" />
     </div>
 
     <!-- 表格 -->
@@ -81,7 +81,7 @@
     <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="500px">
       <el-form ref="form" :model="form" label-width="100px">
         <el-form-item label="领域" required>
-          <el-select v-model="form.domain" style="width:100%">
+          <el-select v-model="form.domain" class="form-full">
             <el-option label="生理健康" value="physical" />
             <el-option label="心理健康" value="mental" />
             <el-option label="营养" value="nutrition" />
@@ -97,7 +97,7 @@
           <el-input v-model="form.name" />
         </el-form-item>
         <el-form-item label="数据类型" required>
-          <el-select v-model="form.dataType" style="width:100%">
+          <el-select v-model="form.dataType" class="form-full">
             <el-option label="枚举" value="enum" />
             <el-option label="数值" value="number" />
             <el-option label="文本" value="string" />
@@ -239,4 +239,8 @@ export default {
 <style scoped>
 .indicators-page { padding: 20px; }
 .filter-bar { margin-bottom: 16px; display: flex; align-items: center; }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200ml12 { width: 200px; margin-left: 12px; }
+.form-full { width: 100%; }
 </style>

+ 15 - 8
cfc-web/src/views/admin/org/Dashboard.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="org-dashboard">
     <!-- 总览卡片 -->
-    <el-row :gutter="16" style="margin-bottom: 16px">
+    <el-row :gutter="16" class="mb-16">
       <el-col :span="4"><el-card shadow="never" class="stat-card">
         <div class="stat-num">{{ overview.memberCount }}</div>
         <div class="stat-label">成员总数</div>
@@ -28,14 +28,14 @@
       </el-card></el-col>
     </el-row>
 
-    <el-row :gutter="16" style="margin-bottom: 16px">
+    <el-row :gutter="16" class="mb-16">
       <!-- 活跃度趋势 -->
       <el-col :span="16">
         <el-card shadow="never">
           <div slot="header">
             <span>活跃度趋势(任务完成 / 打卡 / 报告上传)</span>
             <el-date-picker v-model="activeDateRange" type="daterange" size="mini"
-              style="float:right;margin-left:10px" value-format="yyyy-MM-dd"
+              class="date-right" value-format="yyyy-MM-dd"
               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
               @change="onActiveRangeChange"></el-date-picker>
           </div>
@@ -49,11 +49,11 @@
           <div slot="header">
             <span>趋势</span>
             <el-date-picker v-model="trendDateRange" type="daterange" size="mini"
-              style="float:right;margin-left:10px" value-format="yyyy-MM-dd"
+              class="date-right" value-format="yyyy-MM-dd"
               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
               @change="onTrendRangeChange"></el-date-picker>
           </div>
-          <div ref="trendChart" class="echarts-container" style="height: 280px"></div>
+          <div ref="trendChart" class="echarts-container chart-h280"></div>
         </el-card>
       </el-col>
     </el-row>
@@ -63,7 +63,7 @@
       <el-col :span="8">
         <el-card shadow="never">
           <div slot="header">家庭维度</div>
-          <div style="padding: 10px 0">
+          <div class="dim-content">
             <div class="dim-row"><span>活跃家庭数</span><b>{{ families.activeFamilyCount }}</b></div>
             <div class="dim-row"><span>任务完成率</span><b>{{ families.taskCompletionRate }}%</b></div>
             <div class="dim-row"><span>打卡率</span><b>{{ families.checkinRate }}%</b></div>
@@ -77,11 +77,11 @@
           <div slot="header">
             <span>营收</span>
             <el-date-picker v-model="revenueDateRange" type="daterange" size="mini"
-              style="float:right;margin-left:10px" value-format="yyyy-MM-dd"
+              class="date-right" value-format="yyyy-MM-dd"
               range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
               @change="onRevenueRangeChange"></el-date-picker>
           </div>
-          <div ref="revenueChart" class="echarts-container" style="height: 230px"></div>
+          <div ref="revenueChart" class="echarts-container chart-h230"></div>
         </el-card>
       </el-col>
     </el-row>
@@ -288,4 +288,11 @@ export default {
   border-bottom: 1px dashed #f0f0f0;
 }
 .dim-row:last-child { border-bottom: none; }
+
+/* == C 批内联清理工具类 == */
+.mb-16 { margin-bottom: 16px; }
+.date-right { float: right; margin-left: 10px; }
+.chart-h280 { height: 280px; }
+.chart-h230 { height: 230px; }
+.dim-content { padding: 10px 0; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/org/Detail.vue

@@ -23,7 +23,7 @@
       </el-descriptions>
     </el-card>
 
-    <el-card style="margin-top: 15px">
+    <el-card class="card-mt-15">
       <PageHeader slot="header" title="组织成员">
         <el-button type="primary" size="small" @click="showAddDialog">+ 添加成员</el-button>
       </PageHeader>
@@ -62,7 +62,7 @@
       <el-form label-width="100px">
         <el-form-item label="搜索用户">
           <el-select v-model="addForm.userId" filterable remote placeholder="按手机号/昵称搜索平台用户"
-                     :remote-method="searchUsers" :loading="searchLoading" style="width: 100%">
+                     :remote-method="searchUsers" :loading="searchLoading" class="form-full">
             <el-option v-for="item in searchResults" :key="item.id"
                        :label="item.nickname + ' (' + item.phone + ')'" :value="item.id" />
           </el-select>
@@ -245,4 +245,8 @@ export default {
 .org-detail {
   padding: 20px;
 }
+
+/* == C 批内联清理工具类 == */
+.card-mt-15 { margin-top: 15px; }
+.form-full { width: 100%; }
 </style>

+ 6 - 2
cfc-web/src/views/admin/review/ActivityRegistrationAudit.vue

@@ -10,7 +10,7 @@
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
     </div>
         <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">
         <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>
@@ -57,7 +57,7 @@
         <el-form-item label="审核状态">
           <StatusTag :type="statusType(currentRow.status)" :text="statusLabel(currentRow.status)" />
         </el-form-item>
-        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" style="color:var(--adm-error-text);">
+        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" class="text-error">
           {{ currentRow.rejectReason }}
         </el-form-item>
       </el-form>
@@ -131,4 +131,8 @@ export default {
 <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); }
 .no-op { color: var(--adm-text-25); }
+
+/* == C 批内联清理工具类 == */
+.wide-table { min-width: 900px; }
+.text-error { color: var(--adm-error-text); }
 </style>

+ 8 - 3
cfc-web/src/views/admin/review/HierarchyAudit.vue

@@ -10,7 +10,7 @@
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
     </div>
         <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">
         <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>
@@ -62,12 +62,12 @@
         <el-form-item label="当前上级">{{ currentRow.currentSuperior || '-' }}</el-form-item>
         <el-form-item label="目标上级">{{ currentRow.targetSuperior || '-' }}</el-form-item>
         <el-form-item label="申请原因">
-          <div style="white-space:pre-wrap;">{{ currentRow.reason || '-' }}</div>
+          <div class="pre-wrap">{{ currentRow.reason || '-' }}</div>
         </el-form-item>
         <el-form-item label="审核状态">
           <StatusTag :type="statusType(currentRow.status)" :text="statusLabel(currentRow.status)" />
         </el-form-item>
-        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" style="color:var(--adm-error-text);">
+        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" class="text-error">
           {{ currentRow.rejectReason }}
         </el-form-item>
       </el-form>
@@ -133,4 +133,9 @@ export default {
 <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); }
 .no-op { color: var(--adm-text-25); }
+
+/* == C 批内联清理工具类 == */
+.wide-table { min-width: 900px; }
+.pre-wrap { white-space: pre-wrap; }
+.text-error { color: var(--adm-error-text); }
 </style>

+ 6 - 2
cfc-web/src/views/admin/review/KnowledgeAdminAudit.vue

@@ -10,7 +10,7 @@
       <el-button size="small" @click="loadData" :loading="loading">刷新</el-button>
     </div>
     <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 label="申请ID" width="90">
           <template slot-scope="{ row }">{{ row.applyId }}</template>
         </el-table-column>
@@ -77,7 +77,7 @@
         <el-form-item label="审核状态">
           <StatusTag :type="statusType(currentRow.status)" :text="statusLabel(currentRow.status)" />
         </el-form-item>
-        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" style="color:var(--adm-error-text);">
+        <el-form-item label="驳回原因" v-if="currentRow.rejectReason" class="text-error">
           {{ currentRow.rejectReason }}
         </el-form-item>
       </el-form>
@@ -153,4 +153,8 @@ export default {
 <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); }
 .audit-img { max-width: 160px; max-height: 110px; border-radius: 4px; margin-right: 8px; border: 1px solid var(--adm-border-split); }
+
+/* == C 批内联清理工具类 == */
+.wide-table { min-width: 900px; }
+.text-error { color: var(--adm-error-text); }
 </style>

+ 6 - 2
cfc-web/src/views/admin/supply-manage/Detail.vue

@@ -20,7 +20,7 @@
         <el-descriptions-item label="更新时间">{{ supplier.updatedAt | parseTime('{y}-{m}-{d} {h}:{i}:{s}') }}</el-descriptions-item>
       </el-descriptions>
 
-      <div style="margin-top: 20px;">
+      <div class="mt-20">
         <el-button type="primary" size="small" @click="$router.push('/supply-manage/' + supplier.id + '/edit')">编辑供应商</el-button>
         <el-button type="warning" size="small" @click="showTierDialog = true">调整服务商层级</el-button>
       </div>
@@ -30,7 +30,7 @@
     <el-dialog title="调整服务商层级" :visible.sync="showTierDialog" width="400px">
       <el-form label-width="120px">
         <el-form-item label="服务商类型">
-          <el-select v-model="tierForm.vendorType" style="width: 100%">
+          <el-select v-model="tierForm.vendorType" class="form-full">
             <el-option label="成长规划师" value="planner"></el-option>
             <el-option label="活动规划师" value="activity_provider"></el-option>
             <el-option label="商品供应商" value="product_supplier"></el-option>
@@ -134,4 +134,8 @@ export default {
 .supply-manage-detail {
   padding: 20px;
 }
+
+/* == C 批内联清理工具类 == */
+.mt-20 { margin-top: 20px; }
+.form-full { width: 100%; }
 </style>

+ 8 - 3
cfc-web/src/views/admin/supply-manage/List.vue

@@ -5,14 +5,14 @@
         <el-button type="primary" size="small" @click="$router.push('/supply-manage/create')">+ 新增供应商</el-button>
       </PageHeader>
 
-      <el-form :inline="true" style="margin-bottom: 15px;">
+      <el-form :inline="true" class="form-mb15">
         <el-form-item>
           <el-input v-model="searchKeyword" placeholder="搜索手机号/昵称/姓名" clearable @clear="loadData" @keyup.enter.native="loadData">
             <i slot="prefix" class="el-icon-search"></i>
           </el-input>
         </el-form-item>
         <el-form-item>
-          <el-select v-model="searchVendorStatus" placeholder="服务商状态" clearable style="width: 150px" @change="loadData">
+          <el-select v-model="searchVendorStatus" placeholder="服务商状态" clearable class="filter-select-150" @change="loadData">
             <el-option label="待审核" value="pending"></el-option>
             <el-option label="已通过" value="approved"></el-option>
             <el-option label="已拒绝" value="rejected"></el-option>
@@ -73,7 +73,7 @@
 
     <el-pagination
         v-if="total > 0"
-        style="margin-top: 15px; text-align: right"
+        class="pagination-right-15"
         background
         layout="total, prev, pager, next"
         :total="total"
@@ -202,4 +202,9 @@ export default {
 .sort-header:hover {
   color: var(--adm-primary);
 }
+
+/* == C 批内联清理工具类 == */
+.form-mb15 { margin-bottom: 15px; }
+.filter-select-150 { width: 150px; }
+.pagination-right-15 { margin-top: 15px; text-align: right; }
 </style>

+ 8 - 3
cfc-web/src/views/admin/supply-system/List.vue

@@ -5,14 +5,14 @@
         <el-button type="primary" size="small" @click="$router.push('/supply-system/create')">+ 新建体系</el-button>
       </PageHeader>
 
-      <el-form :inline="true" style="margin-bottom: 15px;">
+      <el-form :inline="true" class="form-mb15">
         <el-form-item>
           <el-input v-model="searchKeyword" placeholder="搜索体系名称" clearable @clear="loadData" @keyup.enter.native="loadData">
             <i slot="prefix" class="el-icon-search"></i>
           </el-input>
         </el-form-item>
         <el-form-item>
-          <el-select v-model="searchStatus" placeholder="状态" clearable style="width: 120px" @change="loadData">
+          <el-select v-model="searchStatus" placeholder="状态" clearable class="filter-select-120" @change="loadData">
             <el-option label="启用" value="active"></el-option>
             <el-option label="停用" value="disabled"></el-option>
           </el-select>
@@ -74,7 +74,7 @@
 
       <el-pagination
         v-if="total > 0"
-        style="margin-top: 15px; text-align: right"
+        class="pagination-right-15"
         background
         layout="total, prev, pager, next"
         :total="total"
@@ -163,4 +163,9 @@ export default {
 .sort-header:hover {
   color: var(--adm-primary);
 }
+
+/* == C 批内联清理工具类 == */
+.form-mb15 { margin-bottom: 15px; }
+.filter-select-120 { width: 120px; }
+.pagination-right-15 { margin-top: 15px; text-align: right; }
 </style>

+ 4 - 1
cfc-web/src/views/admin/unified-knowledge.vue

@@ -17,7 +17,7 @@
         type="info"
         :closable="false"
         show-icon
-        style="margin-bottom: 16px"
+        class="mb-16"
       />
 
       <div class="adm-table-wrap">
@@ -253,4 +253,7 @@ export default {
   font-size: 13px;
   line-height: 1.5;
 }
+
+/* == C 批内联清理工具类 == */
+.mb-16 { margin-bottom: 16px; }
 </style>

+ 8 - 2
cfc-web/src/views/nutritionist/HealthIndicators.vue

@@ -43,11 +43,11 @@
         <el-table-column label="关联营养素" width="120">
           <template slot-scope="{ row }">
             <template v-if="row.linkedNutrients && row.linkedNutrients.length > 0">
-              <el-tag v-for="nutrient in row.linkedNutrients" :key="nutrient" size="mini" style="margin-right: 4px">
+              <el-tag v-for="nutrient in row.linkedNutrients" :key="nutrient" size="mini" class="tag-mini">
                 {{ nutrient }}
               </el-tag>
             </template>
-            <span v-else style="color: var(--adm-text-45); font-size: 12px">—</span>
+            <span v-else class="text-muted-nutrient">—</span>
           </template>
         </el-table-column>
         <el-table-column prop="recordedAt" label="记录时间" width="180">
@@ -110,3 +110,9 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.tag-mini { margin-right: 4px; }
+.text-muted-nutrient { color: var(--adm-text-45); font-size: 12px; }
+</style>

+ 5 - 1
cfc-web/src/views/nutritionist/HealthReports.vue

@@ -63,7 +63,7 @@
           <template slot-scope="{ row }">
             <StatusTag v-if="row.deficiencyCount > 0" type="danger" size="small" :text="row.deficiencyCount + '项缺乏'" />
             <StatusTag v-else type="success" size="small" text="无缺乏" />
-            <el-button size="mini" type="text" @click="triggerAnalysis(row)" style="margin-left: 4px">
+            <el-button size="mini" type="text" @click="triggerAnalysis(row)" class="ml-4">
               {{ row.deficiencyCount > 0 ? '重新分析' : '分析' }}
             </el-button>
           </template>
@@ -154,4 +154,8 @@ export default {
 }
 </script>
 
+<style scoped>
+/* == C 批内联清理工具类 == */
+.ml-4 { margin-left: 4px; }
+</style>
 

+ 6 - 2
cfc-web/src/views/orchestration/ExecutionDetail.vue

@@ -7,7 +7,7 @@
         </PageHeader>
       </div>
 
-      <el-descriptions v-if="execution" :column="3" border size="medium" style="margin-bottom:20px">
+      <el-descriptions v-if="execution" :column="3" border size="medium" class="desc-mb-20">
         <el-descriptions-item label="执行ID">{{ execution.id }}</el-descriptions-item>
         <el-descriptions-item label="流ID">{{ execution.flowId }}</el-descriptions-item>
         <el-descriptions-item label="版本">{{ execution.flowVersion }}</el-descriptions-item>
@@ -21,7 +21,7 @@
       </el-descriptions>
 
       <!-- 手动干预 -->
-      <div style="margin-bottom:15px">
+      <div class="actions-mb-15">
         <el-button type="warning" size="small" v-if="execution && execution.status==='running'" @click="handleTerminate">终止流</el-button>
         <el-button type="primary" size="small" v-if="execution && execution.status==='running'" @click="handlePause">暂停</el-button>
         <el-button type="success" size="small" v-if="execution && execution.status==='paused'" @click="handleResume">恢复</el-button>
@@ -177,4 +177,8 @@ export default {
 
 <style scoped>
 .page-container { padding: 20px; }
+
+/* == C 批内联清理工具类 == */
+.desc-mb-20 { margin-bottom: 20px; }
+.actions-mb-15 { margin-bottom: 15px; }
 </style>

+ 8 - 3
cfc-web/src/views/orchestration/OrchestrationFlow.vue

@@ -9,7 +9,7 @@
       </div>
 
       <!-- 搜索 -->
-      <el-form :inline="true" :model="searchForm" style="margin-bottom:20px">
+      <el-form :inline="true" :model="searchForm" class="form-mb20">
         <el-form-item label="状态">
           <el-select v-model="searchForm.status" placeholder="全部状态" clearable>
             <el-option label="草稿" value="draft"></el-option>
@@ -50,7 +50,7 @@
       </div>
 
       <el-pagination
-        style="margin-top:15px;text-align:right"
+        class="pagination-right-15"
         @current-change="loadList"
         :current-page="pagination.current"
         :page-size="pagination.size"
@@ -63,7 +63,7 @@
     <el-dialog title="启动执行" :visible.sync="runDialogVisible" width="400px">
       <el-form label-width="100px">
         <el-form-item label="家庭成员">
-          <el-select v-model="runForm.familyMemberId" placeholder="请选择" style="width:100%">
+          <el-select v-model="runForm.familyMemberId" placeholder="请选择" class="form-full">
             <el-option v-for="m in memberList" :key="m.id" :label="m.nickname" :value="m.id"></el-option>
           </el-select>
         </el-form-item>
@@ -201,4 +201,9 @@ export default {
 
 <style scoped>
 .page-container { padding: 20px; }
+
+/* == C 批内联清理工具类 == */
+.form-mb20 { margin-bottom: 20px; }
+.pagination-right-15 { margin-top: 15px; text-align: right; }
+.form-full { width: 100%; }
 </style>

+ 6 - 1
cfc-web/src/views/teacher/FamilyList.vue

@@ -2,7 +2,7 @@
   <div class="family-list admin-page">
     <el-card>
       <PageHeader title="我的家庭">
-        <el-input v-model="keyword" placeholder="搜索家庭..." prefix-icon="el-icon-search" size="small" clearable style="width:200px" @keyup.enter.native="handleSearch" @clear="handleSearch" />
+        <el-input v-model="keyword" placeholder="搜索家庭..." prefix-icon="el-icon-search" size="small" clearable class="filter-input-200" @keyup.enter.native="handleSearch" @clear="handleSearch" />
       </PageHeader>
         <div class="adm-table-wrap">
 <el-table :data="filteredFamilies" v-loading="loading" border stripe height="100%">
@@ -108,3 +108,8 @@ export default {
   }
 }
 </script>
+
+<style scoped>
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+</style>

+ 5 - 1
cfc-web/src/views/teacher/GrowthPlans.vue

@@ -2,7 +2,7 @@
   <div class="growth-plans admin-page">
     <el-card>
       <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" class="filter-input-200" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
       </PageHeader>
             <div class="adm-table-wrap">
 <el-table :data="filteredPlans" v-loading="loading" border stripe height="100%">
@@ -84,4 +84,8 @@ export default {
 }
 </script>
 
+<style scoped>
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+</style>
 

+ 8 - 2
cfc-web/src/views/teacher/GrowthRecords.vue

@@ -2,8 +2,8 @@
   <div class="growth-records admin-page">
     <el-card>
       <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-select v-model="sourceFilter" placeholder="来源筛选" clearable size="small" style="width: 140px" @change="loadRecords">
+        <el-input v-model="keyword" placeholder="搜索成长记录..." prefix-icon="el-icon-search" class="filter-input-200" clearable @keyup.enter.native="handleSearch" @clear="handleSearch" />
+        <el-select v-model="sourceFilter" placeholder="来源筛选" clearable size="small" class="filter-select-140" @change="loadRecords">
           <el-option label="全部" value="" />
           <el-option label="手动创建" value="manual" />
           <el-option label="测评录入" value="assessment" />
@@ -136,4 +136,10 @@ export default {
 }
 </script>
 
+<style scoped>
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
+.filter-select-140 { width: 140px; }
+</style>
+
 

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

@@ -2,7 +2,7 @@
   <div class="family-assessment admin-page">
     <el-card>
       <PageHeader title="家庭DAN测评管理">
-        <el-input v-model="keyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" size="small" clearable style="width:200px" @keyup.enter.native="handleSearch" @clear="handleSearch" />
+        <el-input v-model="keyword" placeholder="搜索家庭ID..." prefix-icon="el-icon-search" size="small" clearable class="filter-input-200" @keyup.enter.native="handleSearch" @clear="handleSearch" />
       </PageHeader>
 
         <div class="adm-table-wrap">
@@ -239,4 +239,7 @@ export default {
 .family-assessment {
   padding: 20px;
 }
+
+/* == C 批内联清理工具类 == */
+.filter-input-200 { width: 200px; }
 </style>

+ 4 - 1
cfc-web/src/views/teacher/TeacherOrders.vue

@@ -62,7 +62,7 @@
     <!-- 订单列表 -->
     <el-card class="table-card">
                 <div class="adm-table-wrap">
-<el-table :data="paginatedOrders" stripe style="width: 100%" height="100%" v-loading="loading">
+<el-table :data="paginatedOrders" stripe class="table-full" height="100%" v-loading="loading">
         <el-table-column prop="orderNo" label="订单号" width="200">
           <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>
@@ -488,4 +488,7 @@ export default {
   color: var(--adm-success);
   font-weight: 700;
 }
+
+/* == C 批内联清理工具类 == */
+.table-full { width: 100%; }
 </style>