zlwu 6 달 전
부모
커밋
8370375bf3

+ 16 - 1
web-admin/src/App.vue

@@ -76,6 +76,10 @@
   ]
 
   const panelTitleClassList = panelTitleIconByText.map(([, cls]) => cls)
+  const panelTitleBarClass = 'title-bar-heading'
+  const panelTitleBarTextRules: RegExp[] = [
+    /(分类列表|单位列表|商品列表|参数列表|用户列表|区域列表|区域与询报价概览|报价管理|订单列表|待结算订单|结算单记录|配送任务列表|预警列表|订单设置|客服设置|请求列表)/
+  ]
 
   const refreshPanelTitleIcons = () => {
     const headings = document.querySelectorAll<HTMLHeadingElement>(
@@ -83,6 +87,18 @@
     )
 
     headings.forEach((h2) => {
+      const text = (h2.textContent || '').replace(/\s+/g, '')
+      const useBar = panelTitleBarTextRules.some((rule) => rule.test(text))
+
+      if (useBar) {
+        h2.querySelector('.title-ic')?.remove()
+        panelTitleClassList.forEach((className) => h2.classList.remove(className))
+        h2.classList.add(panelTitleBarClass)
+        return
+      }
+
+      h2.classList.remove(panelTitleBarClass)
+
       // 已手写 title-ic(例如 delivery-demo)则不干预
       if (h2.querySelector('.title-ic')) return
 
@@ -94,7 +110,6 @@
 
       // 根据标题文本匹配图标类型
       panelTitleClassList.forEach((className) => h2.classList.remove(className))
-      const text = (h2.textContent || '').replace(/\s+/g, '')
       const matched = panelTitleIconByText.find(([rule]) => rule.test(text))
       if (matched) h2.classList.add(matched[1])
     })

+ 17 - 0
web-admin/src/assets/styles/core/app.scss

@@ -388,6 +388,23 @@ body {
     mask: var(--panel-title-icon-mask) center / contain no-repeat;
     -webkit-mask: var(--panel-title-icon-mask) center / contain no-repeat;
   }
+
+  h2.title-bar-heading {
+    gap: 8px;
+  }
+
+  h2.title-bar-heading .title-ic {
+    display: none !important;
+  }
+
+  h2.title-bar-heading::before {
+    content: '';
+    width: 4px;
+    height: 14px;
+    border-radius: 999px;
+    background: var(--mint-primary, #10b981);
+    flex-shrink: 0;
+  }
 }
 
 .page-container .panel-top h2.auto-title-operation,

+ 13 - 8
web-admin/src/components/settlement/SettlementSheetDetailPanel.vue

@@ -100,6 +100,9 @@
                   </div>
                 </template>
               </el-table-column>
+              <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                <template #default="{ row: line }">{{ line.supplierName || '—' }}</template>
+              </el-table-column>
               <el-table-column label="计量" width="88" align="center">
                 <template #default="{ row: line }">{{ formatMeasureValue(line.measureValue) }}</template>
               </el-table-column>
@@ -107,20 +110,22 @@
               <el-table-column label="数量" width="88" align="right">
                 <template #default="{ row: line }">{{ formatQty(line.quantity) }}</template>
               </el-table-column>
-              <el-table-column label="供货单价(元)" width="110" align="right">
-                <template #default="{ row: line }">{{ formatAmount(line.supplierUnitPrice) }}</template>
+              <el-table-column label="供货价" width="110" align="right">
+                <template #default="{ row: line }">¥{{ formatAmount(line.supplierUnitPrice) }}</template>
               </el-table-column>
-              <el-table-column label="供货金额(元)" width="110" align="right">
+              <el-table-column label="供货金额" width="110" align="right">
                 <template #default="{ row: line }">
-                  <span class="amount-text">{{ formatAmount(line.supplierAmount) }}</span>
+                  <span class="amount-text">¥{{ formatAmount(line.supplierAmount) }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="售价单价(元)" width="110" align="right">
-                <template #default="{ row: line }">{{ formatAmount(line.sellingUnitPrice) }}</template>
+              <el-table-column label="商品售价" width="110" align="right">
+                <template #default="{ row: line }"
+                  >¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template
+                >
               </el-table-column>
-              <el-table-column label="售出金额(元)" width="110" align="right">
+              <el-table-column label="商品金额" width="110" align="right">
                 <template #default="{ row: line }">
-                  <span class="amount-text">{{ formatAmount(line.sellingAmount) }}</span>
+                  <span class="amount-text">¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</span>
                 </template>
               </el-table-column>
               </el-table>

+ 2 - 7
web-admin/src/views/system/api-request-log/index.vue

@@ -8,12 +8,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>
-          <span class="title-ic" aria-hidden="true">
-            <el-icon><Operation /></el-icon>
-          </span>
-          请求列表
-        </h2>
+        <h2 class="title-bar-heading">请求列表</h2>
       </div>
       <div class="filter-block">
       <el-form :model="searchForm" class="filter-form" label-position="top" @submit.prevent>
@@ -133,7 +128,7 @@
 </template>
 <script setup lang="ts">
   import { ref, reactive, onMounted } from 'vue'
-  import { Close, Operation } from '@element-plus/icons-vue'
+  import { Close } from '@element-plus/icons-vue'
   import { fetchApiRequestLogList } from '@/api/business'
   defineOptions({ name: 'ApiRequestLog' })
   const searchForm = reactive({

+ 2 - 5
web-admin/src/views/system/category/index.vue

@@ -9,10 +9,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>分类列表</span>
-        </h2>
+        <h2 class="title-bar-heading">分类列表</h2>
       </div>
 
     <div class="filter-block">
@@ -420,7 +417,7 @@
   import { ref, reactive, onMounted, nextTick, watch, computed } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
   import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
-  import { Plus, Search, Rank, Close, Check, Setting } from '@element-plus/icons-vue'
+  import { Plus, Search, Rank, Close, Check } from '@element-plus/icons-vue'
   import { VueDraggable as draggable } from 'vue-draggable-plus'
   import type { UploadFile } from 'element-plus'
   import {

+ 24 - 21
web-admin/src/views/system/client-settlement/index.vue

@@ -22,10 +22,7 @@
       <el-tab-pane label="待结算订单" name="pending">
         <section class="panel">
           <div class="panel-top">
-            <h2>
-              <el-icon class="title-ic"><Setting /></el-icon>
-              <span>待结算订单</span>
-            </h2>
+            <h2 class="title-bar-heading">待结算订单</h2>
           </div>
 
           <div class="stats-row stats-row--compact">
@@ -138,22 +135,29 @@
                         </div>
                       </template>
                     </el-table-column>
+                    <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                      <template #default="{ row: line }">{{ line.supplierName || '-' }}</template>
+                    </el-table-column>
                     <el-table-column label="计量" width="88" align="center">
                       <template #default="{ row: line }">{{ formatMeasureCell(line.measureValue) }}</template>
                     </el-table-column>
                     <el-table-column prop="unitName" label="单位" width="70" align="center" />
                     <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                    <el-table-column label="供货单价(元)" min-width="110" align="right">
+                    <el-table-column label="供货价" min-width="110" align="right">
                       <template #default="{ row: line }">¥{{ formatAmount(line.supplierUnitPrice) }}</template>
                     </el-table-column>
-                    <el-table-column label="供货金额(元)" min-width="110" align="right">
+                    <el-table-column label="供货金额" min-width="110" align="right">
                       <template #default="{ row: line }">¥{{ formatAmount(line.supplierAmount) }}</template>
                     </el-table-column>
-                    <el-table-column label="售价单价(元)" min-width="110" align="right">
-                      <template #default="{ row: line }">¥{{ formatAmount(line.sellingUnitPrice) }}</template>
+                    <el-table-column label="商品售价" min-width="110" align="right">
+                      <template #default="{ row: line }"
+                        >¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template
+                      >
                     </el-table-column>
-                    <el-table-column label="售出金额(元)" min-width="110" align="right">
-                      <template #default="{ row: line }">¥{{ formatAmount(line.sellingAmount) }}</template>
+                    <el-table-column label="商品金额" min-width="110" align="right">
+                      <template #default="{ row: line }"
+                        >¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</template
+                      >
                     </el-table-column>
                     </el-table>
                     <div class="order-row-expand-summary sqxp-subtable-summary">
@@ -256,10 +260,7 @@
       <el-tab-pane label="结算单记录" name="sheets">
         <section class="panel">
           <div class="panel-top">
-            <h2>
-              <el-icon class="title-ic"><Setting /></el-icon>
-              <span>结算单记录</span>
-            </h2>
+            <h2 class="title-bar-heading">结算单记录</h2>
           </div>
 
           <el-card shadow="never" class="sheet-main-card" v-loading="sheetLoading">
@@ -347,6 +348,9 @@
                                 </div>
                               </template>
                             </el-table-column>
+                            <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                              <template #default="{ row: line }">{{ line.supplierName || '-' }}</template>
+                            </el-table-column>
                             <el-table-column label="计量" width="88" align="center">
                               <template #default="{ row: line }">{{
                                 formatMeasureCell(line.measureValue)
@@ -354,24 +358,24 @@
                             </el-table-column>
                             <el-table-column prop="unitName" label="单位" width="70" align="center" />
                             <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                            <el-table-column label="供货单价(元)" min-width="110" align="right">
+                            <el-table-column label="供货价" min-width="110" align="right">
                               <template #default="{ row: line }"
                                 >¥{{ formatAmount(line.supplierUnitPrice) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="供货金额(元)" min-width="110" align="right">
+                            <el-table-column label="供货金额" min-width="110" align="right">
                               <template #default="{ row: line }"
                                 >¥{{ formatAmount(line.supplierAmount) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="售价单价(元)" min-width="110" align="right">
+                            <el-table-column label="商品售价" min-width="110" align="right">
                               <template #default="{ row: line }"
-                                >¥{{ formatAmount(line.sellingUnitPrice) }}</template
+                                >¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="售出金额(元)" min-width="110" align="right">
+                            <el-table-column label="商品金额" min-width="110" align="right">
                               <template #default="{ row: line }"
-                                >¥{{ formatAmount(line.sellingAmount) }}</template
+                                >¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</template
                               >
                             </el-table-column>
                             </el-table>
@@ -598,7 +602,6 @@
 <script setup lang="ts">
   import { computed, nextTick, onMounted, reactive, ref } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
-  import { Setting } from '@element-plus/icons-vue'
   import {
     fetchCreateClientSettlement,
     fetchClientSettlementOrderList,

+ 71 - 22
web-admin/src/views/system/delivery-warning/index.vue

@@ -8,12 +8,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>
-          <span class="title-ic" aria-hidden="true">
-            <el-icon><Bell /></el-icon>
-          </span>
-          预警列表
-        </h2>
+        <h2 class="title-bar-heading">预警列表</h2>
       </div>
 
       <div class="filter-block">
@@ -37,6 +32,7 @@
             </el-form-item>
           </div>
           <div class="filter-actions-row">
+            <span class="filter-hint">支持按预警类型与处理状态快速筛选。</span>
             <div class="filter-actions-end">
               <el-button class="btn-ghost auto-icon-refresh" @click="handleReset">重置</el-button>
               <el-button class="btn-main auto-icon-search" type="primary" @click="handleSearch">搜索</el-button>
@@ -81,21 +77,45 @@
                           {{ formatCategoryPathLabel(line.categoryId ?? line.category_id, line.categoryName) }}
                         </template>
                       </el-table-column>
+                      <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                        <template #default="{ row: line }">{{ line.supplierName || '-' }}</template>
+                      </el-table-column>
                       <el-table-column label="计量" width="88" align="center">
                         <template #default="{ row: line }">{{ formatMeasureCell(line.measureValue) }}</template>
                       </el-table-column>
                       <el-table-column prop="unitName" label="单位" width="70" align="center" />
                       <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                      <el-table-column label="单价(元)" min-width="110" align="right">
+                      <el-table-column label="供货价" min-width="110" align="right">
+                        <template #default="{ row: line }">
+                          <span v-if="line.supplierUnitPrice == null || line.supplierUnitPrice === ''">-</span>
+                          <span v-else>¥{{ formatMoney(line.supplierUnitPrice) }}</span>
+                        </template>
+                      </el-table-column>
+                      <el-table-column label="供货金额" min-width="110" align="right">
+                        <template #default="{ row: line }">
+                          <span v-if="line.supplierAmount == null || line.supplierAmount === ''">-</span>
+                          <span v-else>¥{{ formatMoney(line.supplierAmount) }}</span>
+                        </template>
+                      </el-table-column>
+                      <el-table-column label="商品售价" min-width="110" align="right">
                         <template #default="{ row: line }">
-                          <span v-if="line.unitPrice == null || line.unitPrice === ''">-</span>
-                          <span v-else>¥{{ formatMoney(line.unitPrice) }}</span>
+                          <span
+                            v-if="
+                              (line.sellingUnitPrice ?? line.unitPrice) == null ||
+                              (line.sellingUnitPrice ?? line.unitPrice) === ''
+                            "
+                            >-</span
+                          >
+                          <span v-else>¥{{ formatMoney(line.sellingUnitPrice ?? line.unitPrice) }}</span>
                         </template>
                       </el-table-column>
-                      <el-table-column label="金额(元)" min-width="110" align="right">
+                      <el-table-column label="商品金额" min-width="110" align="right">
                         <template #default="{ row: line }">
-                          <span v-if="line.amount == null || line.amount === ''">-</span>
-                          <span v-else>¥{{ formatMoney(line.amount) }}</span>
+                          <span
+                            v-if="(line.sellingAmount ?? line.amount) == null || (line.sellingAmount ?? line.amount) === ''"
+                            >-</span
+                          >
+                          <span v-else>¥{{ formatMoney(line.sellingAmount ?? line.amount) }}</span>
                         </template>
                       </el-table-column>
                       <el-table-column prop="status" label="状态" min-width="100" align="center">
@@ -299,21 +319,39 @@
               {{ formatCategoryPathLabel(row.categoryId ?? row.category_id, row.categoryName) }}
             </template>
           </el-table-column>
+          <el-table-column prop="supplierName" label="供货商" min-width="120" align="center" show-overflow-tooltip>
+            <template #default="{ row }">{{ row.supplierName || '-' }}</template>
+          </el-table-column>
           <el-table-column label="计量" width="88" align="center">
             <template #default="{ row }">{{ formatMeasureCell(row.measureValue) }}</template>
           </el-table-column>
           <el-table-column prop="unitName" label="单位" width="70" align="center" />
           <el-table-column prop="quantity" label="数量" width="80" align="center" />
-          <el-table-column label="单价(元)" min-width="110" align="center">
+          <el-table-column label="供货价" min-width="110" align="center">
+            <template #default="{ row }">
+              <span v-if="row.supplierUnitPrice == null || row.supplierUnitPrice === ''">-</span>
+              <span v-else>¥{{ formatMoney(row.supplierUnitPrice) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="供货金额" min-width="110" align="center">
+            <template #default="{ row }">
+              <span v-if="row.supplierAmount == null || row.supplierAmount === ''">-</span>
+              <span v-else>¥{{ formatMoney(row.supplierAmount) }}</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="商品售价" min-width="110" align="center">
             <template #default="{ row }">
-              <span v-if="row.unitPrice == null || row.unitPrice === ''">-</span>
-              <span v-else>¥{{ formatMoney(row.unitPrice) }}</span>
+              <span
+                v-if="(row.sellingUnitPrice ?? row.unitPrice) == null || (row.sellingUnitPrice ?? row.unitPrice) === ''"
+                >-</span
+              >
+              <span v-else>¥{{ formatMoney(row.sellingUnitPrice ?? row.unitPrice) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="金额(元)" min-width="110" align="center">
+          <el-table-column label="商品金额" min-width="110" align="center">
             <template #default="{ row }">
-              <span v-if="row.amount == null || row.amount === ''">-</span>
-              <span v-else>¥{{ formatMoney(row.amount) }}</span>
+              <span v-if="(row.sellingAmount ?? row.amount) == null || (row.sellingAmount ?? row.amount) === ''">-</span>
+              <span v-else>¥{{ formatMoney(row.sellingAmount ?? row.amount) }}</span>
             </template>
           </el-table-column>
           <el-table-column prop="status" label="状态" min-width="100" align="center">
@@ -362,7 +400,7 @@
 <script setup lang="ts">
   import { ref, reactive, onMounted } from 'vue'
   import { ElMessage } from 'element-plus'
-  import { Bell, Check, Close } from '@element-plus/icons-vue'
+  import { Check, Close } from '@element-plus/icons-vue'
   import { fetchDeliveryWarningList, fetchResolveWarning, fetchDeliveryWarningDetail, fetchDeliveryDetail } from '@/api/business'
   import { ensureCategoryPathDataLoaded, formatCategoryPathLabel } from '@/utils/category-path-display'
   defineOptions({ name: 'DeliveryWarning' })
@@ -547,7 +585,7 @@
 }
 
 .filter-form :deep(.el-form-item__label) {
-  font-size: 13px;
+  font-size: 11px;
   font-weight: 500;
   color: var(--mint-text-muted, #64748b);
   padding-bottom: 4px;
@@ -556,13 +594,17 @@
 
 .filter-grid {
   display: grid;
-  grid-template-columns: repeat(3, minmax(0, 1fr));
+  grid-template-columns: repeat(2, minmax(0, 1fr));
   gap: 10px 14px;
 }
 
 .filter-actions-row {
   display: flex;
-  justify-content: flex-end;
+  align-items: center;
+  justify-content: space-between;
+  gap: 10px;
+  flex-wrap: wrap;
+  padding-top: 10px;
   margin-top: 10px;
 }
 
@@ -572,6 +614,13 @@
   gap: 8px;
 }
 
+.filter-hint {
+  margin: 0;
+  font-size: 11px;
+  color: var(--mint-text-muted, #64748b);
+  line-height: 1.35;
+}
+
 .delivery-warning-table :deep(th.el-table__cell > .cell),
 .delivery-warning-table :deep(td.el-table__cell > .cell) {
   display: flex;

+ 27 - 18
web-admin/src/views/system/delivery/index.vue

@@ -7,10 +7,7 @@
     </div>
     <section class="panel">
       <div class="panel-top">
-        <h2>
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>配送任务列表</span>
-        </h2>
+        <h2 class="title-bar-heading">配送任务列表</h2>
       </div>
 
       <div class="filter-block">
@@ -85,25 +82,25 @@
                       </div>
                     </template>
                   </el-table-column>
-                  <el-table-column prop="supplierName" label="供应商" min-width="120" />
+                  <el-table-column prop="supplierName" label="供货商" min-width="120" />
                   <el-table-column label="计量" width="88" align="center">
                     <template #default="{ row: line }">{{ formatMeasureCell(line.measureValue) }}</template>
                   </el-table-column>
                   <el-table-column prop="unitName" label="单位" width="70" align="center" />
                   <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                  <el-table-column label="供货单价(元)" min-width="110" align="right">
+                  <el-table-column label="供货价" min-width="110" align="right">
                     <template #default="{ row: line }">
                       <span v-if="line.supplierUnitPrice == null || line.supplierUnitPrice === ''">-</span>
                       <span v-else>¥{{ formatMoney(line.supplierUnitPrice) }}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column label="供货金额(元)" min-width="110" align="right">
+                  <el-table-column label="供货金额" min-width="110" align="right">
                     <template #default="{ row: line }">
                       <span v-if="line.supplierAmount == null || line.supplierAmount === ''">-</span>
                       <span v-else>¥{{ formatMoney(line.supplierAmount) }}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column label="售价单价(元)" min-width="110" align="right">
+                  <el-table-column label="商品售价" min-width="110" align="right">
                     <template #default="{ row: line }">
                       <span
                         v-if="
@@ -115,7 +112,7 @@
                       <span v-else>¥{{ formatMoney(line.sellingUnitPrice ?? line.unitPrice) }}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column label="售出金额(元)" min-width="110" align="right">
+                  <el-table-column label="商品金额" min-width="110" align="right">
                     <template #default="{ row: line }">
                       <span
                         v-if="(line.sellingAmount ?? line.amount) == null || (line.sellingAmount ?? line.amount) === ''"
@@ -145,7 +142,7 @@
       <el-table-column prop="deliverPhone" label="电话" min-width="120">
         <template #default="{ row }">{{ row.deliverPhone || '-' }}</template>
       </el-table-column>
-      <el-table-column prop="supplierName" label="供应商" min-width="150" show-overflow-tooltip />
+      <el-table-column prop="supplierName" label="供货商" min-width="150" show-overflow-tooltip />
       <el-table-column prop="regionName" label="区域" min-width="100" />
       <el-table-column prop="clientName" label="客户" min-width="140" show-overflow-tooltip>
         <template #default="{ row }">{{ row.clientName || '-' }}</template>
@@ -390,11 +387,15 @@
                 {{ formatOrderCategory(row) }}
               </template>
             </el-table-column>
-            <el-table-column label="商品计量" width="100" align="center">
+            <el-table-column prop="supplierName" label="供货商" min-width="120" align="center" show-overflow-tooltip>
+              <template #default="{ row }">{{ row.supplierName || '-' }}</template>
+            </el-table-column>
+            <el-table-column label="计量" width="100" align="center">
               <template #default="{ row }">{{ formatMeasureCell(row.measureValue) }}</template>
             </el-table-column>
             <el-table-column prop="unitName" label="单位" min-width="72" align="center" />
-            <el-table-column prop="supplierUnitPrice" label="供货单价(元)" min-width="110" align="center">
+            <el-table-column prop="quantity" label="数量" min-width="88" align="center" />
+            <el-table-column label="供货价" min-width="110" align="center">
               <template #default="{ row }">
                 {{
                   row.supplierUnitPrice != null && row.supplierUnitPrice !== ''
@@ -403,22 +404,30 @@
                 }}
               </template>
             </el-table-column>
-            <el-table-column prop="supplierAmount" label="供货金额(元)" min-width="110" align="center">
+            <el-table-column label="供货金额" min-width="110" align="center">
               <template #default="{ row }">
                 {{ row.supplierAmount != null && row.supplierAmount !== '' ? `¥${formatMoney(row.supplierAmount)}` : '-' }}
               </template>
             </el-table-column>
-            <el-table-column prop="unitPrice" label="单价(元)" min-width="100" align="center">
+            <el-table-column label="商品售价" min-width="110" align="center">
               <template #default="{ row }">
-                {{ row.unitPrice != null && row.unitPrice !== '' ? `¥${formatMoney(row.unitPrice)}` : '-' }}
+                {{
+                  (row.sellingUnitPrice ?? row.unitPrice) != null && (row.sellingUnitPrice ?? row.unitPrice) !== ''
+                    ? `¥${formatMoney(row.sellingUnitPrice ?? row.unitPrice)}`
+                    : '-'
+                }}
               </template>
             </el-table-column>
-            <el-table-column prop="amount" label="金额(元)" min-width="100" align="center">
+            <el-table-column label="商品金额" min-width="110" align="center">
               <template #default="{ row }">
-                {{ row.amount != null && row.amount !== '' ? `¥${formatMoney(row.amount)}` : '-' }}
+                {{
+                  (row.sellingAmount ?? row.amount) != null && (row.sellingAmount ?? row.amount) !== ''
+                    ? `¥${formatMoney(row.sellingAmount ?? row.amount)}`
+                    : '-'
+                }}
               </template>
             </el-table-column>
-            <el-table-column prop="quantity" label="配送数量" min-width="96" align="center" />
+            <el-table-column prop="deliveredQuantity" label="配送数量" min-width="96" align="center" />
             <el-table-column prop="status" label="明细状态" min-width="100" align="center">
               <template #default="{ row }">
                 <el-tag :type="getItemStatusType(row.status)" size="small">{{ getItemStatusText(row.status) }}</el-tag>

+ 11 - 7
web-admin/src/views/system/inquiry-quotation/index.vue

@@ -7,10 +7,7 @@
 
     <section class="panel iq-panel">
       <div class="panel-top">
-        <h2>
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>区域与询报价概览</span>
-        </h2>
+        <h2 class="title-bar-heading">区域与询报价概览</h2>
       </div>
 
     <!-- 区域切换(按钮组) -->
@@ -36,7 +33,7 @@
         <template #header>
           <div class="card-header">
             <div class="title">
-              <el-icon class="title-ic"><Setting /></el-icon>
+              <span class="title-bar-marker" aria-hidden="true"></span>
               <span>询价管理</span>
               <el-tag v-if="publishedInquiry" type="success" size="small" class="ml-2">当前发布中</el-tag>
             </div>
@@ -102,7 +99,7 @@
         <template #header>
           <div class="card-header">
             <div class="title">
-              <el-icon class="title-ic"><Setting /></el-icon>
+              <span class="title-bar-marker" aria-hidden="true"></span>
               <span>报价管理</span>
               <span v-if="selectedInquiry" class="subtitle">(当前询价:{{ selectedInquiry.title }})</span>
             </div>
@@ -1169,7 +1166,7 @@
 <script setup lang="ts">
 import { computed, nextTick, onMounted, reactive, ref, watch } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { ArrowDown, ArrowUp, Check, Close, Plus, RefreshLeft, Search, Setting } from '@element-plus/icons-vue'
+import { ArrowDown, ArrowUp, Check, Close, Plus, RefreshLeft, Search } from '@element-plus/icons-vue'
 import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
 import type { FormInstance, FormRules } from 'element-plus'
 import { fetchActiveRegions, fetchCategoryTree, fetchProductList } from '@/api/admin'
@@ -2871,6 +2868,13 @@ onMounted(async () => {
   gap: 8px;
   font-weight: 600;
 }
+.title-bar-marker {
+  width: 4px;
+  height: 14px;
+  border-radius: 999px;
+  background: var(--mint-primary, #10b981);
+  flex-shrink: 0;
+}
 .subtitle {
   margin-left: 8px;
   color: var(--el-color-primary);

+ 49 - 58
web-admin/src/views/system/order/index.vue

@@ -8,10 +8,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>订单列表</span>
-        </h2>
+        <h2 class="title-bar-heading">订单列表</h2>
       </div>
 
       <div class="filter-block">
@@ -134,22 +131,22 @@
                     </div>
                   </template>
                 </el-table-column>
-                <el-table-column prop="supplierName" label="供应商" min-width="120" />
+                <el-table-column prop="supplierName" label="供货商" min-width="120" />
                 <el-table-column label="计量" width="88" align="center">
                   <template #default="{ row: line }">{{ formatMeasureCell(line.measureValue) }}</template>
                 </el-table-column>
                 <el-table-column prop="unitName" label="单位" width="70" align="center" />
                 <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                <el-table-column label="供货单价(元)" min-width="110" align="right">
+                <el-table-column label="供货价" min-width="110" align="right">
                   <template #default="{ row: line }">¥{{ formatAmount(line.supplierUnitPrice) }}</template>
                 </el-table-column>
-                <el-table-column label="供货金额(元)" min-width="110" align="right">
+                <el-table-column label="供货金额" min-width="110" align="right">
                   <template #default="{ row: line }">¥{{ formatAmount(line.supplierAmount) }}</template>
                 </el-table-column>
-                <el-table-column label="售价单价(元)" min-width="110" align="right">
+                <el-table-column label="商品售价" min-width="110" align="right">
                   <template #default="{ row: line }">¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template>
                 </el-table-column>
-                <el-table-column label="售出金额(元)" min-width="110" align="right">
+                <el-table-column label="商品金额" min-width="110" align="right">
                   <template #default="{ row: line }">¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</template>
                 </el-table-column>
               </el-table>
@@ -419,22 +416,22 @@
                 {{ formatOrderCategory(row) }}
               </template>
             </el-table-column>
-            <el-table-column label="商品计量" width="100" align="center">
+            <el-table-column prop="supplierName" label="供货商" min-width="130" align="center" />
+            <el-table-column label="计量" width="100" align="center">
               <template #default="{ row }">{{ formatMeasureCell(row.measureValue) }}</template>
             </el-table-column>
             <el-table-column prop="unitName" label="单位" min-width="80" align="center" />
-            <el-table-column prop="supplierName" label="供应商" min-width="130" align="center" />
-            <el-table-column prop="supplierUnitPrice" label="供货单价(元)" min-width="110" align="center">
+            <el-table-column prop="quantity" label="数量" min-width="88" align="center" />
+            <el-table-column prop="supplierUnitPrice" label="供货价" min-width="110" align="center">
               <template #default="{ row }">¥{{ formatAmount(row.supplierUnitPrice) }}</template>
             </el-table-column>
-            <el-table-column prop="sellingUnitPrice" label="售价单价(元)" min-width="110" align="center">
-              <template #default="{ row }">¥{{ formatAmount(row.sellingUnitPrice ?? row.unitPrice) }}</template>
-            </el-table-column>
-            <el-table-column prop="quantity" label="数量" min-width="88" align="center" />
-            <el-table-column prop="supplierAmount" label="供货金额(元)" min-width="110" align="center">
+            <el-table-column prop="supplierAmount" label="供货金额" min-width="110" align="center">
               <template #default="{ row }">¥{{ formatAmount(row.supplierAmount) }}</template>
             </el-table-column>
-            <el-table-column prop="sellingAmount" label="售出金额(元)" min-width="110" align="center">
+            <el-table-column prop="sellingUnitPrice" label="商品售价" min-width="110" align="center">
+              <template #default="{ row }">¥{{ formatAmount(row.sellingUnitPrice ?? row.unitPrice) }}</template>
+            </el-table-column>
+            <el-table-column prop="sellingAmount" label="商品金额" min-width="110" align="center">
               <template #default="{ row }">¥{{ formatAmount(row.sellingAmount ?? row.amount) }}</template>
             </el-table-column>
             <el-table-column
@@ -923,12 +920,24 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column label="计量单位" min-width="110" align="center">
-          <template #default="{ row }">
-            {{ formatMeasureWithUnit(row) }}
-          </template>
+        <el-table-column prop="supplierName" label="供货商" min-width="130" align="center" />
+        <el-table-column label="计量" min-width="88" align="center">
+          <template #default="{ row }">{{ formatMeasureCell(row.measureValue) }}</template>
+        </el-table-column>
+        <el-table-column prop="unitName" label="单位" min-width="88" align="center" />
+        <el-table-column prop="quantity" label="数量" min-width="100" align="center" />
+        <el-table-column label="供货价" min-width="110" align="center">
+          <template #default="{ row }">¥{{ formatAmount(row.supplierUnitPrice) }}</template>
+        </el-table-column>
+        <el-table-column label="供货金额" min-width="110" align="center">
+          <template #default="{ row }">¥{{ formatAmount(row.supplierAmount) }}</template>
+        </el-table-column>
+        <el-table-column label="商品售价" min-width="110" align="center">
+          <template #default="{ row }">¥{{ formatAmount(row.sellingUnitPrice ?? row.unitPrice) }}</template>
+        </el-table-column>
+        <el-table-column label="商品金额" min-width="110" align="center">
+          <template #default="{ row }">¥{{ formatAmount(row.sellingAmount ?? row.amount) }}</template>
         </el-table-column>
-        <el-table-column prop="quantity" label="原数量" min-width="100" align="center" />
         <el-table-column label="新数量" min-width="140" align="center">
           <template #default="{ row }">
             <el-input-number
@@ -940,27 +949,6 @@
             />
           </template>
         </el-table-column>
-        <el-table-column prop="supplierName" label="供应商" min-width="130" align="center" />
-        <el-table-column prop="supplierUnitPrice" label="供货单价(元)" min-width="110" align="center">
-          <template #default="{ row }">¥{{ formatAmount(row.supplierUnitPrice) }}</template>
-        </el-table-column>
-        <el-table-column prop="unitPrice" label="售价单价(元)" min-width="110" align="center">
-          <template #default="{ row }">¥{{ formatAmount(row.unitPrice) }}</template>
-        </el-table-column>
-        <el-table-column label="供货金额(元)" min-width="120" align="center">
-          <template #default="{ row }">
-            ¥{{
-              formatAmount(
-                Number(row.newQuantity ?? row.quantity ?? 0) * Number(row.supplierUnitPrice || 0)
-              )
-            }}
-          </template>
-        </el-table-column>
-        <el-table-column label="售出金额(元)" min-width="120" align="center">
-          <template #default="{ row }">
-            ¥{{ formatAmount(Number(row.newQuantity ?? row.quantity ?? 0) * Number(row.unitPrice || 0)) }}
-          </template>
-        </el-table-column>
       </el-table>
       <el-form :model="adjustAddressForm" label-width="100px" class="mt-4">
         <el-form-item label="收货地址">
@@ -1081,24 +1069,36 @@
             align="center"
             show-overflow-tooltip
           />
+          <el-table-column label="供货商" min-width="120" align="center">
+            <template #default>{{ orderPriceVersionDetail?.supplierName || '-' }}</template>
+          </el-table-column>
           <el-table-column label="计量" width="88" align="center">
             <template #default="{ row }">{{ formatMeasureCell(row.measureValue) }}</template>
           </el-table-column>
           <el-table-column prop="unitName" label="单位" min-width="72" align="center" />
-          <el-table-column label="供应商报价(元)" min-width="130" align="center">
+          <el-table-column label="数量" min-width="80" align="center">
+            <template #default>-</template>
+          </el-table-column>
+          <el-table-column label="供货价" min-width="110" align="center">
             <template #default="{ row }">
               <span v-if="!orderPriceVersionDetail?.quotationId">-</span>
               <span v-else>¥{{ (Number(row.supplierPrice || 0) || 0).toFixed(2) }}</span>
             </template>
           </el-table-column>
-          <el-table-column label="调价系数(%)" min-width="110" align="center">
+          <el-table-column label="供货金额" min-width="110" align="center">
+            <template #default>-</template>
+          </el-table-column>
+          <el-table-column label="商品售价" min-width="110" align="center">
             <template #default="{ row }"
-              >{{ (Number(row.pricingCoefficient) || 0).toFixed(2) }}%</template
+              >¥{{ (Number(row.finalPrice ?? row.price) || 0).toFixed(2) }}</template
             >
           </el-table-column>
-          <el-table-column label="最终售价(元)" min-width="120" align="center">
+          <el-table-column label="商品金额" min-width="110" align="center">
+            <template #default>-</template>
+          </el-table-column>
+          <el-table-column label="调价系数(%)" min-width="110" align="center">
             <template #default="{ row }"
-              >¥{{ (Number(row.finalPrice ?? row.price) || 0).toFixed(2) }}</template
+              >{{ (Number(row.pricingCoefficient) || 0).toFixed(2) }}%</template
             >
           </el-table-column>
         </el-table>
@@ -1197,15 +1197,6 @@
     return n.toFixed(3).replace(/\.?0+$/, '')
   }
 
-  const formatMeasureWithUnit = (row: any) => {
-    const m = formatMeasureCell(row?.measureValue)
-    const u = row?.unitName != null && String(row.unitName).trim() !== '' ? String(row.unitName).trim() : '-'
-    if (m === '-' && u === '-') return '-'
-    if (m === '-') return u
-    if (u === '-') return m
-    return `${m} ${u}`
-  }
-
   /** 订单明细 / 价格版本弹窗:商品名称过长时省略并 tooltip 展示全文 */
   const ORDER_ITEM_PRODUCT_NAME_MAX_LEN = 12
   const formatOrderProductNameDisplay = (name?: string | null) => {

+ 2 - 5
web-admin/src/views/system/parameter/index.vue

@@ -8,10 +8,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <div class="panel-title">
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>参数列表</span>
-        </div>
+        <h2 class="title-bar-heading">参数列表</h2>
       </div>
 
     <div class="filter-block">
@@ -284,7 +281,7 @@
 import { ref, reactive, onMounted, computed } from 'vue'
 import { ElMessage, ElMessageBox, FormInstance, FormRules } from 'element-plus'
 import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
-import { Check, Close, Plus, Setting } from '@element-plus/icons-vue'
+import { Check, Close, Plus } from '@element-plus/icons-vue'
 import {
   fetchProductParameterList,
   fetchCreateProductParameter,

+ 1 - 1
web-admin/src/views/system/product/index.vue

@@ -8,7 +8,7 @@
     </header>
     <div class="panel">
       <div class="panel-top">
-        <h2>商品列表</h2>
+        <h2 class="title-bar-heading">商品列表</h2>
       </div>
       <div class="filter-block">
         <el-form :model="searchForm" class="filter-form" @submit.prevent>

+ 1 - 1
web-admin/src/views/system/region/index.vue

@@ -9,7 +9,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>区域列表</h2>
+        <h2 class="title-bar-heading">区域列表</h2>
       </div>
 
       <div class="filter-block">

+ 25 - 21
web-admin/src/views/system/supplier-settlement/index.vue

@@ -22,10 +22,7 @@
       <el-tab-pane label="待结算订单" name="pending">
         <section class="panel">
           <div class="panel-top">
-            <h2>
-              <el-icon class="title-ic"><Setting /></el-icon>
-              <span>待结算订单</span>
-            </h2>
+            <h2 class="title-bar-heading">待结算订单</h2>
           </div>
 
         <div class="stats-row stats-row--compact">
@@ -135,22 +132,29 @@
                           </div>
                         </template>
                       </el-table-column>
+                      <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                        <template #default="{ row: line }">{{ line.supplierName || '-' }}</template>
+                      </el-table-column>
                       <el-table-column label="计量" width="88" align="center">
                         <template #default="{ row: line }">{{ formatMeasureCell(line.measureValue) }}</template>
                       </el-table-column>
                       <el-table-column prop="unitName" label="单位" width="70" align="center" />
                       <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                      <el-table-column label="供货单价(元)" min-width="110" align="right">
+                      <el-table-column label="供货价" min-width="110" align="right">
                         <template #default="{ row: line }">¥{{ formatAmount(line.supplierUnitPrice) }}</template>
                       </el-table-column>
-                      <el-table-column label="供货金额(元)" min-width="110" align="right">
+                      <el-table-column label="供货金额" min-width="110" align="right">
                         <template #default="{ row: line }">¥{{ formatAmount(line.supplierAmount) }}</template>
                       </el-table-column>
-                      <el-table-column label="售价单价(元)" min-width="110" align="right">
-                        <template #default="{ row: line }">¥{{ formatAmount(line.sellingUnitPrice) }}</template>
+                      <el-table-column label="商品售价" min-width="110" align="right">
+                        <template #default="{ row: line }"
+                          >¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template
+                        >
                       </el-table-column>
-                      <el-table-column label="售出金额(元)" min-width="110" align="right">
-                        <template #default="{ row: line }">¥{{ formatAmount(line.sellingAmount) }}</template>
+                      <el-table-column label="商品金额" min-width="110" align="right">
+                        <template #default="{ row: line }"
+                          >¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</template
+                        >
                       </el-table-column>
                     </el-table>
                     <div class="order-row-expand-summary sqxp-subtable-summary">
@@ -254,10 +258,7 @@
       <el-tab-pane label="结算单记录" name="sheets">
         <section class="panel">
           <div class="panel-top">
-            <h2>
-              <el-icon class="title-ic"><Setting /></el-icon>
-              <span>结算单记录</span>
-            </h2>
+            <h2 class="title-bar-heading">结算单记录</h2>
           </div>
         <el-card shadow="never" class="sheet-main-card" v-loading="sheetLoading">
           <div class="filter-block">
@@ -344,6 +345,9 @@
                                 </div>
                               </template>
                             </el-table-column>
+                            <el-table-column prop="supplierName" label="供货商" min-width="120" show-overflow-tooltip>
+                              <template #default="{ row: line }">{{ line.supplierName || '-' }}</template>
+                            </el-table-column>
                             <el-table-column label="计量" width="88" align="center">
                               <template #default="{ row: line }">{{
                                 formatMeasureCell(line.measureValue)
@@ -351,24 +355,24 @@
                             </el-table-column>
                             <el-table-column prop="unitName" label="单位" width="70" align="center" />
                             <el-table-column prop="quantity" label="数量" width="80" align="right" />
-                            <el-table-column label="供货单价(元)" min-width="110" align="right">
+                            <el-table-column label="供货价" min-width="110" align="right">
                               <template #default="{ row: line }"
                                 >¥{{ formatAmount(line.supplierUnitPrice) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="供货金额(元)" min-width="110" align="right">
+                            <el-table-column label="供货金额" min-width="110" align="right">
                               <template #default="{ row: line }"
                                 >¥{{ formatAmount(line.supplierAmount) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="售价单价(元)" min-width="110" align="right">
+                            <el-table-column label="商品售价" min-width="110" align="right">
                               <template #default="{ row: line }"
-                                >¥{{ formatAmount(line.sellingUnitPrice) }}</template
+                                >¥{{ formatAmount(line.sellingUnitPrice ?? line.unitPrice) }}</template
                               >
                             </el-table-column>
-                            <el-table-column label="售出金额(元)" min-width="110" align="right">
+                            <el-table-column label="商品金额" min-width="110" align="right">
                               <template #default="{ row: line }"
-                                >¥{{ formatAmount(line.sellingAmount) }}</template
+                                >¥{{ formatAmount(line.sellingAmount ?? line.amount) }}</template
                               >
                             </el-table-column>
                             </el-table>
@@ -586,7 +590,7 @@
 <script setup lang="ts">
   import { computed, nextTick, onMounted, reactive, ref } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
-  import { Check, Close, Setting } from '@element-plus/icons-vue'
+  import { Check, Close } from '@element-plus/icons-vue'
   import {
     fetchCreateSupplierSettlement,
     fetchSupplierSettlementOrderList,

+ 3 - 13
web-admin/src/views/system/system-config/index.vue

@@ -8,12 +8,7 @@
 
     <section class="panel settings-panel settings-panel--order">
       <div class="panel-top">
-        <h2>
-          <span class="title-ic" aria-hidden="true">
-            <el-icon><Setting /></el-icon>
-          </span>
-          订单设置
-        </h2>
+        <h2 class="title-bar-heading">订单设置</h2>
       </div>
       <div class="panel-body">
         <el-form :model="orderForm" label-position="top" class="settings-form">
@@ -72,12 +67,7 @@
 
     <section class="panel settings-panel">
       <div class="panel-top">
-        <h2>
-          <span class="title-ic" aria-hidden="true">
-            <el-icon><PhoneFilled /></el-icon>
-          </span>
-          客服设置
-        </h2>
+        <h2 class="title-bar-heading">客服设置</h2>
       </div>
       <div class="panel-body">
         <el-form :model="contactForm" label-position="top" class="settings-form">
@@ -108,7 +98,7 @@
 <script setup lang="ts">
   import { ref, reactive, onMounted } from 'vue'
   import { ElMessage } from 'element-plus'
-  import { Check, PhoneFilled, Setting } from '@element-plus/icons-vue'
+  import { Check } from '@element-plus/icons-vue'
   import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
   import { fetchSystemConfig, fetchUpdateSystemConfig } from '@/api/business'
 

+ 1 - 1
web-admin/src/views/system/unit/index.vue

@@ -9,7 +9,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <h2>单位列表</h2>
+        <h2 class="title-bar-heading">单位列表</h2>
       </div>
 
     <div class="filter-block">

+ 2 - 5
web-admin/src/views/system/user/index.vue

@@ -9,10 +9,7 @@
 
     <section class="panel">
       <div class="panel-top">
-        <div class="panel-title">
-          <el-icon class="title-ic"><Setting /></el-icon>
-          <span>用户列表</span>
-        </div>
+        <h2 class="title-bar-heading">用户列表</h2>
       </div>
 
     <div class="filter-block">
@@ -297,7 +294,7 @@
   import { ref, reactive, onMounted, computed, watch } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
   import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
-  import { Check, Close, Plus, Setting } from '@element-plus/icons-vue'
+  import { Check, Close, Plus } from '@element-plus/icons-vue'
   import {
     fetchUserList,
     fetchCreateUser,