ソースを参照

fix: 修复 Dashboard 白屏、排版优化、站点切换器及 welcome 残留清理

- Dashboard 表格列宽/高度全面优化:用户列表 19 列精简到 9 列核心字段
- 31 个页面表格高度减数统一收窄(280→230),减少底部留白
- 修复 Dashboard 走势图标题与柱状图重叠(grid.top: 50→70)
- 修复图例与坐标轴重叠(grid.right: 20→80)
- 修复首页白屏:API 仅在站点存在时传参,未选站点不请求
- 修复站点切换器无法操作:宽度从 40px 改为自适应
- 修复首次加载 Dashboard 误报「未选站点」:Navbar 选中后写入 sessionStorage + 事件通知
- 清理 welcome 页面残留路由和 VITE_HIDE_HOME 引用

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 4 日 前
コミット
f3571e36dd
37 ファイル変更92 行追加94 行削除
  1. 2 2
      admin-web-new/src/api/stat.ts
  2. 31 6
      admin-web-new/src/layout/components/lay-navbar/index.vue
  3. 1 14
      admin-web-new/src/layout/types.ts
  4. 0 6
      admin-web-new/src/router/index.ts
  5. 1 0
      admin-web-new/src/utils/mitt.ts
  6. 1 1
      admin-web-new/src/views/admin/account/index.vue
  7. 1 1
      admin-web-new/src/views/admin/banner/index.vue
  8. 17 4
      admin-web-new/src/views/admin/dashboard/index.vue
  9. 1 1
      admin-web-new/src/views/admin/department/index.vue
  10. 1 1
      admin-web-new/src/views/admin/dict/index.vue
  11. 1 1
      admin-web-new/src/views/admin/faq/index.vue
  12. 1 1
      admin-web-new/src/views/admin/feedback/index.vue
  13. 1 1
      admin-web-new/src/views/admin/finance/index.vue
  14. 1 1
      admin-web-new/src/views/admin/finance/recharge.vue
  15. 1 1
      admin-web-new/src/views/admin/finance/refund.vue
  16. 1 1
      admin-web-new/src/views/admin/finance/settlement.vue
  17. 1 1
      admin-web-new/src/views/admin/finance/split-record.vue
  18. 1 1
      admin-web-new/src/views/admin/finance/wallet-flow.vue
  19. 1 1
      admin-web-new/src/views/admin/finance/withdraw.vue
  20. 1 1
      admin-web-new/src/views/admin/investor/index.vue
  21. 1 1
      admin-web-new/src/views/admin/log/error.vue
  22. 1 1
      admin-web-new/src/views/admin/log/index.vue
  23. 1 1
      admin-web-new/src/views/admin/message/index.vue
  24. 1 1
      admin-web-new/src/views/admin/notice/index.vue
  25. 1 1
      admin-web-new/src/views/admin/ordering/index.vue
  26. 1 1
      admin-web-new/src/views/admin/parking-coupon-record/index.vue
  27. 1 1
      admin-web-new/src/views/admin/platform/device-config.vue
  28. 1 1
      admin-web-new/src/views/admin/platform/rate.vue
  29. 1 1
      admin-web-new/src/views/admin/role/index.vue
  30. 1 1
      admin-web-new/src/views/admin/station/account.vue
  31. 1 1
      admin-web-new/src/views/admin/station/device.vue
  32. 1 1
      admin-web-new/src/views/admin/station/index.vue
  33. 1 1
      admin-web-new/src/views/admin/station/list.vue
  34. 1 1
      admin-web-new/src/views/admin/statistics/daily-stat.vue
  35. 1 1
      admin-web-new/src/views/admin/statistics/month-stat.vue
  36. 1 1
      admin-web-new/src/views/admin/template/index.vue
  37. 10 32
      admin-web-new/src/views/admin/user/index.vue

+ 2 - 2
admin-web-new/src/api/stat.ts

@@ -3,7 +3,7 @@ import { http } from "@/utils/http";
 /** 获取仪表盘数据 */
 export const getDashboard = (stationId?: string) => {
   return http.request<any>("get", "/stat/dashboard", {
-    params: { stationId }
+    params: stationId ? { stationId } : {}
   });
 };
 
