Przeglądaj źródła

style(admin): C-6 Foods/dimension-config/TeacherDashboard/NutritionProducts/InventoryManage 内联 style 归零

zxyj-web 3 tygodni temu
rodzic
commit
65f9ef1f0b

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

@@ -26,31 +26,31 @@
           <div class="td-quick-actions">
             <div class="td-action-item" @click="$router.push('/teacher-families')">
               <div class="td-action-icon" style="background: #EBF5FF">
-                <i class="el-icon-user" style="color: var(--adm-primary)"></i>
+                <i class="el-icon-user td-action-icon-color-primary"></i>
               </div>
               <span>管理家庭</span>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-messages')">
               <div class="td-action-icon" style="background: #ECFDF5">
-                <i class="el-icon-chat-line-round" style="color: var(--adm-success)"></i>
+                <i class="el-icon-chat-line-round td-action-icon-color-success"></i>
               </div>
               <span>消息中心</span>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-orders')">
               <div class="td-action-icon" style="background: #FFFBEB">
-                <i class="el-icon-document" style="color: var(--adm-warning)"></i>
+                <i class="el-icon-document td-action-icon-color-warning"></i>
               </div>
               <span>查看订单</span>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-assessment')">
               <div class="td-action-icon" style="background: #F5F3FF">
-                <i class="el-icon-edit-outline" style="color: var(--adm-primary)"></i>
+                <i class="el-icon-edit-outline td-action-icon-color-primary"></i>
               </div>
               <span>DAN测评</span>
             </div>
             <div class="td-action-item" @click="$router.push('/teacher-health-plan-review')">
               <div class="td-action-icon" style="background: #FEF3C7">
-                <i class="el-icon-document-checked" style="color: #D97706"></i>
+                <i class="el-icon-document-checked td-action-icon-color-warning-strong"></i>
               </div>
               <span>健康方案审核</span>
             </div>
@@ -65,19 +65,19 @@
           </div>
           <div class="td-today-stats">
             <div class="td-today-stat-item">
-              <div class="td-today-stat-value" style="color: var(--adm-primary)">{{ todayStats.newFamilies }}</div>
+              <div class="td-today-stat-value td-stat-primary">{{ todayStats.newFamilies }}</div>
               <div class="td-today-stat-label">新增家庭</div>
             </div>
             <div class="td-today-stat-item">
-              <div class="td-today-stat-value" style="color: var(--adm-success)">{{ todayStats.completedTasks }}</div>
+              <div class="td-today-stat-value td-stat-success">{{ todayStats.completedTasks }}</div>
               <div class="td-today-stat-label">完成任务</div>
             </div>
             <div class="td-today-stat-item">
-              <div class="td-today-stat-value" style="color: var(--adm-warning)">{{ todayStats.newOrders }}</div>
+              <div class="td-today-stat-value td-stat-warning">{{ todayStats.newOrders }}</div>
               <div class="td-today-stat-label">新订单</div>
             </div>
             <div class="td-today-stat-item">
-              <div class="td-today-stat-value" style="color: var(--adm-primary)">{{ todayStats.pendingReviews }}</div>
+              <div class="td-today-stat-value td-stat-primary">{{ todayStats.pendingReviews }}</div>
               <div class="td-today-stat-label">待审核</div>
             </div>
           </div>
@@ -155,7 +155,7 @@
             <el-button type="text" @click="$router.push('/teacher-orders')">查看全部 <i class="el-icon-arrow-right"></i></el-button>
           </div>
                     <div class="adm-table-wrap">
-<el-table :data="recentOrders" stripe style="width: 100%" class="td-orders-table" height="100%">
+<el-table :data="recentOrders" stripe class="td-orders-table" height="100%">
             <el-table-column prop="orderNo" label="订单号" width="200">
               <template slot-scope="scope">
                 <span class="td-order-no">{{ scope.row.orderNo }}</span>
