diff --git a/backend/app/api/mini_business.py b/backend/app/api/mini_business.py index 040146e..8435030 100644 --- a/backend/app/api/mini_business.py +++ b/backend/app/api/mini_business.py @@ -104,6 +104,9 @@ async def update_mini_business( update_data.pop("manager_id", None) for k, v in update_data.items(): setattr(m, k, v) + # Auto-clear expected revenue date when status becomes 已流失 + if m.status == "已流失" and m.expected_revenue_date: + m.expected_revenue_date = "" new_snapshot = {"customer_id": str(m.customer_id), "product_type": m.product_type, "amount": m.amount, "follow_up_detail": m.follow_up_detail, "status": m.status, "expected_revenue_date": m.expected_revenue_date} changes = compute_diff(old_snapshot, new_snapshot) if changes: diff --git a/frontend/src/views/desktop/MiniBusiness.vue b/frontend/src/views/desktop/MiniBusiness.vue index 3f316c1..af70bff 100644 --- a/frontend/src/views/desktop/MiniBusiness.vue +++ b/frontend/src/views/desktop/MiniBusiness.vue @@ -39,7 +39,7 @@ const logSaving = ref(false) // ── Filters ── const filterManager = ref('') -const filterStatus = ref('') +const filterStatus = ref('跟进中') const managerOptions = computed(() => { const seen = new Set() @@ -49,10 +49,12 @@ const managerOptions = computed(() => { .sort() }) +const statusOrder: Record = { '跟进中': 0, '已签约': 1, '已流失': 2 } const filteredItems = computed(() => { let list = miniBusiness.value if (filterManager.value) list = list.filter((m: any) => (m.manager_name || '未知') === filterManager.value) if (filterStatus.value) list = list.filter((m: any) => m.status === filterStatus.value) + list.sort((a: any, b: any) => (statusOrder[a.status] ?? 9) - (statusOrder[b.status] ?? 9)) return list }) diff --git a/frontend/src/views/mobile/MiniBizList.vue b/frontend/src/views/mobile/MiniBizList.vue index 42aed19..293049a 100644 --- a/frontend/src/views/mobile/MiniBizList.vue +++ b/frontend/src/views/mobile/MiniBizList.vue @@ -7,13 +7,17 @@ import { miniBusinessApi } from '@/api/miniBusiness' const router = useRouter() const loading = ref(false) const items = ref([]) +const statusOrder: Record = { '跟进中': 0, '已签约': 1, '已流失': 2 } onMounted(loadItems) async function loadItems() { loading.value = true - try { const res = await miniBusinessApi.list(); items.value = Array.isArray(res.data) ? res.data : (res.data.items || []) } - catch (_) {} + try { + const res = await miniBusinessApi.list() + const raw = Array.isArray(res.data) ? res.data : (res.data.items || []) + items.value = raw.sort((a: any, b: any) => (statusOrder[a.status] ?? 9) - (statusOrder[b.status] ?? 9)) + } catch (_) {} finally { loading.value = false } }