@@ -21,7 +21,7 @@ export const getTrend = (data: {
 /** 获取洗车设备状态 */
 export const getWashDeviceStatus = (stationId?: string) => {
   return http.request<any>("get", "/stat/washDeviceStatus", {
-    params: { stationId }
+    params: stationId ? { stationId } : {}
   });
 };
 

+ 31 - 6
admin-web-new/src/layout/components/lay-navbar/index.vue

@@ -13,6 +13,7 @@ import Setting from "~icons/ri/settings-3-line";
 import Check from "~icons/ep/check";
 import Location from "~icons/ri/map-pin-line";
 import { getStationList } from "@/api/station";
+import { emitter } from "@/utils/mitt";
 import { reactive, computed, onMounted } from "vue";
 
 const {
@@ -60,15 +61,20 @@ const loadStationList = () => {
       if (currentStation) {
         state.currentStationId = currentStation.stationId;
         state.currentStationName = currentStation.stationName;
+        emitter.emit("stationChangeRefresh", currentStation.stationId);
       } else {
-        // 如果保存的站点不在列表中,选择第一个
+        // 如果保存的站点不在列表中,选择第一个并持久化
         state.currentStationId = list[0]?.stationId;
         state.currentStationName = list[0]?.stationName;
+        Session.set("currentStationId", list[0]?.stationId);
+        emitter.emit("stationChangeRefresh", list[0]?.stationId);
       }
     } else if (list.length > 0) {
-      // 默认选择第一个站点
+      // 默认选择第一个站点并持久化
       state.currentStationId = list[0]?.stationId;
       state.currentStationName = list[0]?.stationName;
+      Session.set("currentStationId", list[0]?.stationId);
+      emitter.emit("stationChangeRefresh", list[0]?.stationId);
     }
   }).catch(() => {
     console.warn('站点列表加载失败');
@@ -80,7 +86,8 @@ const handleStationChange = (station: any) => {
   state.currentStationId = station.stationId;
   state.currentStationName = station.stationName;
   Session.set("currentStationId", station.stationId);
-  
+  emitter.emit("stationChangeRefresh", station.stationId);
+
   // 刷新页面以加载新站点数据
   setTimeout(() => {
     window.location.reload();
@@ -104,9 +111,10 @@ onMounted(() => {
     <div v-if="layout === 'vertical'" class="vertical-header-right">
       <!-- 站点切换 -->
       <el-dropdown id="header-station" trigger="click" @command="handleStationChange">
-        <div class="navbar-bg-hover w-[40px] h-[48px] p-[11px] cursor-pointer outline-hidden flex items-center">
-          <IconifyIconOffline :icon="Location" style="margin-right: 5px;" />
-          <span class="dark:text-white truncate max-w-[150px]">{{ state.currentStationName || '选择站点' }}</span>
+        <div class="station-switcher navbar-bg-hover cursor-pointer outline-hidden flex items-center">
+          <IconifyIconOffline :icon="Location" class="station-icon" />
+          <span class="dark:text-white truncate">{{ state.currentStationName || '选择站点' }}</span>
+          <i class="ri-arrow-down-s-line ml-1" />
         </div>
         <template #dropdown>
           <el-dropdown-menu>
@@ -197,6 +205,23 @@ onMounted(() => {
 </template>
 
 <style lang="scss" scoped>
+.station-switcher {
+  height: 48px;
+  padding: 0 12px;
+  min-width: 120px;
+  max-width: 200px;
+
+  .station-icon {
+    margin-right: 6px;
+    font-size: 16px;
+    flex-shrink: 0;
+  }
+
+  span {
+    font-size: 14px;
+  }
+}
+
 .navbar {
   width: 100%;
   height: 48px;

+ 1 - 14
admin-web-new/src/layout/types.ts

@@ -1,19 +1,6 @@
 import type { FunctionalComponent } from "vue";
-const { VITE_HIDE_HOME } = import.meta.env;
 
-export const routerArrays: Array<RouteConfigs> =
-  VITE_HIDE_HOME === "false"
-    ? [
-        {
-          path: "/welcome",
-          name: "Welcome",
-          meta: {
-            title: "menus.pureHome",
-            icon: "ep/home-filled"
-          }
-        }
-      ]
-    : [];
+export const routerArrays: Array<RouteConfigs> = [];
 
 export type routeMetaType = {
   title?: string;

+ 0 - 6
admin-web-new/src/router/index.ts

@@ -121,8 +121,6 @@ export function resetRouter() {
 /** 路由白名单 */
 const whiteList = ["/login"];
 
-const { VITE_HIDE_HOME } = import.meta.env;
-
 router.beforeEach((to: ToRouteType, _from, next) => {
   to.meta.loaded = loadedPaths.has(to.path);
 
@@ -157,10 +155,6 @@ router.beforeEach((to: ToRouteType, _from, next) => {
     if (to.meta?.roles && !isOneOfArray(to.meta?.roles, userInfo?.roles)) {
       next({ path: "/error/403" });
     }
-    // 开启隐藏首页后在浏览器地址栏手动输入首页welcome路由则跳转到404页面
-    if (VITE_HIDE_HOME === "true" && to.fullPath === "/welcome") {
-      next({ path: "/error/404" });
-    }
     if (_from?.name) {
       // name为超链接
       if (externalLink) {

+ 1 - 0
admin-web-new/src/utils/mitt.ts

@@ -9,6 +9,7 @@ type Events = {
   tagViewsChange: string;
   changLayoutRoute: string;
   tagViewsShowModel: string;
+  stationChangeRefresh: string;
   imageInfo: {
     img: HTMLImageElement;
     height: number;

+ 1 - 1
admin-web-new/src/views/admin/account/index.vue

@@ -49,7 +49,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/banner/index.vue

@@ -47,7 +47,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 17 - 4
admin-web-new/src/views/admin/dashboard/index.vue

@@ -1,5 +1,5 @@
 <script setup lang="ts">
-import { markRaw, nextTick, onActivated, onMounted, reactive, ref, watch } from "vue";
+import { markRaw, nextTick, onActivated, onMounted, onBeforeUnmount, reactive, ref, watch } from "vue";
 import * as echarts from "echarts/core";
 import { PieChart, BarChart, LineChart } from "echarts/charts";
 import {
@@ -16,6 +16,7 @@ echarts.use([
   CanvasRenderer
 ]);
 import { getDashboard, getTrend, getWashDeviceStatus } from "@/api/stat";
+import { emitter } from "@/utils/mitt";
 
 defineOptions({ name: "Dashboard" });
 
@@ -132,11 +133,12 @@ const initLineChart = (dataList: Array<any>) => {
     title: {
       text: "洗车数据走势图",
       left: 0,
+      top: 0,
       textStyle: { fontSize: 15, color: state.charts.color }
     },
-    grid: { top: 50, right: 20, bottom: 30, left: 60 },
+    grid: { top: 70, right: 80, bottom: 30, left: 60 },
     tooltip: { trigger: "axis" },
-    legend: { data: ["洗车量", "总金额"], right: 0 },
+    legend: { data: ["洗车量", "总金额"], right: 10, top: 5 },
     xAxis: {
       data: dataList.map(k => k.startTime),
       axisLine: { lineStyle: { color: state.charts.color } }
@@ -288,12 +290,23 @@ const loadAll = () => {
 };
 
 onMounted(() => {
+  emitter.on("stationChangeRefresh", (stationId) => {
+    state.currentStationId = stationId;
+    state.myCharts = [];
+    nextTick(() => loadAll());
+  });
+
   const currentStationId = Session.get("currentStationId");
   if (currentStationId) {
     state.currentStationId = currentStationId;
+    loadAll();
   }
   window.addEventListener("resize", initEchartsResize);
-  loadAll();
+});
+
+onBeforeUnmount(() => {
+  emitter.off("stationChangeRefresh");
+  window.removeEventListener("resize", initEchartsResize);
 });
 
 onActivated(() => {

+ 1 - 1
admin-web-new/src/views/admin/department/index.vue

@@ -46,7 +46,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 300;
+    state.tableData.height = bodyHeight - queryHeight - 250;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/dict/index.vue

@@ -47,7 +47,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/faq/index.vue

@@ -43,7 +43,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/feedback/index.vue

@@ -48,7 +48,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/index.vue

@@ -48,7 +48,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/recharge.vue

@@ -44,7 +44,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/refund.vue

@@ -48,7 +48,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/settlement.vue

@@ -55,7 +55,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/split-record.vue

@@ -47,7 +47,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/wallet-flow.vue

@@ -78,7 +78,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/finance/withdraw.vue

@@ -51,7 +51,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/investor/index.vue

@@ -49,7 +49,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/log/error.vue

@@ -30,7 +30,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/log/index.vue

@@ -45,7 +45,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 320;
+    state.tableData.height = bodyHeight - queryHeight - 260;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/message/index.vue

@@ -53,7 +53,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/notice/index.vue

@@ -46,7 +46,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/ordering/index.vue

@@ -57,7 +57,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/parking-coupon-record/index.vue

@@ -42,7 +42,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 320;
+    state.tableData.height = bodyHeight - queryHeight - 260;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/platform/device-config.vue

@@ -47,7 +47,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/platform/rate.vue

@@ -40,7 +40,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/role/index.vue

@@ -40,7 +40,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/station/account.vue

@@ -42,7 +42,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/station/device.vue

@@ -86,7 +86,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/station/index.vue

@@ -48,7 +48,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/station/list.vue

@@ -58,7 +58,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/statistics/daily-stat.vue

@@ -54,7 +54,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 320;
+    state.tableData.height = bodyHeight - queryHeight - 260;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/statistics/month-stat.vue

@@ -54,7 +54,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 320;
+    state.tableData.height = bodyHeight - queryHeight - 260;
   });
 });
 

+ 1 - 1
admin-web-new/src/views/admin/template/index.vue

@@ -67,7 +67,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 

+ 10 - 32
admin-web-new/src/views/admin/user/index.vue

@@ -29,25 +29,15 @@ const state = reactive({
     data: [] as Array<any>,
     loading: false,
     columns: [
-      { label: "用户ID", prop: "userId", width: 200 },
-      { label: "归属站点", prop: "stationName", width: 200 },
-      { label: "手机号", prop: "mobilePhone", width: 120 },
-      { label: "总余额", prop: "balance", width: 100 },
-      { label: "充值余额", prop: "rechargeBalance", width: 100 },
-      { label: "赠金余额", prop: "grantsBalance", width: 100 },
-      { label: "冻结余额", prop: "frozenAmount", width: 100 },
-      { label: "状态", prop: "status", width: 80 },
-      { label: "注册时间", prop: "registerTime", width: 160 },
-      { label: "充值次数", prop: "rechargeTimes", width: 90 },
-      { label: "充值金额", prop: "rechargeAmount", width: 100 },
-      { label: "退款次数", prop: "refundTimes", width: 90 },
-      { label: "退款金额", prop: "refundAmount", width: 100 },
+      { label: "用户ID", prop: "userId", width: 180 },
+      { label: "归属站点", prop: "stationName", width: 160 },
+      { label: "手机号", prop: "mobilePhone", width: 130 },
+      { label: "总余额", prop: "balance", width: 120 },
+      { label: "充值金额", prop: "rechargeAmount", width: 120 },
       { label: "洗车次数", prop: "washTimes", width: 90 },
-      { label: "消费总额", prop: "amount", width: 100 },
-      { label: "应付总额", prop: "amountReceivable", width: 100 },
-      { label: "实付总额", prop: "amountReceived", width: 100 },
-      { label: "优惠总额", prop: "discountAmount", width: 100 },
-      { label: "退款扣除优惠", prop: "refundDiscountAmount", width: 120 }
+      { label: "消费总额", prop: "amount", width: 120 },
+      { label: "状态", prop: "status", width: 80 },
+      { label: "注册时间", prop: "registerTime", width: 170 }
     ]
   }
 });
@@ -57,7 +47,7 @@ onMounted(() => {
   nextTick(() => {
     const bodyHeight = document.body.clientHeight;
     const queryHeight = queryRef.value?.$el?.clientHeight || 0;
-    state.tableData.height = bodyHeight - queryHeight - 280;
+    state.tableData.height = bodyHeight - queryHeight - 230;
   });
 });
 
@@ -111,19 +101,7 @@ const formatMoney = (value: number) => {
 const handleDetail = (row: any) => detailRef.value?.open(row);
 
 const isMoneyField = (prop: string) => {
-  return [
-    "balance",
-    "rechargeBalance", 
-    "grantsBalance", 
-    "frozenAmount",
-    "rechargeAmount",
-    "refundAmount",
-    "amount",
-    "amountReceivable",
-    "amountReceived",
-    "discountAmount",
-    "refundDiscountAmount"
-  ].includes(prop);
+  return ["balance", "rechargeAmount", "amount"].includes(prop);
 };
 </script>