@@ -321,4 +321,13 @@ export default {
 .td-order-no { color: var(--adm-primary); font-weight: 500; }
 .td-family-cell i { margin-right: 4px; color: var(--adm-text-45); }
 .td-amount-value { font-weight: 600; color: var(--adm-text-88); }
+/* == C 批内联清理工具类 == */
+.td-action-icon-color-primary { color: var(--adm-primary); }
+.td-action-icon-color-success { color: var(--adm-success); }
+.td-action-icon-color-warning { color: var(--adm-warning); }
+.td-action-icon-color-warning-strong { color: #D97706; }
+.td-stat-primary { color: var(--adm-primary); }
+.td-stat-success { color: var(--adm-success); }
+.td-stat-warning { color: var(--adm-warning); }
+.td-orders-table { width: 100%; }
 </style>

+ 24 - 21
cfc-web/src/views/admin/Foods.vue

@@ -11,7 +11,7 @@
             prefix-icon="el-icon-search"
             clearable
             size="mini"
-            style="width: 200px; margin-right: 8px;"
+            class="w-200 mr-8"
             @keyup.enter.native="handleSearch"
             @clear="handleSearch"
           />
@@ -20,7 +20,7 @@
             placeholder="分类筛选"
             size="mini"
             clearable
-            style="width: 140px; margin-right: 8px;"
+            class="w-140 mr-8"
             @change="handleSearch"
           >
             <el-option label="全部分类" value="" />
@@ -48,13 +48,13 @@
         border
         stripe
         size="mini"
-        style="width: 100%"
+        class="full-width"
         height="100%"
       >
         <el-table-column type="index" label="#" width="50" align="center" />
         <el-table-column prop="name" label="名称" min-width="120" fixed :class-name="sortClass('name')">
           <template slot-scope="{ row }">
-            <span style="font-weight: 500;">{{ row.name }}</span>
+            <span class="num-val">{{ row.name }}</span>
           </template>
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('name',$event)" @dblclick.stop="onSortToggle('name')">名称<span v-if="sortIndex('name') !== null" class="sort-index" :class="sortClass('name') === 'sort-asc' ? 'sort-asc-badge' : 'sort-desc-badge'">{{ sortIndex('name') }}</span>{{ sortIcon('name') }}</span>
@@ -147,7 +147,7 @@
               </el-button>
               <el-dropdown-menu slot="dropdown">
                 <el-dropdown-item command="detail" icon="el-icon-view">查看详情</el-dropdown-item>
-                <el-dropdown-item command="delete" icon="el-icon-delete" divided style="color: var(--adm-error);">删除</el-dropdown-item>
+                <el-dropdown-item command="delete" icon="el-icon-delete" divided class="text-error">删除</el-dropdown-item>
               </el-dropdown-menu>
             </el-dropdown>
           </template>
@@ -184,7 +184,7 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="分类">
-              <el-select v-model="form.category" style="width:100%" placeholder="选择分类">
+              <el-select v-model="form.category" class="full-width" placeholder="选择分类">
                 <el-option v-for="opt in categoryOptions" :key="opt" :label="opt" :value="opt" />
               </el-select>
             </el-form-item>
@@ -193,51 +193,51 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="热量(kcal/100g)">
-              <el-input-number v-model="form.calories" :min="0" :precision="1" style="width:100%" />
+              <el-input-number v-model="form.calories" :min="0" :precision="1" class="full-width" />
             </el-form-item>
           </el-col>
           <el-col :span="12">
             <el-form-item label="能量(kJ/100g)">
-              <el-input-number v-model="form.energyKj" :min="0" :precision="1" style="width:100%" />
+              <el-input-number v-model="form.energyKj" :min="0" :precision="1" class="full-width" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="8">
             <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="full-width" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <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="full-width" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <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="full-width" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="20">
           <el-col :span="8">
             <el-form-item label="膳食纤维(g)">
-              <el-input-number v-model="form.fiber" :min="0" :precision="1" style="width:100%" />
+              <el-input-number v-model="form.fiber" :min="0" :precision="1" class="full-width" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="淀粉(g)">
-              <el-input-number v-model="form.starch" :min="0" :precision="1" style="width:100%" />
+              <el-input-number v-model="form.starch" :min="0" :precision="1" class="full-width" />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item label="胆固醇(mg)">
-              <el-input-number v-model="form.cholesterol" :min="0" :precision="1" style="width:100%" />
+              <el-input-number v-model="form.cholesterol" :min="0" :precision="1" class="full-width" />
             </el-form-item>
           </el-col>
         </el-row>
         <el-form-item label="单位">
-          <el-input v-model="form.unit" placeholder="如: 克、个、份" style="width: 200px;" />
+          <el-input v-model="form.unit" placeholder="如: 克、个、份" class="w-200" />
         </el-form-item>
         <el-form-item label="应季月份">
           <el-checkbox-group v-model="form.months">
@@ -277,7 +277,7 @@
         <el-descriptions-item label="排序">{{ detailData.sortOrder != null ? detailData.sortOrder : '-' }}</el-descriptions-item>
         <el-descriptions-item label="应季月份" :span="2">
           <span v-if="detailData.months && detailData.months.length">{{ detailData.months.map(function(m) { return m + '月' }).join('、') }}</span>
-          <span v-else style="color:var(--adm-text-45)">未设置</span>
+          <span v-else class="text-muted">未设置</span>
         </el-descriptions-item>
       </el-descriptions>
     </el-dialog>
@@ -508,30 +508,33 @@ export default {
   flex-wrap: wrap;
   gap: 4px;
 }
-
 .pagination-wrap {
   display: flex;
   justify-content: flex-end;
   padding: 16px 0 0;
 }
-
 .num-val {
   font-weight: 500;
   font-family: 'Helvetica Neue', Arial, sans-serif;
 }
-
 .num-unit {
   font-size: 11px;
   color: var(--adm-text-45);
   margin-left: 2px;
 }
-
 .el-checkbox.is-bordered {
   margin-right: 6px;
   margin-bottom: 4px;
 }
-
 .el-descriptions {
   margin-top: 8px;
 }
+/* == C 批内联清理工具类 == */
+.w-200 { width: 200px; }
+.w-140 { width: 140px; }
+.full-width { width: 100%; }
+.ml-8 { margin-left: 8px; }
+.mr-8 { margin-right: 8px; }
+.text-error { color: var(--adm-error); }
+.text-muted { color: var(--adm-text-45); }
 </style>

+ 24 - 13
cfc-web/src/views/admin/InventoryManage.vue

@@ -10,9 +10,9 @@
       <el-tabs v-model="activeTab">
         <!-- 库存流水 -->
         <el-tab-pane label="库存流水" name="transactions">
-          <div class="filter-bar" style="margin-bottom:12px;">
-            <el-input v-model="txFilters.productName" placeholder="商品名称" clearable style="width:160px;margin-right:8px;" />
-            <el-select v-model="txFilters.type" placeholder="类型" clearable style="width:120px;margin-right:8px;">
+          <div class="filter-bar mb-12">
+            <el-input v-model="txFilters.productName" placeholder="商品名称" clearable class="w-160 mr-8" />
+            <el-select v-model="txFilters.type" placeholder="类型" clearable class="w-120 mr-8">
               <el-option label="全部" value="" />
               <el-option label="入库" value="inbound" />
               <el-option label="出库" value="outbound" />
@@ -20,7 +20,7 @@
               <el-option label="盘点" value="counting" />
               <el-option label="退款入库" value="refund" />
             </el-select>
-            <el-date-picker v-model="txFilters.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" style="width:260px;margin-right:8px;" />
+            <el-date-picker v-model="txFilters.dateRange" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd" class="w-260 mr-8" />
             <el-button type="primary" size="mini" @click="loadTransactions">查询</el-button>
           </div>
                     <div class="adm-table-wrap">
@@ -115,7 +115,7 @@
 
         <!-- 库存预警 -->
         <el-tab-pane label="库存预警" name="alerts">
-          <el-button type="primary" size="mini" @click="loadAlerts" style="margin-bottom:12px;">刷新</el-button>
+          <el-button type="primary" size="mini" @click="loadAlerts" class="mb-12">刷新</el-button>
                     <div class="adm-table-wrap">
 <el-table :data="alertList" v-loading="alertLoading" border stripe height="100%">
             <el-table-column prop="productName" label="商品名称" min-width="200" />
@@ -123,7 +123,7 @@
               <template slot-scope="{ row }">{{ row.specs || '-' }}</template>
             </el-table-column>
             <el-table-column prop="currentStock" label="当前库存" width="80">
-              <template slot-scope="{ row }"><span style="color:var(--adm-error-text);font-weight:bold;">{{ row.currentStock }}</span></template>
+              <template slot-scope="{ row }"><span class="text-error-bold">{{ row.currentStock }}</span></template>
             </el-table-column>
             <el-table-column prop="minStockAlert" label="预警下限" width="80" />
           
@@ -134,7 +134,7 @@
 
         <!-- 出库单 -->
         <el-tab-pane label="出库单" name="outbound">
-          <el-button type="primary" size="mini" @click="showCreateOutbound = true" style="margin-bottom:12px;">新建出库单</el-button>
+          <el-button type="primary" size="mini" @click="showCreateOutbound = true" class="mb-12">新建出库单</el-button>
                     <div class="adm-table-wrap">
 <el-table :data="outboundList" v-loading="outboundLoading" border stripe height="100%">
             <el-table-column prop="id" label="ID" width="60">
@@ -146,7 +146,7 @@
               <template slot-scope="{ row }">{{ row.productName || 'ID:' + row.productId }}</template>
             </el-table-column>
             <el-table-column label="数量" width="70">
-              <template slot-scope="{ row }"><span style="color:var(--adm-error-text);">-{{ row.quantity }}</span></template>
+              <template slot-scope="{ row }"><span class="text-error">-{{ row.quantity }}</span></template>
             </el-table-column>
             <el-table-column prop="remark" label="出库原因" min-width="200" show-overflow-tooltip>
               <template slot="header">
@@ -167,7 +167,7 @@
 
         <!-- 盘点记录 -->
         <el-tab-pane label="盘点记录" name="counting">
-          <el-button type="primary" size="mini" @click="showCreateCounting = true" style="margin-bottom:12px;">新建盘点</el-button>
+          <el-button type="primary" size="mini" @click="showCreateCounting = true" class="mb-12">新建盘点</el-button>
                     <div class="adm-table-wrap">
 <el-table :data="countingList" v-loading="countingLoading" border stripe height="100%">
             <el-table-column prop="id" label="ID" width="60">
@@ -223,7 +223,7 @@
         <el-descriptions-item label="状态">{{ inboundDetail.order.status }}</el-descriptions-item>
         <el-descriptions-item label="备注">{{ inboundDetail.order.remark || '-' }}</el-descriptions-item>
       </el-descriptions>
-      <el-table :data="inboundDetail.items" border stripe style="margin-top:12px;" v-if="inboundDetail">
+      <el-table :data="inboundDetail.items" border stripe class="mt-12" v-if="inboundDetail">
         <el-table-column prop="productId" label="商品ID" width="70" />
         <el-table-column prop="skuId" label="SKU ID" width="70" />
         <el-table-column prop="quantity" label="数量" width="70" />
@@ -233,12 +233,12 @@
     <el-dialog title="新建出库单" :visible.sync="showCreateOutbound" width="500px">
       <el-form label-width="100px">
         <el-form-item label="商品">
-          <el-select v-model="outboundForm.productId" filterable remote placeholder="搜索商品" :remote-method="searchOutboundProduct" style="width:300px;">
+          <el-select v-model="outboundForm.productId" filterable remote placeholder="搜索商品" :remote-method="searchOutboundProduct" class="w-300">
             <el-option v-for="p in outboundProductOptions" :key="p.id" :label="p.name + ' (库存:' + (p.stock || 0) + ')'" :value="p.id" />
           </el-select>
         </el-form-item>
         <el-form-item label="SKU" v-if="outboundSkuOptions.length">
-          <el-select v-model="outboundForm.skuId" placeholder="选择规格" clearable style="width:200px;">
+          <el-select v-model="outboundForm.skuId" placeholder="选择规格" clearable class="w-200">
             <el-option v-for="s in outboundSkuOptions" :key="s.id" :label="s.specs || '默认' + ' (库存:' + (s.stock || 0) + ')'" :value="s.id" />
           </el-select>
         </el-form-item>
@@ -246,7 +246,7 @@
           <el-input v-model.number="outboundForm.quantity" type="number" min="1" />
         </el-form-item>
         <el-form-item label="出库原因">
-          <el-select v-model="outboundForm.reason" placeholder="选择原因" style="width:200px;">
+          <el-select v-model="outboundForm.reason" placeholder="选择原因" class="w-200">
             <el-option label="赠品" value="赠品" />
             <el-option label="损耗" value="损耗" />
             <el-option label="样品" value="样品" />
@@ -455,4 +455,15 @@ export default {
 .inventory-manage { padding: 20px; }
 .filter-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
 .pagination-wrap { margin-top: 12px; text-align: right; }
+/* == C 批内联清理工具类 == */
+.mb-12 { margin-bottom: 12px; }
+.mt-12 { margin-top: 12px; }
+.mr-8 { margin-right: 8px; }
+.w-160 { width: 160px; }
+.w-120 { width: 120px; }
+.w-260 { width: 260px; }
+.w-300 { width: 300px; }
+.w-200 { width: 200px; }
+.text-error { color: var(--adm-error-text); }
+.text-error-bold { color: var(--adm-error-text); font-weight: bold; }
 </style>

+ 30 - 15
cfc-web/src/views/admin/NutritionProducts.vue

@@ -11,7 +11,7 @@
             prefix-icon="el-icon-search"
             clearable
             size="mini"
-            style="width: 200px; margin-right: 8px;"
+            class="w-200 mr-8"
             @keyup.enter.native="handleSearch"
             @clear="handleSearch"
           />
@@ -20,7 +20,7 @@
             placeholder="分类筛选"
             size="mini"
             clearable
-            style="width: 140px; margin-right: 8px;"
+            class="w-140 mr-8"
             @change="handleSearch"
           >
             <el-option label="全部分类" value="" />
@@ -31,7 +31,7 @@
             placeholder="品牌筛选"
             size="mini"
             clearable
-            style="width: 140px; margin-right: 8px;"
+            class="w-140 mr-8"
             @change="handleSearch"
           >
             <el-option label="全部品牌" value="" />
@@ -48,7 +48,7 @@
         border
         stripe
         size="mini"
-        style="width: 100%"
+        class="full-width"
         height="100%"
       >
         <el-table-column type="index" label="#" width="50" align="center" />
@@ -59,7 +59,7 @@
               :src="productImage(row)"
               :preview-src-list="productImageList(row)"
               fit="cover"
-              style="width: 60px; height: 60px; border-radius: 4px;"
+              class="img-thumb"
               lazy
             />
             <span v-else class="no-data">-</span>
@@ -67,7 +67,7 @@
         </el-table-column>
         <el-table-column label="产品名称" min-width="200">
           <template slot-scope="{ row }">
-            <span style="font-weight: 500;">{{ row.name }}</span>
+            <span class="font-medium">{{ row.name }}</span>
           </template>
           <template slot="header">
             <span class="sort-header" @click.stop="onSortClick('name', $event)">产品名称{{ sortIcon('name') }}</span>
@@ -128,7 +128,7 @@
         <el-table-column label="操作" width="110" align="center" fixed="right">
           <template slot-scope="{ row }">
             <el-button type="text" size="mini" @click="showDetail(row.id)">详情</el-button>
-            <el-link v-if="row.sourceUrl" :href="row.sourceUrl" target="_blank" type="primary" :underline="false" style="margin-left: 6px;">原平台</el-link>
+            <el-link v-if="row.sourceUrl" :href="row.sourceUrl" target="_blank" type="primary" :underline="false" class="ml-6">原平台</el-link>
           </template>
         </el-table-column>
       </el-table>
@@ -156,17 +156,17 @@
       width="800px"
       :close-on-click-modal="false"
     >
-      <div v-loading="detailLoading" v-if="detailData" style="max-height: 60vh; overflow-y: auto;">
-        <el-row :gutter="12" style="margin-bottom: 12px;">
+      <div v-loading="detailLoading" v-if="detailData" class="detail-scroll">
+        <el-row :gutter="12" class="mb-12">
           <el-col :span="8">
             <el-image
               v-if="detailImages.length"
               :src="detailImages[0]"
               :preview-src-list="detailImages"
               fit="cover"
-              style="width: 100%; height: 180px; border-radius: 6px;"
+              class="detail-img"
             />
-            <div v-else class="no-data" style="height: 180px; display: flex; align-items: center; justify-content: center;">暂无图片</div>
+            <div v-else class="no-data img-placeholder">暂无图片</div>
           </el-col>
           <el-col :span="16">
             <el-descriptions :column="2" border size="mini">
@@ -235,7 +235,7 @@
         <SectionTitle title="本平台关联商品" />
         <div v-if="detailData.localProduct">
           <StatusTag type="success" :text="'已关联商品 ID: ' + detailData.localProduct.id" />
-          <p style="margin-top: 8px;">名称: {{ detailData.localProduct.name }}</p>
+          <p class="mt-8">名称: {{ detailData.localProduct.name }}</p>
           <p>价格: ¥{{ (detailData.localProduct.price / 100).toFixed(2) }}</p>
         </div>
         <div v-else class="no-data">未关联本平台商品</div>
@@ -244,10 +244,10 @@
       
       </el-table>
       </div>
-      <div v-else-if="detailLoading" style="text-align: center; padding: 40px;">
-        <i class="el-icon-loading" style="font-size: 24px;"></i>
+      <div v-else-if="detailLoading" class="center-pad">
+        <i class="el-icon-loading loading-icon"></i>
       </div>
-      <div v-else class="no-data" style="text-align: center; padding: 40px;">未找到产品信息</div>
+      <div v-else class="no-data center-pad">未找到产品信息</div>
     </el-dialog>
   </div>
 </template>
@@ -428,4 +428,19 @@ export default {
 .no-data {
   color: var(--adm-text-45);
 }
+/* == C 批内联清理工具类 == */
+.w-200 { width: 200px; }
+.w-140 { width: 140px; }
+.mr-8 { margin-right: 8px; }
+.ml-6 { margin-left: 6px; }
+.mb-12 { margin-bottom: 12px; }
+.mt-8 { margin-top: 8px; }
+.full-width { width: 100%; }
+.font-medium { font-weight: 500; }
+.img-thumb { width: 60px; height: 60px; border-radius: 4px; }
+.detail-scroll { max-height: 60vh; overflow-y: auto; }
+.detail-img { width: 100%; height: 180px; border-radius: 6px; }
+.img-placeholder { height: 180px; display: flex; align-items: center; justify-content: center; }
+.center-pad { text-align: center; padding: 40px; }
+.loading-icon { font-size: 24px; }
 </style>

+ 30 - 17
cfc-web/src/views/admin/dimension-config.vue

@@ -2,7 +2,7 @@
   <div class="norm-config 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="loadData" @clear="loadData" />
+        <el-input v-model="keyword" placeholder="搜索维度/来源..." prefix-icon="el-icon-search" class="w-200" clearable @keyup.enter.native="loadData" @clear="loadData" />
         <el-button type="primary" size="small" @click="handleCreate">+ 添加常模</el-button>
       </PageHeader>
         <div class="adm-table-wrap">
@@ -30,7 +30,7 @@
         </el-table-column>
         <el-table-column label="百分位详情" min-width="280">
           <template slot-scope="scope">
-            <span style="font-size:12px; color:var(--adm-text-45);">
+            <span class="form-hint">
               P5={{ scope.row.percentile5 }} P15={{ scope.row.percentile15 }} P25={{ scope.row.percentile25 }} |
               P50={{ scope.row.percentile50 }} |
               P75={{ scope.row.percentile75 }} P85={{ scope.row.percentile85 }} P95={{ scope.row.percentile95 }}
@@ -58,7 +58,7 @@
     <el-dialog :visible.sync="dialogVisible" :title="isEdit ? '编辑常模' : '添加常模'" width="600px">
       <el-form :model="form" label-width="100px">
         <el-form-item label="维度" required>
-          <el-select v-model="form.dimension" placeholder="选择维度" style="width:100%">
+          <el-select v-model="form.dimension" placeholder="选择维度" class="full-width">
             <el-option label="growth 生长发育" value="growth"></el-option>
             <el-option label="sleep 睡眠质量" value="sleep"></el-option>
             <el-option label="vision 视力健康" value="vision"></el-option>
@@ -69,41 +69,41 @@
           </el-select>
         </el-form-item>
         <el-form-item label="性别">
-          <el-select v-model="form.gender" placeholder="选择性别" style="width:100%">
+          <el-select v-model="form.gender" placeholder="选择性别" class="full-width">
             <el-option label="全部性别" value="all"></el-option>
             <el-option label="男" value="male"></el-option>
             <el-option label="女" value="female"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="年龄范围">
-          <el-input-number v-model="form.ageMin" :min="0" :max="240" style="width:120px" /> 月 ~
-          <el-input-number v-model="form.ageMax" :min="0" :max="240" style="width:120px" /> 月
+          <el-input-number v-model="form.ageMin" :min="0" :max="240" class="w-120" /> 月 ~
+          <el-input-number v-model="form.ageMax" :min="0" :max="240" class="w-120" /> 月
         </el-form-item>
         <el-row :gutter="10">
           <el-col :span="8">
-            <el-form-item label="P5"><el-input-number v-model="form.percentile5" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P5"><el-input-number v-model="form.percentile5" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="P15"><el-input-number v-model="form.percentile15" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P15"><el-input-number v-model="form.percentile15" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="P25"><el-input-number v-model="form.percentile25" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P25"><el-input-number v-model="form.percentile25" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="10">
           <el-col :span="8">
-            <el-form-item label="P50"><el-input-number v-model="form.percentile50" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P50"><el-input-number v-model="form.percentile50" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="P75"><el-input-number v-model="form.percentile75" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P75"><el-input-number v-model="form.percentile75" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="P85"><el-input-number v-model="form.percentile85" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P85"><el-input-number v-model="form.percentile85" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
         </el-row>
         <el-row :gutter="10">
           <el-col :span="8">
-            <el-form-item label="P95"><el-input-number v-model="form.percentile95" :min="0" :max="100" style="width:100%"/></el-form-item>
+            <el-form-item label="P95"><el-input-number v-model="form.percentile95" :min="0" :max="100" class="full-width"/></el-form-item>
           </el-col>
           <el-col :span="16">
             <el-form-item label="数据来源"><el-input v-model="form.source" placeholder="如: 中国九市儿童生长发育标准"/></el-form-item>
@@ -117,9 +117,9 @@
     </el-dialog>
 
     <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 slot="footer">
         <el-button type="primary" @click="handleContinue">继续添加</el-button>
@@ -244,4 +244,17 @@ export default {
     }
   }
 }
-</script>
+</script>
+
+<style scoped>
+.norm-config { padding: 20px; }
+.filter-bar { display: flex; gap: 10px; align-items: center; }
+/* == C 批内联清理工具类 == */
+.w-200 { width: 200px; }
+.w-120 { width: 120px; }
+.full-width { width: 100%; }
+.form-hint { font-size: 12px; 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>