feat(M08-D): 补门店与房间管理
This commit is contained in:
+21
-5
@@ -28,9 +28,14 @@
|
||||
<Sparkles :size="18" />
|
||||
<span>保洁运营</span>
|
||||
</button>
|
||||
<button class="nav-item" type="button" disabled>
|
||||
<button
|
||||
class="nav-item"
|
||||
:class="{ active: activeModule === 'stores' }"
|
||||
type="button"
|
||||
@click="activeModule = 'stores'"
|
||||
>
|
||||
<Store :size="18" />
|
||||
<span>门店</span>
|
||||
<span>门店房间</span>
|
||||
</button>
|
||||
<button class="nav-item" type="button" disabled>
|
||||
<RadioTower :size="18" />
|
||||
@@ -46,8 +51,8 @@
|
||||
<section class="workspace">
|
||||
<header class="topbar">
|
||||
<div>
|
||||
<p class="eyebrow">{{ activeModule === 'overview' ? 'M08-D' : 'M08-B' }}</p>
|
||||
<h2>{{ activeModule === 'overview' ? '平台运营总览' : '保洁任务与结算' }}</h2>
|
||||
<p class="eyebrow">{{ activeModuleMeta.stage }}</p>
|
||||
<h2>{{ activeModuleMeta.title }}</h2>
|
||||
</div>
|
||||
<div class="token-box">
|
||||
<el-input
|
||||
@@ -70,6 +75,11 @@
|
||||
@open-cleaning="activeModule = 'cleaning'"
|
||||
/>
|
||||
|
||||
<StoresRoomsPanel
|
||||
v-else-if="activeModule === 'stores'"
|
||||
:session="session"
|
||||
/>
|
||||
|
||||
<template v-else>
|
||||
<section class="metric-grid" aria-label="保洁概览">
|
||||
<div class="metric">
|
||||
@@ -247,6 +257,7 @@ import CleaningStatisticsPanel from './components/CleaningStatisticsPanel.vue';
|
||||
import CleanersPanel from './components/CleanersPanel.vue';
|
||||
import CleaningFieldHandoffPanel from './components/CleaningFieldHandoffPanel.vue';
|
||||
import OperationsOverviewPanel from './components/OperationsOverviewPanel.vue';
|
||||
import StoresRoomsPanel from './components/StoresRoomsPanel.vue';
|
||||
import {
|
||||
ApiError,
|
||||
assignCleaningTask,
|
||||
@@ -283,7 +294,7 @@ import { money } from './format';
|
||||
|
||||
const savedToken = ref(localStorage.getItem('qipai.admin.token') || '');
|
||||
const tokenDraft = ref(savedToken.value);
|
||||
const activeModule = ref<'overview' | 'cleaning'>('overview');
|
||||
const activeModule = ref<'overview' | 'stores' | 'cleaning'>('overview');
|
||||
const activeTab = ref('tasks');
|
||||
const lastError = ref('');
|
||||
const lastMessage = ref('');
|
||||
@@ -292,6 +303,11 @@ const settlementStatus = ref<SettlementStatus | ''>('CONFIRMED');
|
||||
const cleanerStatus = ref<UserStatus | ''>('ACTIVE');
|
||||
const cleanerSearch = ref('');
|
||||
const session = computed(() => ({ token: savedToken.value }));
|
||||
const activeModuleMeta = computed(() => ({
|
||||
overview: { stage: 'M08-D', title: '平台运营总览' },
|
||||
stores: { stage: 'M08-D', title: '门店与房间管理' },
|
||||
cleaning: { stage: 'M08-B', title: '保洁任务与结算' }
|
||||
})[activeModule.value]);
|
||||
const loading = reactive({ tasks: false, settlements: false, statistics: false, cleaners: false });
|
||||
const tasks = reactive<PageResult<CleaningTask>>({ items: [], total: 0, page: 1, pageSize: 20 });
|
||||
const settlements = reactive<PageResult<CleaningSettlement>>({
|
||||
|
||||
Reference in New Issue
Block a user